7 #include "imstkVTKAxesRenderDelegate.h" 8 #include "imstkAxesModel.h" 9 #include "imstkLogger.h" 11 #include <vtkAbstractMapper.h> 12 #include <vtkAxesActor.h> 13 #include <vtkTransform.h> 17 VTKAxesRenderDelegate::VTKAxesRenderDelegate() :
23 VTKAxesRenderDelegate::init()
25 auto model = std::dynamic_pointer_cast<AxesModel>(m_visualModel);
26 CHECK(model !=
nullptr) <<
"VTKAxesRenderDelegate only works with AxesModel VisualModel";
28 const Mat4d transform =
29 (mat4dTranslate(model->getPosition()) *
30 mat4dRotation(model->getOrientation())).transpose();
31 m_transform->SetMatrix(transform.data());
35 m_axesActor = vtkSmartPointer<vtkAxesActor>::New();
36 m_axesActor->SetShaftType(vtkAxesActor::CYLINDER_SHAFT);
37 m_axesActor->SetAxisLabels(model->getAxesLabelsVisible());
38 const Vec3d& scale = model->getScale();
39 m_axesActor->SetTotalLength(scale[0], scale[1], scale[2]);
40 m_axesActor->SetUserTransform(m_transform);
42 m_actor = m_axesActor;
46 updateRenderProperties();
54 auto model = std::dynamic_pointer_cast<
AxesModel>(m_visualModel);
55 if (static_cast<bool>(m_axesActor->GetVisibility()) != model->isVisible())
57 m_axesActor->SetVisibility(model->isVisible());
60 if (model->isVisible())
62 if (static_cast<bool>(m_axesActor->GetAxisLabels()) != model->getAxesLabelsVisible())
64 m_axesActor->SetAxisLabels(model->getAxesLabelsVisible());
67 const Mat4d transform =
68 (mat4dTranslate(model->getPosition()) *
69 mat4dRotation(model->getOrientation())).transpose();
70 m_transform->SetMatrix(transform.data());
71 const Vec3d& scale = model->getScale();
72 m_axesActor->SetTotalLength(scale[0], scale[1], scale[2]);
void processEvents() override
Update sphere source based on the sphere geometry.
Defines an axes that should be rendered.
virtual void processEvents()
Process the event queue, default implementation processes visualModel events and its RenderMaterial e...