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)
56 printf("EED wxVtk3DBaseView::SetStereo start\n");
60 printf("EED wxVtk3DBaseView::SetStereo 2\n");
63 _renWin->SetStereoRender(0); // OFF
65 _renWin->SetStereoRender(1); // ON
66 _renWin->SetStereoCapableWindow(1);
67 _renWin->SetAnaglyphColorMask(4,3);
68 _renWin->SetAnaglyphColorSaturation(0.65);
70 // VTK_STEREO_CRYSTAL_EYES 1
71 // VTK_STEREO_RED_BLUE 2
72 // VTK_STEREO_INTERLACED 3
75 // VTK_STEREO_DRESDEN 6
76 // VTK_STEREO_ANAGLYPH 7
77 // VTK_STEREO_CHECKERBOARD 8
78 _renWin->SetStereoType(type);
82 printf("EED wxVtk3DBaseView::SetStereo end\n");
87 //-------------------------------------------------------------------
88 void wxVtk3DBaseView::Configure()
90 printf("EED wxVtk3DBaseView::Configure A\n");
91 if (_configure==false)
93 printf("EED wxVtk3DBaseView::Configure B\n");
95 //wxVtkBaseView::Configure();
96 _aRenderer = vtkRenderer::New();
97 _renWin = vtkRenderWindow::New();
98 _renWin->AddRenderer(_aRenderer);
100 _aRenderer->GradientBackgroundOn();
101 _aRenderer->SetBackground( 0.33 , 0.33 , 0.33 );
102 _aRenderer->SetBackground2( 0.66 , 0.66 , 0.66 );
106 GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin);
108 vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New();
110 SetInteractorStyleBaseView( interactorStyleBaseView3D );
111 interactorStyleBaseView3D->SetInteractor ( GetWxVTKRenderWindowInteractor() );
112 GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D );
113 interactorStyleBaseView3D->SetwxVtkBaseView(this);
115 // It is convenient to create an initial view of the data. The
116 // FocalPoint and Position form a vector direction. Later on
117 // (ResetCamera() method) this vector is used to position the camera
118 // to look at the data in this direction.
119 _aCamera = vtkCamera::New();
123 _aCamera->SetViewUp (0, 0, -1);
124 _aCamera->SetPosition (0, 1, 0);
126 _aCamera->SetViewUp (0, 1, 0);
127 _aCamera->SetPosition (0, 0, 1);
129 _aCamera->SetFocalPoint (0, 0, 0);
130 _aCamera->ComputeViewPlaneNormal();
134 //-------------------------------------------------------------------
136 void wxVtk3DBaseView::GetSpacing(double spc[3])