vtk camera position widget on viewer
This commit is contained in:
@@ -40,7 +40,6 @@ BOOST_AUTO_TEST_CASE(vtkDetectorChamberTest) {
|
|||||||
d2.SetPosition(uLib::Vector3f(0, 0, 20));
|
d2.SetPosition(uLib::Vector3f(0, 0, 20));
|
||||||
|
|
||||||
uLib::Vtk::vtkDetectorChamber vtkDetectorChamber(&d1);
|
uLib::Vtk::vtkDetectorChamber vtkDetectorChamber(&d1);
|
||||||
|
|
||||||
uLib::Vtk::vtkDetectorChamber vtkDetectorChamber2(&d2);
|
uLib::Vtk::vtkDetectorChamber vtkDetectorChamber2(&d2);
|
||||||
|
|
||||||
if (!vtkDetectorChamber.GetProp()) {
|
if (!vtkDetectorChamber.GetProp()) {
|
||||||
|
|||||||
@@ -23,8 +23,6 @@
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "Vtk/uLibVtkViewer.h"
|
#include "Vtk/uLibVtkViewer.h"
|
||||||
|
|
||||||
#include "Math/ContainerBox.h"
|
#include "Math/ContainerBox.h"
|
||||||
@@ -37,17 +35,16 @@ using namespace uLib;
|
|||||||
int main() {
|
int main() {
|
||||||
BEGIN_TESTING(vtk ContainerBox Test);
|
BEGIN_TESTING(vtk ContainerBox Test);
|
||||||
|
|
||||||
Vtk::Viewer v_viewer;
|
|
||||||
|
|
||||||
ContainerBox box;
|
ContainerBox box;
|
||||||
box.SetSize(Vector3f(2, 3, 4));
|
box.SetSize(Vector3f(2, 3, 4));
|
||||||
box.SetPosition(Vector3f(1, 2, 3));
|
box.SetPosition(Vector3f(1, 2, 3));
|
||||||
|
Vtk::vtkContainerBox v_box(&box);
|
||||||
|
|
||||||
Vtk::vtkContainerBox v_box(box);
|
if (std::getenv("CTEST_PROJECT_NAME") == nullptr) {
|
||||||
|
Vtk::Viewer v_viewer;
|
||||||
v_viewer.AddPuppet(v_box);
|
v_viewer.AddPuppet(v_box);
|
||||||
v_viewer.Start();
|
v_viewer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
END_TESTING;
|
END_TESTING;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include <vtkAxesActor.h>
|
#include <vtkAxesActor.h>
|
||||||
#include <vtkCamera.h>
|
#include <vtkCamera.h>
|
||||||
|
#include <vtkCameraOrientationWidget.h>
|
||||||
#include <vtkInteractorStyleTrackballCamera.h>
|
#include <vtkInteractorStyleTrackballCamera.h>
|
||||||
#include <vtkObjectFactory.h>
|
#include <vtkObjectFactory.h>
|
||||||
#include <vtkTextProperty.h>
|
#include <vtkTextProperty.h>
|
||||||
@@ -61,11 +62,14 @@ namespace Vtk {
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
///// VTK VIEWER //////////////////////////////////////////////////////////////
|
///// VTK VIEWER //////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Viewer::Viewer()
|
Viewer::Viewer()
|
||||||
: m_RenderWindow(vtkRenderWindow::New()), m_Renderer(vtkRenderer::New()),
|
: m_RenderWindow(vtkRenderWindow::New()), m_Renderer(vtkRenderer::New()),
|
||||||
m_Annotation(vtkCornerAnnotation::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();
|
InstallPipe();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,6 +78,8 @@ Viewer::~Viewer() {
|
|||||||
|
|
||||||
m_Annotation->Delete();
|
m_Annotation->Delete();
|
||||||
m_Marker->Delete();
|
m_Marker->Delete();
|
||||||
|
if (m_CameraWidget)
|
||||||
|
m_CameraWidget->Delete();
|
||||||
m_Renderer->Delete();
|
m_Renderer->Delete();
|
||||||
m_RenderWindow->Delete();
|
m_RenderWindow->Delete();
|
||||||
}
|
}
|
||||||
@@ -105,6 +111,13 @@ void Viewer::InstallPipe() {
|
|||||||
m_Marker->SetEnabled(true);
|
m_Marker->SetEnabled(true);
|
||||||
m_Marker->InteractiveOff();
|
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 //
|
// Must be rendered here in Vtk-6.0 or seg-fault //
|
||||||
m_RenderWindow->Render();
|
m_RenderWindow->Render();
|
||||||
}
|
}
|
||||||
@@ -135,6 +148,17 @@ void Viewer::RemovePuppet(Puppet &prop) {
|
|||||||
m_Renderer->Render();
|
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(); }
|
void Viewer::Start() { m_RenderWindow->GetInteractor()->Start(); }
|
||||||
|
|
||||||
vtkCornerAnnotation *Viewer::GetAnnotation() { return m_Annotation; }
|
vtkCornerAnnotation *Viewer::GetAnnotation() { return m_Annotation; }
|
||||||
@@ -145,6 +169,8 @@ vtkRenderWindowInteractor *Viewer::GetInteractor() {
|
|||||||
return m_RenderWindow->GetInteractor();
|
return m_RenderWindow->GetInteractor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vtkCameraOrientationWidget *Viewer::GetCameraWidget() { return m_CameraWidget; }
|
||||||
|
|
||||||
void Viewer::Reset() {
|
void Viewer::Reset() {
|
||||||
this->ZoomAuto();
|
this->ZoomAuto();
|
||||||
m_Renderer->Render();
|
m_Renderer->Render();
|
||||||
|
|||||||
@@ -33,12 +33,14 @@
|
|||||||
#include <vtkOrientationMarkerWidget.h>
|
#include <vtkOrientationMarkerWidget.h>
|
||||||
#include <vtkRenderWindow.h>
|
#include <vtkRenderWindow.h>
|
||||||
#include <vtkRenderer.h>
|
#include <vtkRenderer.h>
|
||||||
|
#include <vtkSmartPointer.h>
|
||||||
|
|
||||||
class vtkProp;
|
class vtkProp;
|
||||||
class vtk3DWidget;
|
class vtk3DWidget;
|
||||||
class vtkCornerAnnotation;
|
class vtkCornerAnnotation;
|
||||||
class vtkRenderWindowInteractor;
|
class vtkRenderWindowInteractor;
|
||||||
class vtkRenderer;
|
class vtkRenderer;
|
||||||
|
class vtkCameraOrientationWidget;
|
||||||
|
|
||||||
namespace uLib {
|
namespace uLib {
|
||||||
namespace Vtk {
|
namespace Vtk {
|
||||||
@@ -62,6 +64,10 @@ public:
|
|||||||
|
|
||||||
void AddWidget(vtk3DWidget *widget);
|
void AddWidget(vtk3DWidget *widget);
|
||||||
|
|
||||||
|
static vtkSmartPointer<vtkCameraOrientationWidget>
|
||||||
|
MakeCameraOrientationWidget(vtkRenderWindowInteractor *interactor,
|
||||||
|
vtkRenderer *renderer);
|
||||||
|
|
||||||
void Reset();
|
void Reset();
|
||||||
void ZoomAuto();
|
void ZoomAuto();
|
||||||
|
|
||||||
@@ -73,6 +79,8 @@ public:
|
|||||||
|
|
||||||
vtkRenderWindowInteractor *GetInteractor();
|
vtkRenderWindowInteractor *GetInteractor();
|
||||||
|
|
||||||
|
vtkCameraOrientationWidget *GetCameraWidget();
|
||||||
|
|
||||||
void addProp(vtkProp *prop);
|
void addProp(vtkProp *prop);
|
||||||
|
|
||||||
void RemoveProp(vtkProp *prop);
|
void RemoveProp(vtkProp *prop);
|
||||||
@@ -85,6 +93,7 @@ private:
|
|||||||
vtkRenderWindow *m_RenderWindow;
|
vtkRenderWindow *m_RenderWindow;
|
||||||
vtkCornerAnnotation *m_Annotation;
|
vtkCornerAnnotation *m_Annotation;
|
||||||
vtkOrientationMarkerWidget *m_Marker;
|
vtkOrientationMarkerWidget *m_Marker;
|
||||||
|
vtkCameraOrientationWidget *m_CameraWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <> class Tie<Viewer> {
|
template <> class Tie<Viewer> {
|
||||||
|
|||||||
@@ -47,7 +47,8 @@ protected:
|
|||||||
vtkActor *m_Cube;
|
vtkActor *m_Cube;
|
||||||
vtkActor *m_Axes;
|
vtkActor *m_Axes;
|
||||||
vtkActor *m_Pivot;
|
vtkActor *m_Pivot;
|
||||||
vtkContainerBox::Content *m_Content;
|
|
||||||
|
Content *m_Content;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Vtk
|
} // namespace Vtk
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
//////////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
#include "vtkHandlerWidget.h"
|
#include "vtkHandlerWidget.h"
|
||||||
|
#include <iostream>
|
||||||
#include <vtkArcSource.h>
|
#include <vtkArcSource.h>
|
||||||
#include <vtkArrowSource.h>
|
#include <vtkArrowSource.h>
|
||||||
#include <vtkCallbackCommand.h>
|
#include <vtkCallbackCommand.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user