BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,VecIsoSurfaceExtractor)
BBTK_BLACK_BOX_IMPLEMENTATION(VecIsoSurfaceExtractor,bbtk::AtomicBlackBox);
-void VecIsoSurfaceExtractor::Process()
-{
- double r,g,b;
- vtkMarchingCubes *marchingcubes;
- vtkPolyDataMapper *polydatamapper;
- vtkActor *vtkactor;
-
- int i,size;
-
-
- size = VecVtkactor.size();
- for( i=0 ; i<size ; i++)
+
+ //-----------------------------------------------------------
+ void VecIsoSurfaceExtractor::bbUserSetDefaultValues()
{
- if (bbGetInputRenderer()!=NULL )
+ std::vector<double> colour;
+ // 1- red
+ colour.push_back(1.0);
+ colour.push_back(0.0);
+ colour.push_back(0.0);
+ // 2- blue
+ colour.push_back(0.0);
+ colour.push_back(0.0);
+ colour.push_back(1.0);
+ // 3- yellow
+ colour.push_back(1.0);
+ colour.push_back(1.0);
+ colour.push_back(0.0);
+ // 4- green
+ colour.push_back(0.0);
+ colour.push_back(1.0);
+ colour.push_back(0.0);
+ // 5-
+ colour.push_back(0.0);
+ colour.push_back(1.0);
+ colour.push_back(1.0);
+
+ // 6-
+ colour.push_back(0.5);
+ colour.push_back(0.5);
+ colour.push_back(0.5);
+
+ bbSetInputColour(colour);
+ bbSetInputTransform(NULL);
+ bbSetInputOpacity(1);
+
+ bbSetInputRenderer(NULL);
+ bbSetInputIsovalue(128);
+ bbSetInputOpacity(1);
+ }
+
+ //-----------------------------------------------------------
+ void VecIsoSurfaceExtractor::bbUserInitializeProcessing()
+ {
+ // bbSetInputIn(NULL);
+ // bbSetInputInVtkObject(NULL);
+
+ }
+
+ //-----------------------------------------------------------
+ void VecIsoSurfaceExtractor::bbUserFinalizeProcessing()
+ {
+ int i,size = VecMarchingcubes.size();
+ for (i=0;i<size;i++)
{
- bbGetInputRenderer()->RemoveActor( VecVtkactor[i] );
VecMarchingcubes[i]->Delete();
VecPolydatamapper[i]->Delete();
VecVtkactor[i]->Delete();
}
+ VecMarchingcubes.clear();
+ VecPolydatamapper.clear();
+ VecVtkactor.clear();
}
- VecMarchingcubes.clear();
- VecPolydatamapper.clear();
- VecVtkactor.clear();
-
-
- size = bbGetInputIn().size();
- for( i=0 ; i<size ; i++){
- marchingcubes = vtkMarchingCubes::New();
- polydatamapper = vtkPolyDataMapper::New();
- vtkactor = vtkActor::New();
-
- polydatamapper->SetInput(marchingcubes->GetOutput());
- vtkactor->SetMapper(polydatamapper);
-
- polydatamapper->ScalarVisibilityOff();
- polydatamapper->ImmediateModeRenderingOn();
-
- VecMarchingcubes.push_back(marchingcubes);
- VecPolydatamapper.push_back(polydatamapper);
- VecVtkactor.push_back(vtkactor);
- } // for i
-
-
- for( i=0 ; i<size ; i++){
- // Visualisation - result volume
- marchingcubes=VecMarchingcubes[i];
- vtkactor=(vtkActor*)VecVtkactor[i];
-
- marchingcubes->SetInput( bbGetInputIn()[i] );
- marchingcubes->SetValue(0, bbGetInputIsovalue() );
- marchingcubes->Update();
-
- if ( (i*3+1)<(int)(bbGetInputColour().size()) ){
- r = bbGetInputColour()[0+i*3];
- g = bbGetInputColour()[1+i*3];
- b = bbGetInputColour()[2+i*3];
- } else {
- r = bbGetInputColour()[0];
- g = bbGetInputColour()[1];
- b = bbGetInputColour()[2];
- }
- vtkactor->GetProperty()->SetColor( r,g,b );
-
- vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
-
- if ( bbGetInputTransform()!=NULL )
- {
- vtkactor->SetUserTransform( bbGetInputTransform() );
- }
+
+ //-----------------------------------------------------------
+ void VecIsoSurfaceExtractor::Process()
+ {
+ double r,g,b;
+ vtkMarchingCubes *marchingcubes;
+ vtkPolyDataMapper *polydatamapper;
+ vtkActor *vtkactor;
+
+ int i,size;
- // Interface Update
- if (bbGetInputRenderer()!=NULL )
+ size = VecVtkactor.size();
+ for( i=0 ; i<size ; i++)
{
- bbGetInputRenderer()->AddActor( vtkactor );
+ if (bbGetInputRenderer()!=NULL )
+ {
+ bbGetInputRenderer()->RemoveActor( VecVtkactor[i] );
+ VecMarchingcubes[i]->Delete();
+ VecPolydatamapper[i]->Delete();
+ VecVtkactor[i]->Delete();
+ }
}
- } // for i
-
-
- bbSetOutputOut( VecVtkactor );
-}
-
-void VecIsoSurfaceExtractor::bbUserConstructor()
-{
- Init();
- std::vector<double> colour;
- // 1- red
- colour.push_back(1.0);
- colour.push_back(0.0);
- colour.push_back(0.0);
- // 2- blue
- colour.push_back(0.0);
- colour.push_back(0.0);
- colour.push_back(1.0);
- // 3- yellow
- colour.push_back(1.0);
- colour.push_back(1.0);
- colour.push_back(0.0);
- // 4- green
- colour.push_back(0.0);
- colour.push_back(1.0);
- colour.push_back(0.0);
- // 5-
- colour.push_back(0.0);
- colour.push_back(1.0);
- colour.push_back(1.0);
-
- // 6-
- colour.push_back(0.5);
- colour.push_back(0.5);
- colour.push_back(0.5);
-
-
- bbSetInputColour(colour);
- bbSetInputTransform(NULL);
- bbSetInputOpacity(1);
-}
-
-void VecIsoSurfaceExtractor::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
-{
- Init();
-}
-
-void VecIsoSurfaceExtractor::bbUserDestructor()
-{
- int i,size = VecMarchingcubes.size();
- for (i=0;i<size;i++)
- {
- VecMarchingcubes[i]->Delete();
- VecPolydatamapper[i]->Delete();
- VecVtkactor[i]->Delete();
+ VecMarchingcubes.clear();
+ VecPolydatamapper.clear();
+ VecVtkactor.clear();
+
+
+ size = bbGetInputIn().size();
+ for( i=0 ; i<size ; i++){
+ marchingcubes = vtkMarchingCubes::New();
+ polydatamapper = vtkPolyDataMapper::New();
+ vtkactor = vtkActor::New();
+
+ polydatamapper->SetInput(marchingcubes->GetOutput());
+ vtkactor->SetMapper(polydatamapper);
+
+ polydatamapper->ScalarVisibilityOff();
+ polydatamapper->ImmediateModeRenderingOn();
+
+ VecMarchingcubes.push_back(marchingcubes);
+ VecPolydatamapper.push_back(polydatamapper);
+ VecVtkactor.push_back(vtkactor);
+ } // for i
+
+
+ for( i=0 ; i<size ; i++){
+ // Visualisation - result volume
+ marchingcubes=VecMarchingcubes[i];
+ vtkactor=(vtkActor*)VecVtkactor[i];
+
+ marchingcubes->SetInput( bbGetInputIn()[i] );
+ marchingcubes->SetValue(0, bbGetInputIsovalue() );
+ marchingcubes->Update();
+
+ if ( (i*3+1)<(int)(bbGetInputColour().size()) ){
+ r = bbGetInputColour()[0+i*3];
+ g = bbGetInputColour()[1+i*3];
+ b = bbGetInputColour()[2+i*3];
+ } else {
+ r = bbGetInputColour()[0];
+ g = bbGetInputColour()[1];
+ b = bbGetInputColour()[2];
+ }
+ vtkactor->GetProperty()->SetColor( r,g,b );
+
+ vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
+
+ if ( bbGetInputTransform()!=NULL )
+ {
+ vtkactor->SetUserTransform( bbGetInputTransform() );
+ }
+
+ // Interface Update
+ if (bbGetInputRenderer()!=NULL )
+ {
+ bbGetInputRenderer()->AddActor( vtkactor );
+ }
+ } // for i
+
+ bbSetOutputOut( VecVtkactor );
}
- VecMarchingcubes.clear();
- VecPolydatamapper.clear();
- VecVtkactor.clear();
-}
-
-
-void VecIsoSurfaceExtractor::Init()
-{
-// bbSetInputIn(NULL);
- // bbSetInputInVtkObject(NULL);
- bbSetInputRenderer(NULL);
- bbSetInputIsovalue(128);
- bbSetInputOpacity(1);
-
-}
}