#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);
_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();
- this->_prop3D = dataActor;
+ //if(_boxWidgetS1){
+ if(interactor){
+
+ _boxWidgetS1 = vtkBoxWidget::New();
+ _boxWidgetS1->SetInteractor( interactor );
+ _boxWidgetS1->SetPlaceFactor(1.25);
+
+ _boxWidgetS1->SetInput( this->_imagedata );
+ _boxWidgetS1->PlaceWidget();
+ boxSurfaceObserver* observer = boxSurfaceObserver::New();
- if(_boxWidgetS1){
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 );
+
+
+ _boxWidgetS1->HandlesOn ();
+ _boxWidgetS1->On();
+ }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();