7 #include "imstkVTKCapsuleRenderDelegate.h" 8 #include "imstkCapsule.h" 9 #include "imstkVisualModel.h" 12 #include <vtkCapsuleSource.h> 13 #include <vtkPolyDataMapper.h> 14 #include <vtkTransform.h> 18 VTKCapsuleRenderDelegate::VTKCapsuleRenderDelegate() :
19 m_capsuleSource(vtkSmartPointer<vtkCapsuleSource>::New())
24 VTKCapsuleRenderDelegate::init()
26 auto geometry = std::dynamic_pointer_cast<Capsule>(
m_visualModel->getGeometry());
27 CHECK(geometry !=
nullptr) <<
"VTKCapsuleRenderDelegate only works with Capsule geometry";
29 m_capsuleSource->SetCenter(0.0, 0.0, 0.0);
30 m_capsuleSource->SetRadius(geometry->getRadius(Geometry::DataType::PreTransform));
31 m_capsuleSource->SetCylinderLength(geometry->getLength(Geometry::DataType::PreTransform));
32 m_capsuleSource->SetLatLongTessellation(20);
33 m_capsuleSource->SetPhiResolution(20);
34 m_capsuleSource->SetThetaResolution(20);
36 const Mat4d& transform = geometry->getTransform().transpose();
37 m_transform->SetMatrix(transform.data());
41 vtkNew<vtkPolyDataMapper> mapper;
42 mapper->SetInputConnection(m_capsuleSource->GetOutputPort());
43 vtkNew<vtkActor> actor;
44 actor->SetMapper(mapper);
45 actor->SetUserTransform(m_transform);
62 m_capsuleSource->SetRadius(geometry->getRadius(Geometry::DataType::PreTransform));
63 m_capsuleSource->SetCylinderLength(geometry->getLength(Geometry::DataType::PreTransform));
64 m_capsuleSource->Modified();
66 AffineTransform3d T = AffineTransform3d::Identity();
67 T.translate(geometry->getPosition(Geometry::DataType::PostTransform));
68 T.rotate(geometry->getOrientation(Geometry::DataType::PostTransform));
69 T.scale(geometry->getScaling());
70 T.matrix().transposeInPlace();
71 m_transform->SetMatrix(T.data());
void processEvents() override
Update capsule source based on the capsule geometry.
void update()
Update render delegate.
std::shared_ptr< VisualModel > m_visualModel
imstk visual model (contains data (geometry) and render specification (render material)) ...
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...
Capsule geometry, default configuration is centered at origin with length running up and down the y a...