1 #include "bbvtkVecIsoSurfaceExtractor.h"
2 #include "bbvtkPackage.h"
4 #include "vtkProperty.h"
9 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,VecIsoSurfaceExtractor)
10 BBTK_BLACK_BOX_IMPLEMENTATION(VecIsoSurfaceExtractor,bbtk::AtomicBlackBox);
11 void VecIsoSurfaceExtractor::Process()
14 vtkMarchingCubes *marchingcubes;
15 vtkPolyDataMapper *polydatamapper;
21 size = VecVtkactor.size();
22 for( i=0 ; i<size ; i++)
24 if (bbGetInputRenderer()!=NULL )
26 bbGetInputRenderer()->RemoveActor( VecVtkactor[i] );
27 VecMarchingcubes[i]->Delete();
28 VecPolydatamapper[i]->Delete();
29 VecVtkactor[i]->Delete();
32 VecMarchingcubes.clear();
33 VecPolydatamapper.clear();
37 size = bbGetInputIn().size();
38 for( i=0 ; i<size ; i++){
39 marchingcubes = vtkMarchingCubes::New();
40 polydatamapper = vtkPolyDataMapper::New();
41 vtkactor = vtkActor::New();
43 polydatamapper->SetInput(marchingcubes->GetOutput());
44 vtkactor->SetMapper(polydatamapper);
46 polydatamapper->ScalarVisibilityOff();
47 polydatamapper->ImmediateModeRenderingOn();
49 VecMarchingcubes.push_back(marchingcubes);
50 VecPolydatamapper.push_back(polydatamapper);
51 VecVtkactor.push_back(vtkactor);
55 for( i=0 ; i<size ; i++){
56 // Visualisation - result volume
57 marchingcubes=VecMarchingcubes[i];
58 vtkactor=(vtkActor*)VecVtkactor[i];
60 marchingcubes->SetInput( bbGetInputIn()[i] );
61 marchingcubes->SetValue(0, bbGetInputIsovalue() );
62 marchingcubes->Update();
64 if ( (i*3+1)<bbGetInputColour().size() ){
65 r = bbGetInputColour()[0+i*3];
66 g = bbGetInputColour()[1+i*3];
67 b = bbGetInputColour()[2+i*3];
69 r = bbGetInputColour()[0];
70 g = bbGetInputColour()[1];
71 b = bbGetInputColour()[2];
73 vtkactor->GetProperty()->SetColor( r,g,b );
75 vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
77 if ( bbGetInputTransform()!=NULL )
79 vtkactor->SetUserTransform( bbGetInputTransform() );
83 if (bbGetInputRenderer()!=NULL )
85 bbGetInputRenderer()->AddActor( vtkactor );
90 bbSetOutputOut( VecVtkactor );
93 void VecIsoSurfaceExtractor::bbUserConstructor()
96 std::vector<double> colour;
98 colour.push_back(1.0);
99 colour.push_back(0.0);
100 colour.push_back(0.0);
102 colour.push_back(0.0);
103 colour.push_back(0.0);
104 colour.push_back(1.0);
106 colour.push_back(1.0);
107 colour.push_back(1.0);
108 colour.push_back(0.0);
110 colour.push_back(0.0);
111 colour.push_back(1.0);
112 colour.push_back(0.0);
114 colour.push_back(0.0);
115 colour.push_back(1.0);
116 colour.push_back(1.0);
119 colour.push_back(0.5);
120 colour.push_back(0.5);
121 colour.push_back(0.5);
124 bbSetInputColour(colour);
125 bbSetInputTransform(NULL);
128 void VecIsoSurfaceExtractor::bbUserCopyConstructor()
133 void VecIsoSurfaceExtractor::bbUserDestructor()
135 int i,size = VecMarchingcubes.size();
138 VecMarchingcubes[i]->Delete();
139 VecPolydatamapper[i]->Delete();
140 VecVtkactor[i]->Delete();
142 VecMarchingcubes.clear();
143 VecPolydatamapper.clear();
148 void VecIsoSurfaceExtractor::Init()
150 // bbSetInputIn(NULL);
151 // bbSetInputInVtkObject(NULL);
152 bbSetInputRenderer(NULL);
153 bbSetInputIsovalue(128);
154 bbSetInputOpacity(1);
160 // EO namespace bbvtk