]> Creatis software - bbtk.git/commitdiff
#3507 BackFace in PolyDataToActor Box
authorEduardo DAVILA <davila@creatis.insa-lyon.fr>
Thu, 27 Jul 2023 20:50:18 +0000 (22:50 +0200)
committerEduardo DAVILA <davila@creatis.insa-lyon.fr>
Thu, 27 Jul 2023 20:50:18 +0000 (22:50 +0200)
packages/vtk/src/bbvtkPolyDataToActor.cxx
packages/vtk/src/bbvtkPolyDataToActor.h

index 4a40dcd8c9359b498709850bb7c6cc4bd6d9cfb1..b49ff78174549c4c7b803ac9fdc2d8811a859316 100644 (file)
@@ -41,7 +41,6 @@
 
 #ifdef _USE_VTK_
 
-#include "vtkProperty.h"
 #include "vtkLinearTransform.h"
 #include "vtkCleanPolyData.h"
 #include "vtkFieldData.h"
@@ -90,8 +89,10 @@ namespace bbvtk
        //---------------------------------------------------------------------
    void PolyDataToActor::bbUserInitializeProcessing() 
    {    
-     polydatamapper = vtkPolyDataMapper::New();
-     vtkactor       = vtkActor::New();
+     polydatamapper     = vtkPolyDataMapper::New();
+     vtkactor           = vtkActor::New();
+     backfaceproperty   = vtkProperty::New();
+
 //     polydatamapper->SetInput(marchingcubes->GetOutput());
      vtkactor->SetMapper(polydatamapper);
 
@@ -201,10 +202,15 @@ printf("EED WARNNING!  PolyDataToActor::DoProcess  which is the default values o
             vtkactor->GetProperty()->SetColor( bbGetInputColour()[0], bbGetInputColour()[1], bbGetInputColour()[2] );
             vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
 
-            vtkProperty *backfaceproperty = vtkProperty::New();
-            backfaceproperty->SetColor(0.5, 0.5, 1);
-            backfaceproperty->SetOpacity( bbGetInputOpacity() );
-            vtkactor->SetBackfaceProperty( backfaceproperty );
+//EED 2023-07-28
+            if (bbGetInputBackFaceColour().size()==3)
+            {
+                backfaceproperty->SetColor(0.5, 0.5, 1);
+                backfaceproperty->SetOpacity( bbGetInputOpacity() );
+                vtkactor->SetBackfaceProperty( backfaceproperty );
+            } else {
+                vtkactor->SetBackfaceProperty( NULL );
+            }
 
              if ( bbGetInputTransform()!=NULL )
              {
index b62a3ff9960d41cf2cc18eac2188acedda95c2cb..f0c9beb6b5387c35a65439470ac04224294f2661 100644 (file)
@@ -62,6 +62,8 @@
 #include "vtkProp3D.h"
 #include "vtkActor.h"
 #include "vtkScalarsToColors.h"
+#include "vtkProperty.h"
+
 #include <vector>
 
 #include "bbtkAtomicBlackBox.h"
@@ -76,13 +78,15 @@ namespace bbvtk
     bool              actorAdded;
     vtkPolyDataMapper *polydatamapper;
     vtkActor          *vtkactor; 
-    
+    vtkProperty       *backfaceproperty;
+      
     BBTK_BLACK_BOX_INTERFACE(PolyDataToActor,bbtk::AtomicBlackBox);
     
     BBTK_DECLARE_INPUT(Active,bool);
     BBTK_DECLARE_INPUT(In,vtkPolyData *);
     BBTK_DECLARE_INPUT(Opacity,double);
     BBTK_DECLARE_INPUT(Colour,std::vector<double>);
+    BBTK_DECLARE_INPUT(BackFaceColour,std::vector<double>);
     BBTK_DECLARE_INPUT(Renderer,vtkRenderer *);
     BBTK_DECLARE_INPUT(Transform, vtkLinearTransform *);
     BBTK_DECLARE_INPUT(Representation, int);
@@ -111,6 +115,7 @@ namespace bbvtk
   BBTK_INPUT(PolyDataToActor,Active,"Active true/false (default true)",bool,"");
   BBTK_INPUT(PolyDataToActor,Opacity,"Opacity",double,"");
   BBTK_INPUT(PolyDataToActor,Colour,"r g b",vectorcolour,"colour");
+  BBTK_INPUT(PolyDataToActor,BackFaceColour,"(default EMPTY) [r g b]  (0..1)",vectorcolour,"colour");
   BBTK_INPUT(PolyDataToActor,Renderer,"3D scene in which to insert the surface",vtkRenderer*,"");
   BBTK_INPUT(PolyDataToActor,Transform,"Linear Transform (4x4 homogeneous)",vtkLinearTransform*,"");
   BBTK_INPUT(PolyDataToActor,Representation,"0 points,1 wireframe, 2(default) surface",int,"");