From ec6ff196f98cd988e2d29663f53fd69f75d0c49f Mon Sep 17 00:00:00 2001 From: Juan Prieto Date: Mon, 16 Nov 2009 12:06:05 +0000 Subject: [PATCH] *** empty log message *** --- .../wxMaracasSurfaceRenderingManagerData.cxx | 13 ++--- ...xMaracasSurfaceRenderingManagerDataMhd.cxx | 54 ++++++++++++++----- .../wxMaracasSurfaceRenderingManagerDataMhd.h | 4 ++ 3 files changed, 49 insertions(+), 22 deletions(-) diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx index f52f00a..75ef800 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx @@ -9,7 +9,7 @@ wxMaracasSurfaceRenderingManagerData::wxMaracasSurfaceRenderingManagerData(vtkPr _prop3D = prop3Dvect; _dataname = dataname; - + _boxWidgetS1=NULL; initializeBoxWidget(interactor); @@ -26,19 +26,12 @@ wxMaracasSurfaceRenderingManagerData::wxMaracasSurfaceRenderingManagerData(vtkPr wxMaracasSurfaceRenderingManagerData::~wxMaracasSurfaceRenderingManagerData(){ _prop3D->Delete(); + if (_boxWidgetS1!=NULL) { _boxWidgetS1 -> Delete(); } } void wxMaracasSurfaceRenderingManagerData::initializeBoxWidget(vtkRenderWindowInteractor* interactor){ if(interactor!= NULL){ - _boxWidgetS1 = vtkBoxWidget::New(); - _boxWidgetS1->SetInteractor( interactor ); - _boxWidgetS1->SetPlaceFactor(1.25); - - //_boxWidgetS1->SetInput( ); - _boxWidgetS1->PlaceWidget(); - //_boxWidgetS1->AddObserver( vtkCommand::InteractionEvent , _vtkclipping3Ddataviewer->GetObserverS(i) ); - _boxWidgetS1->HandlesOn (); - _boxWidgetS1->Off(); + } } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx index 55d46a9..d3375e8 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx @@ -3,7 +3,7 @@ #include "vtkStripper.h" wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor* interactor) -: wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor) +: wxMaracasSurfaceRenderingManagerData(NULL, dataname) { this->setVtkImageData(imagedata); @@ -12,29 +12,59 @@ wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd _maxgreylevel = getMaxLevel(imagedata); _prop3D=NULL; - _cubesFilter = vtkMarchingCubes::New(); - _cleanFilter = vtkCleanPolyData::New(); - _dataMapper = vtkPolyDataMapper::New(); - vtkActor* dataActor = vtkActor::New(); - - _cubesFilter->SetInput(this->_imagedata); + _cubesFilter = vtkMarchingCubes::New(); + _cubesFilter->SetInput(this->_imagedata); _cubesFilter->ComputeGradientsOn (); _cubesFilter->ComputeScalarsOn (); _cubesFilter->SetNumberOfContours( 1 ); + _cleanFilter = vtkCleanPolyData::New(); _cleanFilter->SetInput ( _cubesFilter->GetOutput() ); - _dataMapper->SetInput(_cleanFilter->GetOutput()); - _dataMapper->ScalarVisibilityOff(); - _dataMapper->ImmediateModeRenderingOn(); - dataActor->SetMapper(_dataMapper); - this->_prop3D = dataActor; + _dataMapper = vtkPolyDataMapper::New( ); + _dataMapper->ScalarVisibilityOff( ); + _dataMapper->ImmediateModeRenderingOn(); if(_boxWidgetS1){ + + _boxWidgetS1 = vtkBoxWidget::New(); + _boxWidgetS1->SetInteractor( interactor ); + _boxWidgetS1->SetPlaceFactor(1.25); + + _boxWidgetS1->SetInput( this->_imagedata ); + _boxWidgetS1->PlaceWidget(); + //_boxWidgetS1->AddObserver( vtkCommand::InteractionEvent , _vtkclipping3Ddataviewer->GetObserverS(i) ); + _boxWidgetS1->HandlesOn (); + _boxWidgetS1->Off(); + vtkStripper* striper = vtkStripper::New(); striper->SetInput( _cleanFilter->GetOutput() ); + //striper->SetInput( _cubesFilter->GetOutput() ); + + striper->Update(); _boxWidgetS1->SetInput(striper->GetOutput()); _boxWidgetS1->PlaceWidget(); + + _tissuePlanes = vtkPlanes::New(); + + int x1,x2,y1,y2,z1,z2; + this->_imagedata->GetExtent(x1,x2,y1,y2,z1,z2); + _tissuePlanes->SetBounds (x1,x2,y1,y2,z1,z2); + + _boxWidgetS1->GetPlanes( _tissuePlanes ); + + _tissueClipper = vtkClipPolyData::New(); + _tissueClipper->SetInput( striper->GetOutput() ); + _tissueClipper->SetClipFunction( _tissuePlanes ); + _tissueClipper->InsideOutOn( ); + _dataMapper->SetInput( _tissueClipper->GetOutput() ); + + }else{ + _dataMapper->SetInput(_cleanFilter->GetOutput()); + } + vtkActor* dataActor = vtkActor::New(); + dataActor->SetMapper(_dataMapper); + this->_prop3D = dataActor; diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h index 9b20cec..236dab0 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h @@ -8,6 +8,8 @@ #include "vtkMarchingCubes.h" #include "vtkCleanPolyData.h" #include "vtkImageData.h" +#include "vtkClipPolyData.h" +#include "vtkPlanes.h" class wxMaracasSurfaceRenderingManagerDataMhd : public wxMaracasSurfaceRenderingManagerData { @@ -58,6 +60,8 @@ private: vtkMarchingCubes* _cubesFilter; vtkCleanPolyData* _cleanFilter; vtkPolyDataMapper* _dataMapper; + vtkClipPolyData* _tissueClipper; + vtkPlanes* _tissuePlanes; /** ** Get's the max grey level of the image -- 2.46.0