X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracasSurfaceRenderingManagerDataMhd.cxx;h=2c6a6cdb161606476d312a60c7a670de6c3739e5;hb=1aed85ffcc87973f62db4e3e535b4b7ca9cec950;hp=031c9752febea3e79689837e2f69f7c6c285b9d9;hpb=476100b14fe16ecb940787a8f98d65e8359d7f58;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx index 031c975..2c6a6cd 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx @@ -1,8 +1,10 @@ #include "wxMaracasSurfaceRenderingManagerDataMhd.h" +#include "vtkStripper.h" + wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor* interactor) -: wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor) +: wxMaracasSurfaceRenderingManagerData(NULL, dataname) { this->setVtkImageData(imagedata); @@ -11,39 +13,90 @@ 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 = vtkPolyDataMapper::New( ); + _dataMapper->ScalarVisibilityOff( ); _dataMapper->ImmediateModeRenderingOn(); - dataActor->SetMapper(_dataMapper); + vtkActor* dataActor = vtkActor::New(); + + //if(_boxWidgetS1){ + if(interactor){ + + _boxWidgetS1 = vtkBoxWidget::New(); + _boxWidgetS1->SetInteractor( interactor ); + _boxWidgetS1->SetPlaceFactor(1.25); + + _boxWidgetS1->SetInput( this->_imagedata ); + _boxWidgetS1->PlaceWidget(); + boxSurfaceObserver* observer = boxSurfaceObserver::New(); + + _boxWidgetS1->HandlesOn (); + _boxWidgetS1->On(); + + vtkStripper* striper = vtkStripper::New(); + striper->SetInput( _cleanFilter->GetOutput() ); + //striper->SetInput( _cubesFilter->GetOutput() ); + + striper->Update(); + _boxWidgetS1->SetInput(striper->GetOutput()); + _boxWidgetS1->PlaceWidget(); + + _boxWidgetS1->HandlesOn (); + _boxWidgetS1->On(); + + _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() ); + observer->SetPlanes( _tissuePlanes ); + observer->SetActor( dataActor ); + _boxWidgetS1->AddObserver( vtkCommand::InteractionEvent , observer ); - if(_boxWidgetS1){ - _boxWidgetS1->SetInput(imagedata); - } + + }else{ + _dataMapper->SetInput(_cleanFilter->GetOutput()); + } + + dataActor->SetMapper(_dataMapper); this->_prop3D = dataActor; + + + this->changeIsoValue(this->_maxgreylevel); } -wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd(){ + +wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd() +{ _cubesFilter->Delete(); _cleanFilter->Delete(); _dataMapper->Delete(); } -void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface(){ +void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface() +{ _cubesFilter->Update(); _cleanFilter->Update(); _dataMapper->Update();