2 #include "wxMaracasSurfaceRenderingManagerDataMhd.h"
3 #include "vtkStripper.h"
5 wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor* interactor)
6 : wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor)
9 this->setVtkImageData(imagedata);
12 _maxgreylevel = getMaxLevel(imagedata);
15 _cubesFilter = vtkMarchingCubes::New();
16 _cleanFilter = vtkCleanPolyData::New();
17 _dataMapper = vtkPolyDataMapper::New();
18 vtkActor* dataActor = vtkActor::New();
20 _cubesFilter->SetInput(this->_imagedata);
21 _cubesFilter->ComputeGradientsOn ();
22 _cubesFilter->ComputeScalarsOn ();
23 _cubesFilter->SetNumberOfContours( 1 );
24 _cleanFilter->SetInput ( _cubesFilter->GetOutput() );
25 _dataMapper->SetInput(_cleanFilter->GetOutput());
26 _dataMapper->ScalarVisibilityOff();
27 _dataMapper->ImmediateModeRenderingOn();
28 dataActor->SetMapper(_dataMapper);
30 this->_prop3D = dataActor;
33 vtkStripper* striper = vtkStripper::New();
34 striper->SetInput( _cleanFilter->GetOutput() );
35 _boxWidgetS1->SetInput(striper->GetOutput());
36 _boxWidgetS1->PlaceWidget();
41 this->changeIsoValue(this->_maxgreylevel);
46 wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd(){
47 _cubesFilter->Delete();
48 _cleanFilter->Delete();
49 _dataMapper->Delete();
52 void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface(){
53 _cubesFilter->Update();
54 _cleanFilter->Update();
55 _dataMapper->Update();
58 ** changes the isovalue in a prop3D
60 void wxMaracasSurfaceRenderingManagerDataMhd::changeIsoValue(double value){
63 _cubesFilter->SetValue(0,value);
64 _cubesFilter->Update();
65 _cleanFilter->Update();
66 _dataMapper->Update();
71 int wxMaracasSurfaceRenderingManagerDataMhd::getMaxGreyLevel(){
76 ** Get's the max grey level of the image
78 int wxMaracasSurfaceRenderingManagerDataMhd::getMaxLevel(vtkImageData* img){
80 int ext[6], i, j, k,max=0;
83 for(i = ext[0]; i < ext[1];i++){
84 for(j = ext[2]; j < ext[3];j++){
85 for(k = ext[4]; k < ext[5];k++){
86 unsigned short* ptr = (unsigned short*)img->GetScalarPointer(i,j,k);
100 ** Sets the VTK image data
103 void wxMaracasSurfaceRenderingManagerDataMhd::setVtkImageData(vtkImageData* imagedata){
104 _imagedata = imagedata;