2 #include "wxMaracasSurfaceRenderingManagerDataMhd.h"
4 wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor* interactor)
5 : wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor)
8 this->setVtkImageData(imagedata);
11 _maxgreylevel = getMaxLevel(imagedata);
14 _cubesFilter = vtkMarchingCubes::New();
15 _cleanFilter = vtkCleanPolyData::New();
16 _dataMapper = vtkPolyDataMapper::New();
17 vtkActor* dataActor = vtkActor::New();
19 _cubesFilter->SetInput(this->_imagedata);
20 _cubesFilter->ComputeGradientsOn ();
21 _cubesFilter->ComputeScalarsOn ();
22 _cubesFilter->SetNumberOfContours( 1 );
23 _cleanFilter->SetInput ( _cubesFilter->GetOutput() );
24 _dataMapper->SetInput(_cleanFilter->GetOutput());
25 _dataMapper->ScalarVisibilityOff();
26 _dataMapper->ImmediateModeRenderingOn();
27 dataActor->SetMapper(_dataMapper);
30 _boxWidgetS1->SetInput(imagedata);
33 this->_prop3D = dataActor;
35 this->changeIsoValue(this->_maxgreylevel);
40 wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd(){
41 _cubesFilter->Delete();
42 _cleanFilter->Delete();
43 _dataMapper->Delete();
46 void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface(){
47 _cubesFilter->Update();
48 _cleanFilter->Update();
49 _dataMapper->Update();
52 ** changes the isovalue in a prop3D
54 void wxMaracasSurfaceRenderingManagerDataMhd::changeIsoValue(double value){
57 _cubesFilter->SetValue(0,value);
58 _cubesFilter->Update();
59 _cleanFilter->Update();
60 _dataMapper->Update();
65 int wxMaracasSurfaceRenderingManagerDataMhd::getMaxGreyLevel(){
70 ** Get's the max grey level of the image
72 int wxMaracasSurfaceRenderingManagerDataMhd::getMaxLevel(vtkImageData* img){
74 int ext[6], i, j, k,max=0;
77 for(i = ext[0]; i < ext[1];i++){
78 for(j = ext[2]; j < ext[3];j++){
79 for(k = ext[4]; k < ext[5];k++){
80 unsigned short* ptr = (unsigned short*)img->GetScalarPointer(i,j,k);
94 ** Sets the VTK image data
97 void wxMaracasSurfaceRenderingManagerDataMhd::setVtkImageData(vtkImageData* imagedata){
98 _imagedata = imagedata;