X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaVtk%2FvtkVectorsVisu.cpp;h=51392f7300698a6dac591902cc216c62060a409c;hb=a58b0ef3e9adb0fd28caeb807b7fd2c904c4363a;hp=f88c650456a4fc8b3356af713ba27cc1f4d46206;hpb=b146797e0ad985788de697dcb3e6a48f4a2a488a;p=creaVtk.git diff --git a/lib/creaVtk/vtkVectorsVisu.cpp b/lib/creaVtk/vtkVectorsVisu.cpp index f88c650..51392f7 100644 --- a/lib/creaVtk/vtkVectorsVisu.cpp +++ b/lib/creaVtk/vtkVectorsVisu.cpp @@ -35,25 +35,62 @@ #include "vtkDataObject.h" #include +#include + //------------------------------------------------------------------------------ vtkVectorsVisu::vtkVectorsVisu() :vtkVectorsTensorsVisuBase() { - _vtkarrowsource = vtkArrowSource::New(); - _vtkglyph = NULL; - _vtklinesource = vtkLineSource ::New(); - _trans = vtkTransform ::New(); + _vtkarrowsource = vtkArrowSource::New(); + _vtkglyph = NULL; + _vtklineGlyphPolyData = NULL; + _trans = vtkTransform ::New(); + double sizeCross = 0.05; + double point1[3]; double point2[3]; - point1[0]=1; - point1[1]=0; - point1[2]=0; - point2[0]=-1; - point2[1]=0; - point2[2]=0; - _vtklinesource->SetPoint1( point1 ); - _vtklinesource->SetPoint2( point2 ); + + point1[0] = 1; + point1[1] = 0; + point1[2] = 0; + point2[0] = -1; + point2[1] = 0; + point2[2] = 0; + vtkLineSource *vtklinesource1 = vtkLineSource ::New(); + vtklinesource1->SetPoint1( point1 ); + vtklinesource1->SetPoint2( point2 ); + vtklinesource1->Update(); + + point1[0] = 0; + point1[1] = sizeCross; + point1[2] = 0; + point2[0] = 0; + point2[1] = -sizeCross; + point2[2] = 0; + vtkLineSource *vtklinesource2 = vtkLineSource ::New(); + vtklinesource2->SetPoint1( point1 ); + vtklinesource2->SetPoint2( point2 ); + vtklinesource2->Update(); + + point1[0] = 0; + point1[1] = 0; + point1[2] = sizeCross; + point2[0] = 0; + point2[1] = 0; + point2[2] = -sizeCross; + vtkLineSource *vtklinesource3 = vtkLineSource ::New(); + vtklinesource3->SetPoint1( point1 ); + vtklinesource3->SetPoint2( point2 ); + vtklinesource3->Update(); + + + vtkAppendPolyData *appendPolyData = vtkAppendPolyData::New(); + appendPolyData->AddInputData( vtklinesource1->GetOutput() ); + appendPolyData->AddInputData( vtklinesource2->GetOutput() ); + appendPolyData->AddInputData( vtklinesource3->GetOutput() ); + appendPolyData->Update(); + _vtklineGlyphPolyData = appendPolyData->GetOutput(); } //------------------------------------------------------------------------------ @@ -99,10 +136,9 @@ void vtkVectorsVisu::Process() #endif } else { // source Line #if VTK_MAJOR_VERSION <= 5 - _vtkglyph->SetSource( _vtklinesource->GetOutput() ); + _vtkglyph->SetSource( _vtklineGlyphPolyData ); #else - _vtklinesource->Update(); - _vtkglyph->SetSourceData( _vtklinesource->GetOutput() ); + _vtkglyph->SetSourceData( _vtklineGlyphPolyData ); #endif } _vtkglyph->SetScaleModeToScaleByVector(); @@ -166,7 +202,7 @@ void vtkVectorsVisu::Process() // _pdm->SetColorModeToDefault(); // _pdm->SetColorModeToDirectScalars(); // NOT compile // _pdm->SetScalarModeToUsePointFieldData(); - _pdm->ImmediateModeRenderingOn(); // obsolete +// _pdm->ImmediateModeRenderingOn(); // obsolete _pdm->SetLookupTable( _externalLut ); _pdm->SelectColorArray( "angle" ); } // if _externalLut @@ -228,6 +264,33 @@ void vtkVectorsVisu::Process() printf("EED Warnning! vtkVectorsVisu::Process GetDataObject() is EMPTY\n"); }// if GetDataObject()!=NULL + _pdm->ScalarVisibilityOn(); + _pdm->SetColorModeToMapScalars(); + //_pdm->SetColorModeToDefault(); + // _pdm->SetColorModeToDirectScalars(); // NOT compile + _pdm->SetScalarModeToUsePointFieldData(); + +//EED2021-09-03 Deprecated. Removed in vtk 8.1 +// _pdm->ImmediateModeRenderingOn(); + + _LutEED->SetVectorModeToComponent(); + //_LutEED->SetVectorModeToRGBColors(); + //_LutEED->SetVectorModeToMagnitud(); + +// _pdm->SetScalarModeToUsePointFieldData(); + _pdm->SetLookupTable( _LutEED ); + _pdm->SelectColorArray( "GlyphVector" ); + +// vSliceMapperVec->SetLookupTable( vGreenToRedLut ); +// vSliceMapperVec->SetColorModeToMapScalars(); + +#if VTK_MAJOR_VERSION <= 5 + // .. +#else + _pdm->Update(); +#endif + _actor->SetMapper( _pdm ); + _actor->GetProperty()->SetOpacity( GetOpacity() ); } else { _vtkglyph->SetInputData( NULL ); _vtkglyph->Update();