7 #include "imstkVTKPlaneRenderDelegate.h" 8 #include "imstkPlane.h" 9 #include "imstkVisualModel.h" 12 #include <vtkPlaneSource.h> 13 #include <vtkPolyDataMapper.h> 14 #include <vtkTransform.h> 18 VTKPlaneRenderDelegate::VTKPlaneRenderDelegate() :
19 m_planeSource(vtkSmartPointer<vtkPlaneSource>::New())
24 VTKPlaneRenderDelegate::init()
26 auto geometry = std::dynamic_pointer_cast<Plane>(
m_visualModel->getGeometry());
27 CHECK(geometry !=
nullptr) <<
"VTKPlaneRenderDelegate only works with Plane geometry";
31 vtkNew<vtkPolyDataMapper> mapper;
32 mapper->SetInputConnection(m_planeSource->GetOutputPort());
33 vtkNew<vtkActor> actor;
34 actor->SetMapper(mapper);
35 actor->SetUserTransform(m_transform);
55 m_planeSource->SetCenter(0.0, 0.0, 0.0);
56 m_planeSource->SetNormal(geometry->getNormal(Geometry::DataType::PreTransform).data());
57 m_planeSource->Modified();
59 AffineTransform3d T = AffineTransform3d::Identity();
60 T.translate(geometry->getPosition(Geometry::DataType::PostTransform));
61 T.rotate(geometry->getOrientation(Geometry::DataType::PostTransform));
62 T.scale(geometry->getWidth());
63 T.matrix().transposeInPlace();
64 m_transform->SetMatrix(T.data());
void update()
Update render delegate.
std::shared_ptr< VisualModel > m_visualModel
imstk visual model (contains data (geometry) and render specification (render material)) ...
void processEvents() override
Update cube source based on the cube geometry.
Represents and infinite plane, width can be used for visual purposes.
void processEvents() override
Update plane source based on the plane geometry.
void updateRenderProperties() override
Updates the actor and mapper properties from the currently set VisualModel.
virtual void processEvents()
Process the event queue, default implementation processes visualModel events and its RenderMaterial e...