1 #include "wxVtk3DBaseView.h"
3 #include "vtkInteractorStyleBaseView3D.h"
8 wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent)
9 :wxVtkBaseView( parent )
16 //-------------------------------------------------------------------
17 wxVtk3DBaseView::~wxVtk3DBaseView()
20 if (_aCamera!=NULL) { _aCamera -> Delete(); _aCamera=NULL;}
21 if (_aRenderer!=NULL) { _aRenderer -> Delete(); _aRenderer=NULL;}
23 if(_renWin->GetReferenceCount()==0){
24 _renWin -> Delete(); _renWin=NULL;
28 //-------------------------------------------------------------------
29 vtkCamera* wxVtk3DBaseView::GetCamera()
33 //-------------------------------------------------------------------
34 vtkRenderer* wxVtk3DBaseView::GetRenderer() // virtual
38 //-------------------------------------------------------------------
39 vtkRenderWindow* wxVtk3DBaseView::GetRenWin() // virtual
43 //-------------------------------------------------------------------
44 void wxVtk3DBaseView::Refresh()
47 vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor();
48 vri->vtkRenderWindowInteractor::Render();
52 //-------------------------------------------------------------------
53 void wxVtk3DBaseView::SetStereo(int type)
61 _renWin->SetStereoRender(0); // OFF
63 _renWin->SetStereoRender(1); // ON
64 _renWin->SetStereoCapableWindow(1);
65 _renWin->SetAnaglyphColorMask(4,3);
66 _renWin->SetAnaglyphColorSaturation(0.65);
68 // VTK_STEREO_CRYSTAL_EYES 1
69 // VTK_STEREO_RED_BLUE 2
70 // VTK_STEREO_INTERLACED 3
73 // VTK_STEREO_DRESDEN 6
74 // VTK_STEREO_ANAGLYPH 7
75 // VTK_STEREO_CHECKERBOARD 8
76 _renWin->SetStereoType(type);
83 //-------------------------------------------------------------------
84 void wxVtk3DBaseView::Configure()
86 if (_configure==false)
89 //wxVtkBaseView::Configure();
90 _aRenderer = vtkRenderer::New();
91 _renWin = vtkRenderWindow::New();
92 _renWin->AddRenderer(_aRenderer);
94 _aRenderer->GradientBackgroundOn();
95 _aRenderer->SetBackground( 0.33 , 0.33 , 0.33 );
96 _aRenderer->SetBackground2( 0.66 , 0.66 , 0.66 );
100 GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin);
102 vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New();
104 SetInteractorStyleBaseView( interactorStyleBaseView3D );
105 interactorStyleBaseView3D->SetInteractor ( GetWxVTKRenderWindowInteractor() );
106 GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D );
107 interactorStyleBaseView3D->SetwxVtkBaseView(this);
109 // It is convenient to create an initial view of the data. The
110 // FocalPoint and Position form a vector direction. Later on
111 // (ResetCamera() method) this vector is used to position the camera
112 // to look at the data in this direction.
113 _aCamera = vtkCamera::New();
117 _aCamera->SetViewUp (0, 0, -1);
118 _aCamera->SetPosition (0, 1, 0);
120 _aCamera->SetViewUp (0, 1, 0);
121 _aCamera->SetPosition (0, 0, 1);
123 _aCamera->SetFocalPoint (0, 0, 0);
124 _aCamera->ComputeViewPlaneNormal();
128 //-------------------------------------------------------------------
130 void wxVtk3DBaseView::GetSpacing(double spc[3])