1 #include "bbvtkVecIsoSurfaceExtractor.h"
2 #include "bbvtkPackage.h"
4 #include "vtkProperty.h"
5 #include "vtkLinearTransform.h"
10 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,VecIsoSurfaceExtractor)
11 BBTK_BLACK_BOX_IMPLEMENTATION(VecIsoSurfaceExtractor,bbtk::AtomicBlackBox);
12 void VecIsoSurfaceExtractor::Process()
15 vtkMarchingCubes *marchingcubes;
16 vtkPolyDataMapper *polydatamapper;
22 size = VecVtkactor.size();
23 for( i=0 ; i<size ; i++)
25 if (bbGetInputRenderer()!=NULL )
27 bbGetInputRenderer()->RemoveActor( VecVtkactor[i] );
28 VecMarchingcubes[i]->Delete();
29 VecPolydatamapper[i]->Delete();
30 VecVtkactor[i]->Delete();
33 VecMarchingcubes.clear();
34 VecPolydatamapper.clear();
38 size = bbGetInputIn().size();
39 for( i=0 ; i<size ; i++){
40 marchingcubes = vtkMarchingCubes::New();
41 polydatamapper = vtkPolyDataMapper::New();
42 vtkactor = vtkActor::New();
44 polydatamapper->SetInput(marchingcubes->GetOutput());
45 vtkactor->SetMapper(polydatamapper);
47 polydatamapper->ScalarVisibilityOff();
48 polydatamapper->ImmediateModeRenderingOn();
50 VecMarchingcubes.push_back(marchingcubes);
51 VecPolydatamapper.push_back(polydatamapper);
52 VecVtkactor.push_back(vtkactor);
56 for( i=0 ; i<size ; i++){
57 // Visualisation - result volume
58 marchingcubes=VecMarchingcubes[i];
59 vtkactor=(vtkActor*)VecVtkactor[i];
61 marchingcubes->SetInput( bbGetInputIn()[i] );
62 marchingcubes->SetValue(0, bbGetInputIsovalue() );
63 marchingcubes->Update();
65 if ( (i*3+1)<(int)(bbGetInputColour().size()) ){
66 r = bbGetInputColour()[0+i*3];
67 g = bbGetInputColour()[1+i*3];
68 b = bbGetInputColour()[2+i*3];
70 r = bbGetInputColour()[0];
71 g = bbGetInputColour()[1];
72 b = bbGetInputColour()[2];
74 vtkactor->GetProperty()->SetColor( r,g,b );
76 vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
78 if ( bbGetInputTransform()!=NULL )
80 vtkactor->SetUserTransform( bbGetInputTransform() );
84 if (bbGetInputRenderer()!=NULL )
86 bbGetInputRenderer()->AddActor( vtkactor );
91 bbSetOutputOut( VecVtkactor );
94 void VecIsoSurfaceExtractor::bbUserConstructor()
97 std::vector<double> colour;
99 colour.push_back(1.0);
100 colour.push_back(0.0);
101 colour.push_back(0.0);
103 colour.push_back(0.0);
104 colour.push_back(0.0);
105 colour.push_back(1.0);
107 colour.push_back(1.0);
108 colour.push_back(1.0);
109 colour.push_back(0.0);
111 colour.push_back(0.0);
112 colour.push_back(1.0);
113 colour.push_back(0.0);
115 colour.push_back(0.0);
116 colour.push_back(1.0);
117 colour.push_back(1.0);
120 colour.push_back(0.5);
121 colour.push_back(0.5);
122 colour.push_back(0.5);
125 bbSetInputColour(colour);
126 bbSetInputTransform(NULL);
129 void VecIsoSurfaceExtractor::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
134 void VecIsoSurfaceExtractor::bbUserDestructor()
136 int i,size = VecMarchingcubes.size();
139 VecMarchingcubes[i]->Delete();
140 VecPolydatamapper[i]->Delete();
141 VecVtkactor[i]->Delete();
143 VecMarchingcubes.clear();
144 VecPolydatamapper.clear();
149 void VecIsoSurfaceExtractor::Init()
151 // bbSetInputIn(NULL);
152 // bbSetInputInVtkObject(NULL);
153 bbSetInputRenderer(NULL);
154 bbSetInputIsovalue(128);
155 bbSetInputOpacity(1);
161 // EO namespace bbvtk