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);
13 //-----------------------------------------------------------
14 void VecIsoSurfaceExtractor::bbUserSetDefaultValues()
18 "================================VecIsoSurfaceExtractor::bbUserSetDefaultValues()"
20 std::vector<double> colour;
22 colour.push_back(1.0);
23 colour.push_back(0.0);
24 colour.push_back(0.0);
26 colour.push_back(0.0);
27 colour.push_back(0.0);
28 colour.push_back(1.0);
30 colour.push_back(1.0);
31 colour.push_back(1.0);
32 colour.push_back(0.0);
34 colour.push_back(0.0);
35 colour.push_back(1.0);
36 colour.push_back(0.0);
38 colour.push_back(0.0);
39 colour.push_back(1.0);
40 colour.push_back(1.0);
43 colour.push_back(0.5);
44 colour.push_back(0.5);
45 colour.push_back(0.5);
47 bbSetInputColour(colour);
48 bbSetInputTransform(NULL);
51 bbSetInputRenderer(NULL);
52 bbSetInputIsovalue(128);
56 //-----------------------------------------------------------
57 void VecIsoSurfaceExtractor::bbUserInitializeProcessing()
60 // bbSetInputIn(NULL);
61 // bbSetInputInVtkObject(NULL);
63 "================================VecIsoSurfaceExtractor::bbUserInitializeProcessing()"
67 //-----------------------------------------------------------
68 void VecIsoSurfaceExtractor::bbUserFinalizeProcessing()
71 "================================VecIsoSurfaceExtractor::bbUserFinalizeProcessing()"
73 int i,size = VecMarchingcubes.size();
76 VecMarchingcubes[i]->Delete();
77 VecPolydatamapper[i]->Delete();
78 VecVtkactor[i]->Delete();
80 VecMarchingcubes.clear();
81 VecPolydatamapper.clear();
85 //-----------------------------------------------------------
86 void VecIsoSurfaceExtractor::Process()
89 "================================VecIsoSurfaceExtractor::Process()"
92 vtkMarchingCubes *marchingcubes;
93 vtkPolyDataMapper *polydatamapper;
98 size = VecVtkactor.size();
99 for( i=0 ; i<size ; i++)
101 if (bbGetInputRenderer()!=NULL )
103 bbGetInputRenderer()->RemoveActor( VecVtkactor[i] );
104 VecMarchingcubes[i]->Delete();
105 VecPolydatamapper[i]->Delete();
106 VecVtkactor[i]->Delete();
109 VecMarchingcubes.clear();
110 VecPolydatamapper.clear();
113 size = bbGetInputIn().size();
114 for( i=0 ; i<size ; i++){
115 marchingcubes = vtkMarchingCubes::New();
116 polydatamapper = vtkPolyDataMapper::New();
117 vtkactor = vtkActor::New();
119 polydatamapper->SetInput(marchingcubes->GetOutput());
120 vtkactor->SetMapper(polydatamapper);
122 polydatamapper->ScalarVisibilityOff();
123 polydatamapper->ImmediateModeRenderingOn();
125 VecMarchingcubes.push_back(marchingcubes);
126 VecPolydatamapper.push_back(polydatamapper);
127 VecVtkactor.push_back(vtkactor);
130 for( i=0 ; i<size ; i++){
131 // Visualisation - result volume
132 marchingcubes=VecMarchingcubes[i];
133 vtkactor=(vtkActor*)VecVtkactor[i];
135 marchingcubes->SetInput( bbGetInputIn()[i] );
136 marchingcubes->SetValue(0, bbGetInputIsovalue() );
137 marchingcubes->Update();
139 if ( (i*3+1)<(int)(bbGetInputColour().size()) ){
140 r = bbGetInputColour()[0+i*3];
141 g = bbGetInputColour()[1+i*3];
142 b = bbGetInputColour()[2+i*3];
144 r = bbGetInputColour()[0];
145 g = bbGetInputColour()[1];
146 b = bbGetInputColour()[2];
148 vtkactor->GetProperty()->SetColor( r,g,b );
150 vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
152 if ( bbGetInputTransform()!=NULL )
154 vtkactor->SetUserTransform( bbGetInputTransform() );
158 if (bbGetInputRenderer()!=NULL )
160 bbGetInputRenderer()->AddActor( vtkactor );
164 bbSetOutputOut( VecVtkactor );
167 // EO namespace bbvtk