vtk camera position widget on viewer

This commit is contained in:
AndreaRigoni
2026-03-08 16:51:39 +00:00
parent 1374821344
commit 00275ac56d
6 changed files with 49 additions and 16 deletions

View File

@@ -33,6 +33,7 @@
#include <vtkAxesActor.h>
#include <vtkCamera.h>
#include <vtkCameraOrientationWidget.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkObjectFactory.h>
#include <vtkTextProperty.h>
@@ -61,11 +62,14 @@ namespace Vtk {
////////////////////////////////////////////////////////////////////////////////
///// VTK VIEWER //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
Viewer::Viewer()
: m_RenderWindow(vtkRenderWindow::New()), m_Renderer(vtkRenderer::New()),
m_Annotation(vtkCornerAnnotation::New()),
m_Marker(vtkOrientationMarkerWidget::New()) {
m_Marker(vtkOrientationMarkerWidget::New()), m_CameraWidget(nullptr) {
#if VTK_MAJOR_VERSION >= 9 || \
(VTK_MAJOR_VERSION == 8 && VTK_MINOR_VERSION >= 90)
m_CameraWidget = vtkCameraOrientationWidget::New();
#endif
InstallPipe();
}
@@ -74,6 +78,8 @@ Viewer::~Viewer() {
m_Annotation->Delete();
m_Marker->Delete();
if (m_CameraWidget)
m_CameraWidget->Delete();
m_Renderer->Delete();
m_RenderWindow->Delete();
}
@@ -105,6 +111,13 @@ void Viewer::InstallPipe() {
m_Marker->SetEnabled(true);
m_Marker->InteractiveOff();
// camera orientation widget //
if (m_CameraWidget) {
m_CameraWidget->SetParentRenderer(m_Renderer);
m_CameraWidget->SetInteractor(renderWindowInteractor);
m_CameraWidget->On();
}
// Must be rendered here in Vtk-6.0 or seg-fault //
m_RenderWindow->Render();
}
@@ -135,6 +148,17 @@ void Viewer::RemovePuppet(Puppet &prop) {
m_Renderer->Render();
}
vtkSmartPointer<vtkCameraOrientationWidget>
Viewer::MakeCameraOrientationWidget(vtkRenderWindowInteractor *interactor,
vtkRenderer *renderer) {
vtkSmartPointer<vtkCameraOrientationWidget> widget =
vtkSmartPointer<vtkCameraOrientationWidget>::New();
widget->SetParentRenderer(renderer);
widget->SetInteractor(interactor);
widget->On();
return widget;
}
void Viewer::Start() { m_RenderWindow->GetInteractor()->Start(); }
vtkCornerAnnotation *Viewer::GetAnnotation() { return m_Annotation; }
@@ -145,6 +169,8 @@ vtkRenderWindowInteractor *Viewer::GetInteractor() {
return m_RenderWindow->GetInteractor();
}
vtkCameraOrientationWidget *Viewer::GetCameraWidget() { return m_CameraWidget; }
void Viewer::Reset() {
this->ZoomAuto();
m_Renderer->Render();