_maxgreylevel = getMaxLevel(imagedata);
_prop3D=NULL;
+ _tresholdFilter = vtkImageThreshold::New();
+ _tresholdFilter->SetInput(this->_imagedata);
+ _tresholdFilter->SetInValue(255);
+ _tresholdFilter->SetOutValue(0);
+
+
_cubesFilter = vtkMarchingCubes::New();
- _cubesFilter->SetInput(this->_imagedata);
- _cubesFilter->ComputeGradientsOn ();
- _cubesFilter->ComputeScalarsOn ();
- _cubesFilter->SetNumberOfContours( 1 );
+ _cubesFilter->SetInput(_tresholdFilter->GetOutput());
+ //_cubesFilter->ComputeGradientsOn();
+ _cubesFilter->ComputeScalarsOn();
+ _cubesFilter->ComputeNormalsOn();
+ _cubesFilter->SetNumberOfContours( 1 );
_cleanFilter = vtkCleanPolyData::New();
_cleanFilter->SetInput ( _cubesFilter->GetOutput() );
+ _smooth = vtkSmoothPolyDataFilter::New();
+ _smooth->SetInput(_cleanFilter->GetOutput());
+ _smooth->SetNumberOfIterations(6);
+ _smooth->SetRelaxationFactor(0.3);
+ //_smooth->FeatureEdgeSmoothingOff();
+
_dataMapper = vtkPolyDataMapper::New( );
_dataMapper->ScalarVisibilityOff( );
_dataMapper->ImmediateModeRenderingOn();
boxSurfaceObserver* observer = boxSurfaceObserver::New();
vtkStripper* striper = vtkStripper::New();
- striper->SetInput( _cleanFilter->GetOutput() );
- //striper->SetInput( _cubesFilter->GetOutput() );
+ striper->SetInput( _smooth->GetOutput() );
+ //striper->SetInput( _cleanFilter->GetOutput() );
striper->Update();
_boxWidgetS1->SetInput(striper->GetOutput());
_boxWidgetS1->HandlesOn ();
_boxWidgetS1->EnabledOff();
}else{
- _dataMapper->SetInput(_cleanFilter->GetOutput());
+ //_dataMapper->SetInput(_cleanFilter->GetOutput());
+ _dataMapper->SetInput(_smooth->GetOutput());
}
dataActor->SetMapper(_dataMapper);
- this->_prop3D = dataActor;
+ float cr=1,cg=0.5,cb=0.5;
+ dataActor->GetProperty()->SetDiffuseColor(1,0.5,0.5 );
+ dataActor->GetProperty()->SetSpecular(.3);
+ dataActor->GetProperty()->SetSpecularPower(20);
-
+ this->_prop3D = dataActor;
this->changeIsoValue(this->_maxgreylevel);
void wxMaracasSurfaceRenderingManagerDataMhd::changeIsoValue(double value){
- _cubesFilter->SetValue(0,value);
+ _tresholdFilter->ThresholdByLower(value);
+ _tresholdFilter->Update();
+
+ _cubesFilter->SetValue(0,255);
_cubesFilter->Update();
_cleanFilter->Update();
_dataMapper->Update();
**/
void wxMaracasSurfaceRenderingManagerDataMhd::changeIsoValue(double min, double max){
-
- _cubesFilter->SetValue(min,max);
+ _tresholdFilter->ThresholdBetween(min, max);
+ _tresholdFilter->Update();
+ _cubesFilter->SetValue(0,255);
_cubesFilter->Update();
_cleanFilter->Update();
_dataMapper->Update();