7 #include "imstkVTKCylinderRenderDelegate.h" 8 #include "imstkCylinder.h" 9 #include "imstkRenderMaterial.h" 10 #include "imstkVisualModel.h" 13 #include <vtkCylinderSource.h> 14 #include <vtkPolyDataMapper.h> 15 #include <vtkTransform.h> 19 VTKCylinderRenderDelegate::VTKCylinderRenderDelegate() :
20 m_cylinderSource(vtkSmartPointer<vtkCylinderSource>::New())
25 VTKCylinderRenderDelegate::init()
27 auto geometry = std::dynamic_pointer_cast<Cylinder>(
m_visualModel->getGeometry());
28 CHECK(geometry !=
nullptr) <<
"VTKCylinderRenderDelegate only works with Cylinder geometry";
30 m_cylinderSource->SetCenter(0.0, 0.0, 0.0);
31 m_cylinderSource->SetRadius(geometry->getRadius(Geometry::DataType::PreTransform));
32 m_cylinderSource->SetHeight(geometry->getLength(Geometry::DataType::PreTransform));
33 m_cylinderSource->SetResolution(100);
35 const Mat4d& transform = geometry->getTransform().transpose();
36 m_transform->SetMatrix(transform.data());
40 vtkNew<vtkPolyDataMapper> mapper;
41 mapper->SetInputConnection(m_cylinderSource->GetOutputPort());
42 vtkNew<vtkActor> actor;
43 actor->SetMapper(mapper);
44 actor->SetUserTransform(m_transform);
60 m_cylinderSource->SetRadius(geometry->getRadius(Geometry::DataType::PreTransform));
61 m_cylinderSource->SetHeight(geometry->getLength(Geometry::DataType::PreTransform));
62 m_cylinderSource->Modified();
64 AffineTransform3d T = AffineTransform3d::Identity();
65 T.translate(geometry->getPosition(Geometry::DataType::PostTransform));
66 T.rotate(geometry->getOrientation(Geometry::DataType::PostTransform));
67 T.scale(geometry->getScaling());
68 T.matrix().transposeInPlace();
69 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)) ...
Cylinder geometry, default configuration is at origin with length running up the y axes...
void processEvents() override
Process the event queue.
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...