9 #include "imstkRenderer.h" 10 #include "imstkTextureManager.h" 11 #include "imstkVTKTextureDelegate.h" 12 #include "imstkEventObject.h" 14 #include <vtkSmartPointer.h> 15 #include <unordered_set> 20 class vtkContextActor;
22 class vtkOpenVRCamera;
26 class vtkRenderStepsPass;
37 class VTKRenderDelegate;
50 VTKRenderer(std::shared_ptr<Scene> scene,
const bool enableVR);
62 void setMode(
const Mode mode,
const bool enableVR)
override;
67 void setTimeTable(
const std::unordered_map<std::string, double>& timeTable)
override;
73 bool getTimeTableVisibility()
const override;
89 vtkSmartPointer<vtkRenderer>
getVtkRenderer()
const {
return m_vtkRenderer; }
94 void updateBackground(
const Vec3d color1,
const Vec3d color2 = Vec3d::Zero(),
const bool gradientBackground =
false);
96 void setDebugActorsVisible(
const bool debugActorsVisible);
97 bool getDebugActorsVisible()
const {
return m_debugActorsVisible; }
103 void removeActors(
const std::vector<vtkSmartPointer<vtkProp>>& actorList);
108 void addActors(
const std::vector<vtkSmartPointer<vtkProp>>& actorList);
113 void setConfig(std::shared_ptr<RendererConfig> config)
override;
118 void addEntity(std::shared_ptr<Entity> sceneObject);
123 std::unordered_set<std::shared_ptr<Entity>>::iterator
removeEntity(std::shared_ptr<Entity> sceneObject);
134 void addVisualModel(std::shared_ptr<Entity> sceneObject, std::shared_ptr<VisualModel> visualModel);
139 std::unordered_set<std::shared_ptr<VisualModel>>::iterator
removeVisualModel(std::shared_ptr<Entity> sceneObject, std::shared_ptr<VisualModel> visualModel);
152 vtkSmartPointer<vtkRenderer> m_vtkRenderer;
155 vtkSmartPointer<vtkCamera> m_camera;
158 using VtkLightPair = std::pair<std::shared_ptr<Light>, vtkSmartPointer<vtkLight>>;
159 std::vector<VtkLightPair> m_vtkLights;
162 std::vector<vtkSmartPointer<vtkProp>> m_objectVtkActors;
163 std::vector<vtkSmartPointer<vtkProp>> m_debugVtkActors;
166 std::shared_ptr<Scene> m_scene;
169 std::unordered_set<std::shared_ptr<Entity>> m_renderedObjects;
170 std::unordered_map<std::shared_ptr<Entity>, std::unordered_set<std::shared_ptr<VisualModel>>> m_renderedVisualModels;
173 std::unordered_map<std::shared_ptr<VisualModel>, std::shared_ptr<VTKRenderDelegate>> m_renderDelegates;
176 std::shared_ptr<TextureManager<VTKTextureDelegate>> m_textureManager;
179 vtkSmartPointer<vtkChartXY> m_timeTableChart;
180 vtkSmartPointer<vtkContextActor> m_timeTableChartActor;
181 vtkSmartPointer<vtkTable> m_timeTable;
182 vtkPlotBar* m_timeTablePlot;
183 int m_timeTableIter = 0;
186 vtkSmartPointer<vtkSSAOPass> m_ssaoPass;
187 vtkSmartPointer<vtkRenderStepsPass> m_renderStepsPass;
189 bool m_debugActorsVisible;
void updateBackground(const Vec3d color1, const Vec3d color2=Vec3d::Zero(), const bool gradientBackground=false)
Update background colors.
void sceneModifed(Event *e)
Callback for when the scene this renderer renders is modified This involves adding/removing scene obj...
void setTimeTableVisibility(const bool visible) override
Get/Set the visibility of the benchmark graph.
void addVisualModel(std::shared_ptr< Entity > sceneObject, std::shared_ptr< VisualModel > visualModel)
Add a VisualModel to be rendered, creates a delegate for it.
Base class for events which contain a type, priority, and data priority defaults to 0 and uses a grea...
void updateCamera()
Updates the camera.
void addEntity(std::shared_ptr< Entity > sceneObject)
Adds an entity to be rendered.
void setTimeTable(const std::unordered_map< std::string, double > &timeTable) override
Sets the benchmarking table using unordered_map.
void addActors(const std::vector< vtkSmartPointer< vtkProp >> &actorList)
Add actors (also called props) from the scene.
std::unordered_set< std::shared_ptr< Entity > >::iterator removeEntity(std::shared_ptr< Entity > sceneObject)
Removes a SceneObject to be rendered.
void setConfig(std::shared_ptr< RendererConfig > config) override
Apply configuration changes.
Rendering window manager and contains user API to configure the rendering with various backends...
void setMode(const Mode mode, const bool enableVR) override
Set the rendering mode to display debug actors or not.
void entityModified(Event *e)
Callback for when a SceneObject is modified This involves adding/removing visual models to render lis...
vtkSmartPointer< vtkRenderer > getVtkRenderer() const
Returns VTK renderer.
std::unordered_set< std::shared_ptr< VisualModel > >::iterator removeVisualModel(std::shared_ptr< Entity > sceneObject, std::shared_ptr< VisualModel > visualModel)
Remove a VisualModel from rendering.
Mode
Enumerations for the render mode.
VTKRenderer(std::shared_ptr< Scene > scene, const bool enableVR)
Scene is tied to this renderer.
void removeActors(const std::vector< vtkSmartPointer< vtkProp >> &actorList)
Remove actors (also called props) from the scene.
void initialize() override
Create the rendering delegates and related VTK objects according to the scene.
void updateRenderDelegates()
Updates the render delegates.