#include <wxVtkMPR3DView.h>
Public Member Functions | |
wxVtkMPR3DView (wxVtk3DBaseView *wxvtk3Dbaseview) | |
virtual | ~wxVtkMPR3DView () |
void | VisibleImageActor (int idPosition, bool visible) |
void | VisiblePointWidget (bool visible) |
void | VisiblePlaneWidget (bool visible) |
void | SetVisibleTissue (int idTissue, bool visible) |
bool | GetVisibleTissue (int idTissue) |
virtual void | Refresh () |
virtual void | RefreshView () |
virtual void | Configure () |
void | SetVtkMPR3DDataViewer (vtkMPR3DDataViewer *vtkmpr3Ddataviewer) |
wxPanel * | CreateControlPanel (wxWindow *parent, bool align) |
vtkMPR3DDataViewer * | GetVtkMPR3DDataViewer () |
wxVtk3DBaseView * | GetWxvtk3Dbaseview () throw (char*) |
void | InitOrientationPointWidget () |
void | showOutlineActor (bool value) |
void | TestLoic1 () |
void | TestLoic2 () |
void | RemoveActor (vtkActor *actor) |
void | ResetCamera (int *ext=NULL, double *origin=NULL, double *spc=NULL) |
void | setColorTransferFunction (vtkColorTransferFunction *colortable) |
void | ConfigureFreePlanes () |
vtkImagePlaneWidget * | GetPlaneWidget (unsigned char activationkey, double r, double g, double b, vtkCellPicker *picker) |
void | FreePlaneVisible (int plane, bool ok) |
void | FreePlaneInteraction (bool ok) |
Private Attributes | |
wxVtk3DBaseView * | _wxvtk3Dbaseview |
vtkMPR3DDataViewer * | _vtkmpr3Ddataviewer |
wxVtkMPR3DViewCntrlPanel * | _wxvtkmpr3DviewCntrlPanel |
vtkPolyData * | _vtkplane |
vtkActor * | _contourPlaneActor |
vtkPlaneWidget * | _planeWidget |
vtkPointWidget * | _pointWidget |
vtkProbeFilter * | _probe |
vtkPolyDataMapper * | _contourMapper |
vtkImagePlaneWidget * | _planeWidgetX |
vtkImagePlaneWidget * | _planeWidgetY |
vtkImagePlaneWidget * | _planeWidgetZ |
Definition at line 17 of file wxVtkMPR3DView.h.
wxVtkMPR3DView::wxVtkMPR3DView | ( | wxVtk3DBaseView * | wxvtk3Dbaseview | ) |
Definition at line 19 of file wxVtkMPR3DView.cxx.
References _contourMapper, _planeWidget, _planeWidgetX, _planeWidgetY, _planeWidgetZ, _pointWidget, _probe, _vtkmpr3Ddataviewer, _vtkplane, _wxvtk3Dbaseview, and _wxvtkmpr3DviewCntrlPanel.
00020 { 00021 _wxvtk3Dbaseview = wxvtk3Dbaseview; 00022 _vtkmpr3Ddataviewer = NULL; 00023 _wxvtkmpr3DviewCntrlPanel = NULL; 00024 //_myCallback = NULL; 00025 _pointWidget = NULL; 00026 _planeWidget = NULL; 00027 _vtkplane = NULL; 00028 _probe = NULL; 00029 _contourMapper = NULL; 00030 00031 _planeWidgetX = 0; 00032 _planeWidgetY = 0; 00033 _planeWidgetZ = 0; 00034 //EED Fev 3 2010 00035 //Free Planes 00036 }
wxVtkMPR3DView::~wxVtkMPR3DView | ( | ) | [virtual] |
Definition at line 40 of file wxVtkMPR3DView.cxx.
References _contourMapper, _contourPlaneActor, _planeWidget, _pointWidget, _probe, _vtkplane, VisiblePlaneWidget(), and VisiblePointWidget().
00041 { 00042 VisiblePointWidget( false ); 00043 VisiblePlaneWidget( false ); 00044 00045 if(_pointWidget!=NULL){ 00046 _pointWidget->Delete(); 00047 } 00048 if(_planeWidget!=NULL){ 00049 _planeWidget->Delete(); 00050 } 00051 00052 if(_vtkplane!=NULL){ 00053 _vtkplane->Delete(); 00054 _probe->Delete(); 00055 _contourMapper->Delete(); 00056 _contourPlaneActor->Delete(); 00057 } 00058 00059 }
void wxVtkMPR3DView::Configure | ( | ) | [virtual] |
Definition at line 97 of file wxVtkMPR3DView.cxx.
References _contourMapper, _contourPlaneActor, _planeWidget, _pointWidget, _probe, _vtkmpr3Ddataviewer, _vtkplane, _wxvtk3Dbaseview, _wxvtkmpr3DviewCntrlPanel, wxVtk3DBaseView::Configure(), ConfigureFreePlanes(), wxVtk3DBaseView::GetCamera(), vtkBaseData::GetImageData(), vtkMPR3DDataViewer::GetOutlineActor(), wxVtk3DBaseView::GetRenderer(), wxVtk3DBaseView::GetRenWin(), GetVtkMPR3DDataViewer(), vtkMPR3DDataViewer::GetVtkMPRBaseData(), GetWxvtk3Dbaseview(), vtkmyPWCallback_3DPointWidget::New(), ResetCamera(), vtkmyPWCallback_3DPointWidget::SetVtkPlaneWidget(), vtkmyPWCallback_3DPointWidget::SetVtkPointWidget(), vtkmyPWCallback_3DPointWidget::SetWxVtkMPR3DView(), and wxVtkMPR3DViewCntrlPanel::UpdateControlPanel().
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), and wxMaracas_ViewerWidget::ConfigureVTK().
00097 { 00098 00099 00100 vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 00101 00102 _wxvtk3Dbaseview->Configure(); 00103 _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel(); 00104 00105 //EED 27 Mai 2009 00106 // _wxvtk3Dbaseview->GetRenderer()->Clear(); 00107 00108 // Actors are added to the renderer. 00109 vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor(); 00110 _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor ); 00111 // _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(0) ); // _saggital 00112 // _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(1) ); // _axial 00113 // _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(2) ); // _coronal 00114 00115 00116 // An initial camera view is created. The Dolly() method moves 00117 // the camera towards the FocalPoint, thereby enlarging the image. 00118 _wxvtk3Dbaseview->GetRenderer()->SetActiveCamera(_wxvtk3Dbaseview->GetCamera()); 00119 this->ResetCamera(); 00120 00121 00122 // Set a background color for the renderer and set the size of the 00123 // render window (expressed in pixels). 00124 _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.36 , 0.36 , 0.36 ); 00125 _wxvtk3Dbaseview->GetRenWin()->SetSize(400, 400); 00126 00127 // Note that when camera movement occurs (as it does in the Dolly() 00128 // method), the clipping planes often need adjusting. Clipping planes 00129 // consist of two planes: near and far along the view direction. The 00130 // near plane clips out objects in front of the plane; the far plane 00131 // clips out objects behind the plane. This way only what is drawn 00132 // between the planes is actually rendered. 00133 _wxvtk3Dbaseview->GetRenderer()->ResetCameraClippingRange(); 00134 00135 00136 // vtkPointWidget 00137 //if(_myCallback!=NULL){ 00138 //_myCallback->Delete(); 00139 00140 //} 00141 vtkmyPWCallback_3DPointWidget *_myCallback = vtkmyPWCallback_3DPointWidget::New(); 00142 _myCallback->SetWxVtkMPR3DView(this); 00143 00144 00145 if(imageData){ 00146 if(_pointWidget==NULL){ 00147 _pointWidget = vtkPointWidget::New(); 00148 } 00149 _pointWidget->SetInput( imageData ); 00150 _myCallback->SetVtkPointWidget(_pointWidget); 00151 _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); 00152 _pointWidget->AllOff(); 00153 _pointWidget->PlaceWidget(); 00154 00155 _pointWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback); 00156 00157 00158 if(_planeWidget==NULL) 00159 { 00160 _planeWidget = vtkPlaneWidget::New(); 00161 } 00162 _planeWidget->SetInput( imageData ); 00163 00164 _myCallback->SetVtkPlaneWidget(_planeWidget); 00165 00166 _planeWidget->NormalToXAxisOn(); 00167 _planeWidget->SetResolution(50); 00168 _planeWidget->SetRepresentationToOutline(); 00169 00170 int dim[3]; 00171 00172 imageData->GetDimensions(dim); 00173 int px=(dim[0]/2); 00174 int py=(dim[1]/2); 00175 int pz=(dim[2]/2); 00176 int dd=20; 00177 _planeWidget->PlaceWidget( px-dd , px+dd , py-dd , py+dd , pz-dd , pz+dd ); 00178 00179 if(_vtkplane==NULL){ 00180 _vtkplane = vtkPolyData::New(); 00181 00182 _probe = vtkProbeFilter::New(); 00183 _probe->SetInput(_vtkplane); 00184 00185 _contourMapper = vtkPolyDataMapper::New(); 00186 00187 _contourMapper->SetInput( _probe->GetPolyDataOutput() ); 00188 00189 _contourPlaneActor = vtkActor::New(); 00190 _contourPlaneActor->SetMapper(_contourMapper); 00191 00192 _contourPlaneActor->VisibilityOff(); 00193 00194 _planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); 00195 _planeWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback); 00196 00197 _planeWidget->Off(); 00198 _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor ); 00199 00200 } 00201 00202 _planeWidget->GetPolyData(_vtkplane); 00203 _probe->SetSource( imageData ); 00204 _contourMapper->SetScalarRange( imageData->GetScalarRange() ); 00205 00206 00207 ConfigureFreePlanes(); 00208 } 00209 00210 // _pointWidget->SetPosition( x,y,z ); 00211 00212 //EED01 29Mars2009 00213 // MACOS probleme vtk-window out of wx-window 00214 // _pointWidget->On(); 00215 00216 00217 00218 00219 // PlaneWidget 00220 00221 00222 00223 00224 00225 00226 00227 00228 00229 }
void wxVtkMPR3DView::ConfigureFreePlanes | ( | ) |
Definition at line 232 of file wxVtkMPR3DView.cxx.
References _planeWidgetX, _planeWidgetY, _planeWidgetZ, and GetPlaneWidget().
Referenced by Configure().
00233 { 00234 00235 // The shared picker enables us to use 3 planes at one time 00236 // and gets the picking order right 00237 vtkCellPicker* picker = vtkCellPicker::New(); 00238 picker->SetTolerance(0.005); 00239 00240 // The 3 image plane widgets 00241 _planeWidgetX = GetPlaneWidget('x', 1, 0, 0, picker); 00242 _planeWidgetY = GetPlaneWidget('y', 1, 1, 0, picker); 00243 _planeWidgetZ = GetPlaneWidget('z', 0, 0, 1, picker); 00244 00245 _planeWidgetY->SetLookupTable(_planeWidgetX->GetLookupTable()); 00246 _planeWidgetZ->SetLookupTable(_planeWidgetX->GetLookupTable()); 00247 00248 picker->UnRegister(NULL); 00249 00250 }
wxPanel * wxVtkMPR3DView::CreateControlPanel | ( | wxWindow * | parent, | |
bool | align | |||
) |
Definition at line 391 of file wxVtkMPR3DView.cxx.
References _wxvtkmpr3DviewCntrlPanel.
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), wxManualRegistration3D::AddPanelControl_B(), wxManualRegistration3D::Create3DView(), wxManualTree_MPRWidget::Create3DViewContour(), wxSegmentationFM3DWidget::Create3DViewContour(), wxManualSegmentation_MPRWidget::Create3DViewContour(), wxMPRWidget::CreateMPRPanel4View(), wxMPRWidget::CreateView(), and wxMaracas_ViewerWidget::wxMaracas_ViewerWidget().
00392 { 00393 _wxvtkmpr3DviewCntrlPanel = new wxVtkMPR3DViewCntrlPanel(parent,this, align); 00394 return _wxvtkmpr3DviewCntrlPanel; 00395 }
void wxVtkMPR3DView::FreePlaneInteraction | ( | bool | ok | ) |
Definition at line 314 of file wxVtkMPR3DView.cxx.
References _planeWidgetX, _planeWidgetY, and _planeWidgetZ.
Referenced by wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction(), wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(), wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(), and wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ().
00315 { 00316 if(_planeWidgetX){ 00317 if (ok==true) 00318 { 00319 _planeWidgetX->InteractionOn(); 00320 _planeWidgetY->InteractionOn(); 00321 _planeWidgetZ->InteractionOn(); 00322 } else { 00323 _planeWidgetX->InteractionOff(); 00324 _planeWidgetY->InteractionOff(); 00325 _planeWidgetZ->InteractionOff(); 00326 } 00327 } 00328 }
void wxVtkMPR3DView::FreePlaneVisible | ( | int | plane, | |
bool | ok | |||
) |
Definition at line 301 of file wxVtkMPR3DView.cxx.
References _planeWidgetX, _planeWidgetY, and _planeWidgetZ.
Referenced by wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(), wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(), and wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ().
00302 { 00303 if(_planeWidgetX){ 00304 if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn(); 00305 if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn(); 00306 if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn(); 00307 if ((plane==1) && (ok==false)) _planeWidgetX->EnabledOff(); 00308 if ((plane==2) && (ok==false)) _planeWidgetY->EnabledOff(); 00309 if ((plane==3) && (ok==false)) _planeWidgetZ->EnabledOff(); 00310 } 00311 }
vtkImagePlaneWidget * wxVtkMPR3DView::GetPlaneWidget | ( | unsigned char | activationkey, | |
double | r, | |||
double | g, | |||
double | b, | |||
vtkCellPicker * | picker | |||
) |
Definition at line 253 of file wxVtkMPR3DView.cxx.
References vtkBaseData::GetImageData(), GetVtkMPR3DDataViewer(), vtkMPR3DDataViewer::GetVtkMPRBaseData(), and GetWxvtk3Dbaseview().
Referenced by ConfigureFreePlanes().
00254 { 00255 vtkProperty* prop1 = 0; 00256 vtkImagePlaneWidget* planeWidget = 0; 00257 planeWidget = vtkImagePlaneWidget::New(); 00258 planeWidget->EnabledOff(); 00259 planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); 00260 vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 00261 int xMin = 0, xMax = 0, yMin = 0, yMax = 0, zMin = 0, zMax = 0; 00262 double xSpacing = 0, ySpacing = 0, zSpacing = 0; 00263 if(image){ 00264 planeWidget->SetInput( image ); 00265 image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax); 00266 image->GetSpacing(xSpacing, ySpacing, zSpacing); 00267 } 00268 00269 00270 00271 00272 00273 00274 if (activationkey=='x') 00275 { 00276 planeWidget->SetPlaneOrientationToXAxes(); 00277 planeWidget->SetSlicePosition((xMax+xMin)/2.*xSpacing); 00278 } 00279 00280 if (activationkey=='y') 00281 { 00282 planeWidget->SetPlaneOrientationToYAxes(); 00283 planeWidget->SetSlicePosition((yMax+yMin)/2.*ySpacing); 00284 } 00285 00286 if (activationkey=='z') 00287 { 00288 planeWidget->SetPlaneOrientationToZAxes(); 00289 planeWidget->SetSlicePosition((zMax+zMin)/2.*zSpacing); 00290 } 00291 00292 planeWidget->DisplayTextOn(); 00293 planeWidget->SetPicker(picker); 00294 planeWidget->SetKeyPressActivationValue(activationkey); 00295 prop1 = planeWidget->GetPlaneProperty(); 00296 prop1->SetColor(r, g, b); 00297 return planeWidget; 00298 }
bool wxVtkMPR3DView::GetVisibleTissue | ( | int | idTissue | ) |
vtkMPR3DDataViewer * wxVtkMPR3DView::GetVtkMPR3DDataViewer | ( | ) |
Definition at line 397 of file wxVtkMPR3DView.cxx.
References _vtkmpr3Ddataviewer.
Referenced by Configure(), wxManualTree_MPRWidget::ConfigureContour(), vtkmyPWCallback_3DPointWidget::Execute(), GetPlaneWidget(), wxVtkMPR3DViewCntrlPanel::OnEditColorTable(), wxVtkMPR3DViewCntrlPanel::OnPositionX(), wxVtkMPR3DViewCntrlPanel::OnPositionY(), wxVtkMPR3DViewCntrlPanel::OnPositionZ(), wxManualRegistration3D::OnTracking(), wxVtkMPR3DViewCntrlPanel::Refresh(), RefreshView(), wxManualRegistration3D::RefreshView(), vtkInteractorStyle3DView::SelectMarchibCubePoint(), setColorTransferFunction(), TestLoic1(), TestLoic2(), and wxVtkMPR3DViewCntrlPanel::UpdateControlPanel().
00398 { 00399 return _vtkmpr3Ddataviewer; 00400 }
wxVtk3DBaseView * wxVtkMPR3DView::GetWxvtk3Dbaseview | ( | ) | throw (char*) |
Definition at line 402 of file wxVtkMPR3DView.cxx.
References _wxvtk3Dbaseview.
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), wxMaracasRenderTabbedPanel::addRemoveActorMPR(), Configure(), wxSTLWidget_02::ConfigureSTL(), wxSTLWidget_03::ConfigureSTL(), vtkmyPWCallback_3DPointWidget::Execute(), wxSTLWidget_03::ExtractSurface(), wxSTLWidget_02::ExtractTree2_JF(), GetPlaneWidget(), wxManualSegmentation_MPRWidget::GetRenderer(), wxSegmentationFM3DWidget::OnBtnSegment(), wxSTLWidget_02::OnBtnSTLFileLoad(), wxSTLWidget_03::OnBtnSTLFileLoad(), wxSegmentationFM3DWidget::OnBtnUndo(), wxSTLWidget_02::OnJoinRegions(), wxVtkMPR3DViewCntrlPanel::OnPositionX(), wxVtkMPR3DViewCntrlPanel::OnPositionY(), wxVtkMPR3DViewCntrlPanel::OnPositionZ(), wxMaracasRenderTabbedPanel::OnRefreshView(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(), wxSTLWidget_02::Reset_vtk_STLFile(), wxSTLWidget_03::Reset_vtk_STLFile(), wxSTLWidget_02::ResetTree2_JF(), wxSTLWidget_03::ResetTree2_JF(), vtkInteractorStyle3DView::SelectMarchibCubePoint(), wxVtkMPR3DViewCntrlPanel::SetVisibleX(), wxVtkMPR3DViewCntrlPanel::SetVisibleY(), and wxVtkMPR3DViewCntrlPanel::SetVisibleZ().
00403 { 00404 if(_wxvtk3Dbaseview==NULL){ 00405 throw "wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() _wxvtk3Dbaseview=NULL"; 00406 } 00407 return _wxvtk3Dbaseview; 00408 }
void wxVtkMPR3DView::InitOrientationPointWidget | ( | ) |
Definition at line 482 of file wxVtkMPR3DView.cxx.
References _planeWidget.
Referenced by wxManualRegistration3D::OnTracking().
00483 { 00484 this->_planeWidget->SetNormal(1,0,0); 00485 }
void wxVtkMPR3DView::Refresh | ( | ) | [virtual] |
Definition at line 338 of file wxVtkMPR3DView.cxx.
References _vtkmpr3Ddataviewer, _wxvtkmpr3DviewCntrlPanel, and wxVtkMPR3DViewCntrlPanel::Refresh().
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(), RefreshView(), wxVtkMPR3DViewCntrlPanel::SetVisibleX(), wxVtkMPR3DViewCntrlPanel::SetVisibleY(), and wxVtkMPR3DViewCntrlPanel::SetVisibleZ().
00339 { 00340 _vtkmpr3Ddataviewer -> Refresh(); 00341 if (_wxvtkmpr3DviewCntrlPanel!=NULL) 00342 { 00343 _wxvtkmpr3DviewCntrlPanel->Refresh(); 00344 } 00345 00346 }
void wxVtkMPR3DView::RefreshView | ( | ) | [virtual] |
Definition at line 349 of file wxVtkMPR3DView.cxx.
References _planeWidget, _pointWidget, _vtkplane, vtkBaseData::GetImageData(), vtkMPRBaseData::GetTransformOrientation(), GetVtkMPR3DDataViewer(), vtkMPR3DDataViewer::GetVtkMPRBaseData(), vtkMPRBaseData::GetX(), vtkMPRBaseData::GetY(), vtkBaseData::GetZ(), and Refresh().
Referenced by wxVtkMPR3DViewCntrlPanel::OnPositionX(), wxVtkMPR3DViewCntrlPanel::OnPositionY(), wxVtkMPR3DViewCntrlPanel::OnPositionZ(), wxMaracasRenderTabbedPanel::OnRefreshView(), and wxMaracas_ViewerWidget::RefreshView().
00350 { 00351 double spc[3]; 00352 vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 00353 00354 if(image){ 00355 image->GetSpacing(spc); 00356 }else{ 00357 spc[0] = 0; 00358 spc[1] = 0; 00359 spc[2] = 0; 00360 } 00361 //this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc); 00362 00363 //double nx=1,ny=0,nz=0; // JPRx 00364 Refresh(); 00365 double x=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetX(); 00366 double y=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetY(); 00367 double z=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetZ(); 00368 00369 x=x*spc[0]; 00370 y=y*spc[1]; 00371 z=z*spc[2]; 00372 00373 if(_pointWidget){ 00374 _pointWidget->SetPosition( x,y,z ); 00375 00376 00377 double in[3]; 00378 double normal[3]; 00379 vtkTransform *transform = GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetTransformOrientation(); 00380 in[0]=1; in[1]=0; in[2]=0; 00381 transform->TransformPoint(in,normal); 00382 _planeWidget->SetNormal( normal[0],normal[1],normal[2] ); 00383 00384 00385 _planeWidget->SetCenter( x,y,z ); 00386 _planeWidget->UpdatePlacement(); 00387 _planeWidget->GetPolyData(_vtkplane); 00388 } 00389 }
void wxVtkMPR3DView::RemoveActor | ( | vtkActor * | actor | ) |
Definition at line 62 of file wxVtkMPR3DView.cxx.
References _wxvtk3Dbaseview, and wxVtk3DBaseView::GetRenderer().
00063 { 00064 _wxvtk3Dbaseview->GetRenderer()->RemoveActor(actor); 00065 }
void wxVtkMPR3DView::ResetCamera | ( | int * | ext = NULL , |
|
double * | origin = NULL , |
|||
double * | spc = NULL | |||
) |
Definition at line 68 of file wxVtkMPR3DView.cxx.
References _wxvtk3Dbaseview, wxVtk3DBaseView::GetCamera(), and wxVtk3DBaseView::GetRenderer().
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), Configure(), and wxMaracas_ViewerWidget::ConfigureVTK().
00069 { 00070 if(ext == NULL){ 00071 _wxvtk3Dbaseview->GetRenderer()->ResetCamera (); 00072 _wxvtk3Dbaseview->GetCamera()->Dolly(1.5); 00073 }else{ 00074 /*double x = (spc[0])*(origin[0]+(((double)ext[1]-(double)ext[0])/2.0)); 00075 double y = (spc[1])*(origin[1]+(double)ext[3]); 00076 double z = (spc[2])*(origin[2]+(((double)ext[5]-(double)ext[4])/2.0));*/ 00077 /*double x0=(spc[0])*((double)ext[0]+origin[0]); 00078 double x1=(spc[0])*((double)ext[1]+origin[0]); 00079 double y0=(spc[1])*((double)ext[2]+origin[1]); 00080 double y1=(spc[1])*((double)ext[3]+origin[1]); 00081 double z0=(spc[2])*((double)ext[4]+origin[2]); 00082 double z1=(spc[2])*((double)ext[5]+origin[2]);*/ 00083 double x0=(spc[0])*((double)ext[0]); 00084 double x1=(spc[0])*((double)ext[1]); 00085 double y0=(spc[1])*((double)ext[2]); 00086 double y1=(spc[1])*((double)ext[3]); 00087 double z0=(spc[2])*((double)ext[4]); 00088 double z1=(spc[2])*((double)ext[5]); 00089 00090 _wxvtk3Dbaseview->GetRenderer()->ResetCamera(x0,x1,y0,y1,z0,z1); 00091 //_wxvtk3Dbaseview->GetCamera()->SetPosition(x,y,z); 00092 _wxvtk3Dbaseview->GetCamera()->Dolly(1.5); 00093 } 00094 }
void wxVtkMPR3DView::setColorTransferFunction | ( | vtkColorTransferFunction * | colortable | ) |
Definition at line 332 of file wxVtkMPR3DView.cxx.
References GetVtkMPR3DDataViewer(), and vtkMPR3DDataViewer::setColorTransferFunction().
Referenced by wxMaracas_ViewerWidget::setColorTransferFunction().
00333 { 00334 GetVtkMPR3DDataViewer ()->setColorTransferFunction(colortable); 00335 }
void wxVtkMPR3DView::SetVisibleTissue | ( | int | idTissue, | |
bool | visible | |||
) |
void wxVtkMPR3DView::SetVtkMPR3DDataViewer | ( | vtkMPR3DDataViewer * | vtkmpr3Ddataviewer | ) |
Definition at line 476 of file wxVtkMPR3DView.cxx.
References _vtkmpr3Ddataviewer.
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), wxManualRegistration3D::AddPanelControl_B(), wxManualRegistration3D::Create3DView(), wxManualTree_MPRWidget::Create3DViewContour(), wxSegmentationFM3DWidget::Create3DViewContour(), wxManualSegmentation_MPRWidget::Create3DViewContour(), wxMPRWidget::CreateMPRPanel4View(), wxMPRWidget::CreateView(), and wxMaracas_ViewerWidget::wxMaracas_ViewerWidget().
00477 { 00478 _vtkmpr3Ddataviewer = vtkmpr3Ddataviewer; 00479 }
void wxVtkMPR3DView::showOutlineActor | ( | bool | value | ) |
Definition at line 462 of file wxVtkMPR3DView.cxx.
References _vtkmpr3Ddataviewer, _wxvtk3Dbaseview, vtkMPR3DDataViewer::GetOutlineActor(), and wxVtk3DBaseView::GetRenderer().
Referenced by wxMaracasRenderTabbedPanel::addMPROptions(), and wxMaracasRenderTabbedPanel::addRemoveActorMPR().
00463 { 00464 vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor(); 00465 if(value == true) 00466 { 00467 _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor ); 00468 } 00469 else 00470 { 00471 _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _outlineActor ); 00472 } 00473 }
void wxVtkMPR3DView::TestLoic1 | ( | ) |
Definition at line 492 of file wxVtkMPR3DView.cxx.
References _planeWidget, vtkBaseData::GetImageData(), GetVtkMPR3DDataViewer(), and vtkMPR3DDataViewer::GetVtkMPRBaseData().
Referenced by wxManualRegistration3D::OnTracking().
00493 { 00494 00495 int sizeIma = 128; 00496 double dimIma = sizeIma*2; 00497 00498 vtkImageData *vtkimagedata = this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 00499 00500 double spc[3]; 00501 vtkimagedata->GetSpacing(spc); 00502 00503 vtkimagedata->Update(); 00504 00505 00506 double p[3], n[3]; 00507 this->_planeWidget->GetOrigin(p); 00508 this->_planeWidget->GetNormal(n); 00509 00510 00511 00512 vtkPlaneSource* pSource = vtkPlaneSource::New( ); 00513 pSource->SetResolution( sizeIma - 1, sizeIma - 1 ); 00514 pSource->SetOrigin( p[ 0 ], p[ 1 ], p[ 2 ] ); 00515 pSource->SetPoint1( p[ 0 ] + dimIma - 1.0, p[ 1 ], p[ 2 ] ); 00516 pSource->SetPoint2( p[ 0 ], p[ 1 ]+ dimIma - 1.0 , p[ 2 ] ); 00517 pSource->Update( ); 00518 pSource->SetCenter( p[ 0 ], p[ 1 ], p[ 2 ] ); 00519 pSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] ); 00520 pSource->Update( ); 00521 00522 vtkProbeFilter* slices = vtkProbeFilter::New(); 00523 slices->SetInput( ( vtkDataSet* )pSource->GetOutput( ) ); 00524 slices->SetSource( vtkimagedata ); 00525 slices->Update( ); 00526 pSource->Delete( ); 00527 00528 vtkStructuredPoints *stPoints = vtkStructuredPoints::New(); 00529 stPoints -> GetPointData( )->SetScalars( slices->GetOutput()->GetPointData()->GetScalars() ); 00530 stPoints -> SetDimensions( sizeIma, sizeIma, 1 ); 00531 stPoints -> SetScalarType( vtkimagedata->GetScalarType() ); 00532 stPoints -> SetScalarTypeToShort(); 00533 stPoints -> Update(); 00534 00535 vtkImageChangeInformation *change = vtkImageChangeInformation ::New(); 00536 change -> SetInput( stPoints ); 00537 change -> Update(); //important 00538 00539 double _range[2]; 00540 vtkimagedata->GetScalarRange(_range); 00541 vtkWindowLevelLookupTable *_bwlookup = vtkWindowLevelLookupTable::New( ); 00542 _bwlookup->SetHueRange( 0 , 1 ); 00543 _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) ); 00544 _bwlookup->SetTableRange( _range[0] , _range[1] ); 00545 _bwlookup->SetSaturationRange( 0 , 0 ); 00546 _bwlookup->SetValueRange( 0 , 1 ); 00547 _bwlookup->SetAlphaRange( 1 , 1 ); 00548 _bwlookup->Build( ); 00549 00550 vtkLookupTable * _collookup = vtkLookupTable::New( ); 00551 _collookup->SetNumberOfColors( 256 ); 00552 _collookup->SetTableRange( 0 , 255 ); 00553 _collookup->Build( ); 00554 _collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 ); 00555 _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 ); 00556 _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 ); 00557 00558 00559 vtkMetaImageWriter *writer = vtkMetaImageWriter::New( ); 00560 writer->SetInput( stPoints ); 00561 writer->SetFileName( "C:/Users/Images/temp_EED/image.mhd" ); 00562 writer->SetFileDimensionality( 2 ); 00563 writer->Write( ); 00564 00565 00566 00567 vtkDataSetMapper *_3DSliceMapper = vtkDataSetMapper::New( ); 00568 _3DSliceMapper->SetInput(change->GetOutput( ) ); 00569 _3DSliceMapper->SetLookupTable( _bwlookup ); 00570 _3DSliceMapper->SetScalarRange( _range ); 00571 _3DSliceMapper->ImmediateModeRenderingOn( ); 00572 00573 vtkActor *_3DSliceActor = vtkActor::New( ); 00574 _3DSliceActor->SetMapper( _3DSliceMapper ); 00575 00576 // The usual rendering stuff. 00577 vtkCamera *camera = vtkCamera::New(); 00578 camera->SetPosition(1,1,1); 00579 camera->SetFocalPoint(0,0,0); 00580 00581 vtkRenderer *renderer = vtkRenderer::New(); 00582 vtkRenderWindow *renWin = vtkRenderWindow::New(); 00583 renWin->AddRenderer(renderer); 00584 00585 vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); 00586 iren->SetRenderWindow(renWin); 00587 00588 renderer->AddActor( _3DSliceActor ); 00589 renderer->SetActiveCamera(camera); 00590 renderer->ResetCamera(); 00591 renderer->SetBackground(1,1,1); 00592 00593 renWin->SetSize(300,300); 00594 00595 // interact with data 00596 renWin->Render(); 00597 iren->Start(); 00598 00599 00600 00601 00602 00603 }
void wxVtkMPR3DView::TestLoic2 | ( | ) |
Definition at line 607 of file wxVtkMPR3DView.cxx.
References _planeWidget, vtkBaseData::GetImageData(), GetVtkMPR3DDataViewer(), and vtkMPR3DDataViewer::GetVtkMPRBaseData().
00608 { 00609 /* 00610 vtkVectorNorm *vecMagnitude = vtkVectorNorm::New(); 00611 vecMagnitude->SetInput(VtkMainGrid); 00612 vecMagnitude->NormalizeOff(); 00613 vecMagnitude->Update(); 00614 */ 00615 00616 vtkPlane *slicePlane = vtkPlane::New(); 00617 this->_planeWidget->GetPlane( slicePlane ); 00618 00619 00620 vtkCutter* sliceCutter = vtkCutter::New(); 00621 vtkImageData *vtkimagedata = this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 00622 sliceCutter->SetInput( vtkimagedata ); 00623 sliceCutter->SetCutFunction( slicePlane ); 00624 00625 //EED 00626 // vtkLookupTable *lut = BuildHueWeightBaseMap(); 00627 00628 00629 vtkPolyDataMapper *slice = vtkPolyDataMapper::New(); 00630 slice->SetInput( sliceCutter->GetOutput() ); 00631 double range[2]; 00632 // EED 00633 // slice->Update(); 00634 vtkimagedata->GetScalarRange(range); 00635 // vecMagnitude->GetOutput()->GetScalarRange( range ); 00636 // range[1] *= 0.7; // reduce the upper range by 30% 00637 // slice->SetScalarRange( range ); 00638 // slice->SetLookupTable( lut ); 00639 00640 // vtkActor *sliceActor = vtkActor::New(); 00641 // sliceActor->SetMapper( slice ); 00642 00643 vtkPolyDataMapper *contourMapper = vtkPolyDataMapper::New(); 00644 contourMapper->SetInput( sliceCutter->GetOutput() ); 00645 contourMapper->SetScalarRange( range ); 00646 // contourMapper->SetLookupTable( lut ); 00647 00648 00649 vtkActor *contourActor = vtkActor::New(); 00650 contourActor->SetMapper( contourMapper ); 00651 00652 00653 00654 // The usual rendering stuff. 00655 vtkCamera *camera = vtkCamera::New(); 00656 camera->SetPosition(1,1,1); 00657 camera->SetFocalPoint(0,0,0); 00658 00659 vtkRenderer *renderer = vtkRenderer::New(); 00660 vtkRenderWindow *renWin = vtkRenderWindow::New(); 00661 renWin->AddRenderer(renderer); 00662 00663 vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); 00664 iren->SetRenderWindow(renWin); 00665 00666 renderer->AddActor( contourActor ); 00667 // renderer->AddActor(cubeActor); 00668 renderer->SetActiveCamera(camera); 00669 renderer->ResetCamera(); 00670 renderer->SetBackground(1,1,1); 00671 00672 renWin->SetSize(300,300); 00673 00674 // interact with data 00675 renWin->Render(); 00676 iren->Start(); 00677 00678 00679 }
void wxVtkMPR3DView::VisibleImageActor | ( | int | idPosition, | |
bool | visible | |||
) |
Definition at line 412 of file wxVtkMPR3DView.cxx.
References _vtkmpr3Ddataviewer, _wxvtk3Dbaseview, vtkMPR3DDataViewer::GetImageActor(), wxVtk3DBaseView::GetRenderer(), vtkMPR3DDataViewer::GetVisiblePosition(), and vtkMPR3DDataViewer::SetVisiblePosition().
Referenced by wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(), wxVtkMPR3DViewCntrlPanel::SetVisibleX(), wxVtkMPR3DViewCntrlPanel::SetVisibleY(), and wxVtkMPR3DViewCntrlPanel::SetVisibleZ().
00412 { 00413 /*if(visible == false) 00414 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == false \n"); 00415 else 00416 { 00417 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == true\n"); 00418 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> idPosition == %d\n", idPosition); 00419 } 00420 */ 00421 if (visible!=_vtkmpr3Ddataviewer->GetVisiblePosition(idPosition)){ 00422 if (visible==false){ 00423 _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition) ); 00424 } else { 00425 _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition) ); 00426 } 00427 _vtkmpr3Ddataviewer->SetVisiblePosition(idPosition,visible); 00428 } 00429 }
void wxVtkMPR3DView::VisiblePlaneWidget | ( | bool | visible | ) |
Definition at line 446 of file wxVtkMPR3DView.cxx.
References _contourPlaneActor, and _planeWidget.
Referenced by wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(), wxVtkMPR3DViewCntrlPanel::SetVisiblePlane(), and ~wxVtkMPR3DView().
00447 { 00448 if(_planeWidget){ 00449 if (visible==true) 00450 { 00451 _planeWidget->On(); 00452 _contourPlaneActor->VisibilityOn(); 00453 00454 } else { 00455 _planeWidget->Off(); 00456 _contourPlaneActor->VisibilityOff(); 00457 } 00458 } 00459 }
void wxVtkMPR3DView::VisiblePointWidget | ( | bool | visible | ) |
Definition at line 433 of file wxVtkMPR3DView.cxx.
References _pointWidget.
Referenced by wxMaracasRenderTabbedPanel::addRemoveActorMPR(), wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(), wxVtkMPR3DViewCntrlPanel::SetVisibleXYZ(), and ~wxVtkMPR3DView().
00434 { 00435 if(_pointWidget){ 00436 if (visible==true) 00437 { 00438 _pointWidget->On(); 00439 } else { 00440 _pointWidget->Off(); 00441 } 00442 } 00443 }
vtkPolyDataMapper* wxVtkMPR3DView::_contourMapper [private] |
Definition at line 72 of file wxVtkMPR3DView.h.
Referenced by Configure(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().
vtkActor* wxVtkMPR3DView::_contourPlaneActor [private] |
Definition at line 65 of file wxVtkMPR3DView.h.
Referenced by Configure(), VisiblePlaneWidget(), and ~wxVtkMPR3DView().
vtkPlaneWidget* wxVtkMPR3DView::_planeWidget [private] |
Definition at line 66 of file wxVtkMPR3DView.h.
Referenced by Configure(), InitOrientationPointWidget(), RefreshView(), TestLoic1(), TestLoic2(), VisiblePlaneWidget(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().
vtkImagePlaneWidget* wxVtkMPR3DView::_planeWidgetX [private] |
Definition at line 75 of file wxVtkMPR3DView.h.
Referenced by ConfigureFreePlanes(), FreePlaneInteraction(), FreePlaneVisible(), and wxVtkMPR3DView().
vtkImagePlaneWidget* wxVtkMPR3DView::_planeWidgetY [private] |
Definition at line 76 of file wxVtkMPR3DView.h.
Referenced by ConfigureFreePlanes(), FreePlaneInteraction(), FreePlaneVisible(), and wxVtkMPR3DView().
vtkImagePlaneWidget* wxVtkMPR3DView::_planeWidgetZ [private] |
Definition at line 77 of file wxVtkMPR3DView.h.
Referenced by ConfigureFreePlanes(), FreePlaneInteraction(), FreePlaneVisible(), and wxVtkMPR3DView().
vtkPointWidget* wxVtkMPR3DView::_pointWidget [private] |
Definition at line 69 of file wxVtkMPR3DView.h.
Referenced by Configure(), RefreshView(), VisiblePointWidget(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().
vtkProbeFilter* wxVtkMPR3DView::_probe [private] |
Definition at line 71 of file wxVtkMPR3DView.h.
Referenced by Configure(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().
Definition at line 60 of file wxVtkMPR3DView.h.
Referenced by Configure(), GetVtkMPR3DDataViewer(), Refresh(), SetVtkMPR3DDataViewer(), showOutlineActor(), VisibleImageActor(), and wxVtkMPR3DView().
vtkPolyData* wxVtkMPR3DView::_vtkplane [private] |
Definition at line 64 of file wxVtkMPR3DView.h.
Referenced by Configure(), RefreshView(), wxVtkMPR3DView(), and ~wxVtkMPR3DView().
wxVtk3DBaseView* wxVtkMPR3DView::_wxvtk3Dbaseview [private] |
Definition at line 59 of file wxVtkMPR3DView.h.
Referenced by Configure(), GetWxvtk3Dbaseview(), RemoveActor(), ResetCamera(), showOutlineActor(), VisibleImageActor(), and wxVtkMPR3DView().
Definition at line 61 of file wxVtkMPR3DView.h.
Referenced by Configure(), CreateControlPanel(), Refresh(), and wxVtkMPR3DView().