#include "vtkProperty.h"
#include "vtkLinearTransform.h"
+#include "vtkCleanPolyData.h"
+#include "vtkFieldData.h"
+
+//--
+#include <vtkGlyph3D.h>
+#include <vtkArrowSource.h>
+#include <vtkPolyDataNormals.h>
+//--
#include "bbvtkPolyDataToActor.h"
#include "bbvtkPackage.h"
+#include "vtkRenderWindow.h"
namespace bbvtk
{
bbSetInputScalarVisibility(false);
polydatamapper = NULL;
vtkactor = NULL;
+
+ bbSetInputScalarVisibilityOn_LookupTable(NULL);
+ bbSetInputScalarVisibilityOn_NameColorArray("");
+ bbSetInputIn(NULL);
}
{
polydatamapper = vtkPolyDataMapper::New();
vtkactor = vtkActor::New();
-
// polydatamapper->SetInput(marchingcubes->GetOutput());
vtkactor->SetMapper(polydatamapper);
- polydatamapper->ImmediateModeRenderingOn();
+//EED 2020-04-21 vtk8 deprecated
+// polydatamapper->ImmediateModeRenderingOn();
}
//---------------------------------------------------------------------
}
-//---------------------------------------------------------------------
+
+
+/*
- void PolyDataToActor::DoProcess()
- {
+-----------------------------------------------
- if (bbGetInputActive()==true)
- {
+https://vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ScalarBarActor
+https://vtk.org/Wiki/VTK/Examples/Cxx/VisualizationAlgorithms/TubesFromSplines
+https://vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ElevationBandsWithGlyphs
+
+vtkSmartPointer<vtkFloatArray> scalars = vtkSmartPointer<vtkFloatArray>::New();
+ scalars set value ....
+poly->GetPointData()->SetScalars(scalars); or poly->GetPointData()->SetActiveScalars("<NameArray>");
+
+vtkSmartPointer<vtkLookupTable> hueLut = vtkSmartPoint | ^~
+er<vtkLookupTable>::New();
+ hueLut Build ....
+
+ mapper->SetInputData(poly);
+ mapper->ScalarVisibilityOn();
+ mapper->SetScalarModeToUsePointData(); Point of Cell ...
+
+ default: mapper->SetColorModeToDirectScalars() Busca scalars 3 componentes [R,G,B] float 0..1 or integer 0..255
+ else:
+ mapper->SetColorModeToMapScalars() El vector scalar solo tiene un componente
+ mapper->SetLookupTable( hueLut );
+
+ To change Array
+ mapper->SelectColorArray("<NameVector>");
+
+ mapper->SetUseLookupTableScalarRange( true/false ) true:Para compartir lookuptable con otros mappers
+ si false then
+ mapper->SetScalarRange( min, max); Range especifico este mapper
+ mapper->SetScalarRange( tubePolyData->GetScalarRange() );
+
+------------------------------------------
+
+ mapper->ScalarVisibilityOff(); -> SetScalarModeToDefault()
+ Utiliza el color del actor
+
+----------------------------------------
+
+*/
+
+
+//---------------------------------------------------------------------
+
+void PolyDataToActor::DoProcess()
+{
+ bool ok_removeActor=false;
+ if (bbGetInputRenderer()==NULL)
+ {
+ printf("EED Warnning! PolyDataToActor::DoProcess missing Renderer.\n");
+ }
+ if (bbGetInputActive()==true)
+ {
+ if (bbGetInputIn()!=NULL)
+ {
//EED 2017-01-01 Migration VTK7
#if VTK_MAJOR_VERSION <= 5
- polydatamapper->SetInput( bbGetInputIn() );
+ polydatamapper->SetInput( bbGetInputIn() );
#else
- polydatamapper->SetInputData( bbGetInputIn() );
+ polydatamapper->SetInputData( bbGetInputIn() );
#endif
+ vtkactor->GetProperty()->SetRepresentation( bbGetInputRepresentation() );
+ if (bbGetInputRepresentation()==0)
+ {
+ vtkactor->GetProperty()->SetAmbient(1);
+ vtkactor->GetProperty()->SetDiffuse(1);
+ vtkactor->GetProperty()->SetSpecular(0);
+printf("EED WARNNING! PolyDataToActor::DoProcess which is the default values of Ambient, Diffuse, Specular for points option? \n");
+ } else if (bbGetInputRepresentation()==1)
+ {
+ vtkactor->GetProperty()->SetAmbient(1);
+ vtkactor->GetProperty()->SetDiffuse(1);
+ vtkactor->GetProperty()->SetSpecular(0);
+ } else if (bbGetInputRepresentation()==2)
+ {
+ vtkactor->GetProperty()->SetAmbient(0);
+ vtkactor->GetProperty()->SetDiffuse(1);
+ vtkactor->GetProperty()->SetSpecular(0);
+ }
+ vtkactor->GetProperty()->SetLineWidth( bbGetInputLineWidth() );
+ vtkactor->GetProperty()->SetColor( bbGetInputColour()[0],
+ bbGetInputColour()[1],
+ bbGetInputColour()[2] );
+ vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
+ if ( bbGetInputTransform()!=NULL )
+ {
+ vtkactor->SetUserTransform( bbGetInputTransform() );
+ }
+ bbSetOutputOut( vtkactor );
+
+
+/* / >>>>
+ AAAAA
+ vtkArrowSource *arrow = vtkArrowSource::New();
+ vtkPolyDataNormals *normals = vtkPolyDataNormals::New();
+ normals->SetInputData( bbGetInputIn() );
+ vtkGlyph3D *glyph = vtkGlyph3D::New();
+ glyph->SetInputData(normals->GetOutput() );
+ glyph->SetSourceData(arrow->GetOutput() );
+ glyph->SetVectorModeToUseNormal();
+ glyph->SetScaleModeToScaleByVector();
+ glyph->SetScaleFactor(10);
+ vtkPolyDataMapper *mapper2 = vtkPolyDataMapper::New();
+ mapper2->SetInputData( glyph->GetOutput() );
+ vtkActor *actor2 = vtkActor::New();
+ actor2->SetMapper(mapper2);
+ actor2->GetProperty()->SetColor(1, 0, 0);
+*/
- vtkactor->GetProperty()->SetRepresentation( bbGetInputRepresentation() );
-
- if (bbGetInputRepresentation()==1)
- {
- vtkactor->GetProperty()->SetAmbient(1);
- vtkactor->GetProperty()->SetDiffuse(1);
- vtkactor->GetProperty()->SetSpecular(0);
- } else {
-printf("EED WARNNING! PolyDataToActor::DoProcess which is the default values of Ambient, Diffuse, Specular ? \n");
- }
-
- vtkactor->GetProperty()->SetLineWidth( bbGetInputLineWidth() );
-
- vtkactor->GetProperty()->SetColor( bbGetInputColour()[0],
- bbGetInputColour()[1],
- bbGetInputColour()[2] );
-
- vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
-
-
- if ( bbGetInputTransform()!=NULL )
- {
- vtkactor->SetUserTransform( bbGetInputTransform() );
- }
-
- bbSetOutputOut( vtkactor );
-
- // Interface Update
- if ((actorAdded==false) && (bbGetInputRenderer()!=NULL ))
- {
- actorAdded=true;
- bbGetInputRenderer()->AddActor( vtkactor );
- } // actorAdded
-
- if (bbGetInputScalarVisibility()==true )
- {
- polydatamapper->ScalarVisibilityOn();
- } else {
- polydatamapper->ScalarVisibilityOff();
- } // ScalarVisibility
- } else {
- // Interface Update
- if ((actorAdded==true) && (bbGetInputRenderer()!=NULL ))
- {
- actorAdded=false;
- bbGetInputRenderer()->RemoveActor( vtkactor );
- } // actorAdded
- } // Active
- }
-
-
+
+
+ // Interface Update
+ if ((actorAdded==false) && (bbGetInputRenderer()!=NULL ))
+ {
+ actorAdded=true;
+ bbGetInputRenderer()->AddActor( vtkactor );
+//--
+// bbGetInputRenderer()->AddActor( actor2 );
+//--
+
+
+ } // actorAdded
+ if (bbGetInputScalarVisibility()==true )
+ {
+ polydatamapper->ScalarVisibilityOn();
+ if (bbGetInputScalarVisibilityOn_LookupTable()!=NULL)
+ {
+// polydatamapper->SetScalarModeToDefault();
+// polydatamapper->SetScalarModeToUseCellData();
+// polydatamapper->SetScalarModeToUseCellFieldData();
+// polydatamapper->SetScalarModeToUseFieldData(); // 1/2 hausdorff->SetTargetDistanceMethodToPointToCell();
+// polydatamapper->SetScalarModeToUsePointData(); // *
+ polydatamapper->SetScalarModeToUsePointFieldData();
+ polydatamapper->SetColorModeToMapScalars();
+ polydatamapper->SetLookupTable( bbGetInputScalarVisibilityOn_LookupTable() );
+ if (bbGetInputScalarVisibilityOn_NameColorArray()!="")
+ {
+ polydatamapper->SelectColorArray( bbGetInputScalarVisibilityOn_NameColorArray().c_str() );
+ }
+ if (bbGetInputScalarVisibilityOn_ScalarRange().size()==2)
+ {
+ polydatamapper->SetScalarRange( bbGetInputScalarVisibilityOn_ScalarRange()[0] , bbGetInputScalarVisibilityOn_ScalarRange()[1] );
+ }
+ } // if ScalarVisibilityOn_LookupTable
+ } else {
+ polydatamapper->ScalarVisibilityOff();
+ } // ScalarVisibility
+ } else {
+ ok_removeActor=true;
+// printf("EED Warnning! PolyDataToActor::DoProcess In (PolyData) not defined. \n" );
+ }// if In !=NULL
+ } else {
+ ok_removeActor=true;
+ } // Active
+
+ if (ok_removeActor==true)
+ {
+ // Interface Update
+ if ((actorAdded==true) && (bbGetInputRenderer()!=NULL ))
+ {
+ actorAdded=false;
+ bbGetInputRenderer()->RemoveActor( vtkactor );
+ } // actorAdded
+ } // if ok_removeActor
+
+}
} // EO namespace bbtk