]> Creatis software - creaMaracasVisu.git/commitdiff
*** empty log message ***
authorJuan Prieto <Juan.Prieto@creatis.insa-lyon.fr>
Mon, 16 Nov 2009 12:06:05 +0000 (12:06 +0000)
committerJuan Prieto <Juan.Prieto@creatis.insa-lyon.fr>
Mon, 16 Nov 2009 12:06:05 +0000 (12:06 +0000)
lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx
lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx
lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h

index f52f00aaf3744ddb6f14d1b5ec4c2576abaa4fcc..75ef800321d281a461ae99a44711db85e4dfc731 100644 (file)
@@ -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();
+       
        }
 }
 
index 55d46a9d425e3af24403a7e98a3777f1f262a7fe..d3375e8c0a15dc0f7ca864bb204661dd076c2cae 100644 (file)
@@ -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;
 
        
 
index 9b20cec02840c5895bdcc316b06ab9085f49ae6d..236dab0f093b47611c9e631fb20127edb6803683 100644 (file)
@@ -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