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()
16 //EED std::cout << "================================VecIsoSurfaceExtractor::bbUserSetDefaultValues()" << std::endl;
17 std::vector<double> colour;
19 colour.push_back(1.0);
20 colour.push_back(0.0);
21 colour.push_back(0.0);
23 colour.push_back(0.0);
24 colour.push_back(0.0);
25 colour.push_back(1.0);
27 colour.push_back(1.0);
28 colour.push_back(1.0);
29 colour.push_back(0.0);
31 colour.push_back(0.0);
32 colour.push_back(1.0);
33 colour.push_back(0.0);
35 colour.push_back(0.0);
36 colour.push_back(1.0);
37 colour.push_back(1.0);
40 colour.push_back(0.5);
41 colour.push_back(0.5);
42 colour.push_back(0.5);
44 bbSetInputColour(colour);
45 bbSetInputTransform(NULL);
48 bbSetInputRenderer(NULL);
49 bbSetInputIsovalue(128);
53 //-----------------------------------------------------------
54 void VecIsoSurfaceExtractor::bbUserInitializeProcessing()
57 // bbSetInputIn(NULL);
58 // bbSetInputInVtkObject(NULL);
59 //EED std::cout << "================================VecIsoSurfaceExtractor::bbUserInitializeProcessing()" << std::endl;
62 //-----------------------------------------------------------
63 void VecIsoSurfaceExtractor::bbUserFinalizeProcessing()
65 //EED std::cout << "================================VecIsoSurfaceExtractor::bbUserFinalizeProcessing()" << std::endl;
66 int i,size = VecMarchingcubes.size();
69 VecMarchingcubes[i]->Delete();
70 VecPolydatamapper[i]->Delete();
71 VecVtkactor[i]->Delete();
73 VecMarchingcubes.clear();
74 VecPolydatamapper.clear();
78 //-----------------------------------------------------------
79 void VecIsoSurfaceExtractor::Process()
81 //EED std::cout <<"================================VecIsoSurfaceExtractor::Process()" << std::endl;
83 vtkMarchingCubes *marchingcubes;
84 vtkPolyDataMapper *polydatamapper;
89 size = VecVtkactor.size();
90 for( i=0 ; i<size ; i++)
92 if (bbGetInputRenderer()!=NULL )
94 bbGetInputRenderer()->RemoveActor( VecVtkactor[i] );
95 VecMarchingcubes[i]->Delete();
96 VecPolydatamapper[i]->Delete();
97 VecVtkactor[i]->Delete();
100 VecMarchingcubes.clear();
101 VecPolydatamapper.clear();
104 size = bbGetInputIn().size();
105 for( i=0 ; i<size ; i++){
106 marchingcubes = vtkMarchingCubes::New();
107 polydatamapper = vtkPolyDataMapper::New();
108 vtkactor = vtkActor::New();
110 polydatamapper->SetInput(marchingcubes->GetOutput());
111 vtkactor->SetMapper(polydatamapper);
113 polydatamapper->ScalarVisibilityOff();
114 polydatamapper->ImmediateModeRenderingOn();
116 VecMarchingcubes.push_back(marchingcubes);
117 VecPolydatamapper.push_back(polydatamapper);
118 VecVtkactor.push_back(vtkactor);
121 for( i=0 ; i<size ; i++){
122 // Visualisation - result volume
123 marchingcubes=VecMarchingcubes[i];
124 vtkactor=(vtkActor*)VecVtkactor[i];
126 marchingcubes->SetInput( bbGetInputIn()[i] );
127 marchingcubes->SetValue(0, bbGetInputIsovalue() );
128 marchingcubes->Update();
130 if ( (i*3+1)<(int)(bbGetInputColour().size()) ){
131 r = bbGetInputColour()[0+i*3];
132 g = bbGetInputColour()[1+i*3];
133 b = bbGetInputColour()[2+i*3];
135 r = bbGetInputColour()[0];
136 g = bbGetInputColour()[1];
137 b = bbGetInputColour()[2];
139 vtkactor->GetProperty()->SetColor( r,g,b );
141 vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
143 if ( bbGetInputTransform()!=NULL )
145 vtkactor->SetUserTransform( bbGetInputTransform() );
149 if (bbGetInputRenderer()!=NULL )
151 bbGetInputRenderer()->AddActor( vtkactor );
155 bbSetOutputOut( VecVtkactor );
158 // EO namespace bbvtk