X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaVtk%2FvtkVectorsVisu.cpp;h=c29dace97f7f3ddbccc12d64f61bc51ba4331aa1;hb=05400a294e401b74b2e7a3058f6a4ee3decfc62d;hp=d95b454c9f9d428345d1eb3f44f91be60c88c5f7;hpb=6f0a90ad28dc2855513d2e27c824ac162367cbe7;p=creaVtk.git diff --git a/lib/creaVtk/vtkVectorsVisu.cpp b/lib/creaVtk/vtkVectorsVisu.cpp index d95b454..c29dace 100644 --- a/lib/creaVtk/vtkVectorsVisu.cpp +++ b/lib/creaVtk/vtkVectorsVisu.cpp @@ -31,88 +31,202 @@ //Borrame #include "vtkPointData.h" - +#include "vtkArrayData.h" +#include "vtkDataObject.h" +#include //------------------------------------------------------------------------------ vtkVectorsVisu::vtkVectorsVisu() :vtkVectorsTensorsVisuBase() { - _vtkarrowsource = vtkArrowSource::New(); - _vtklinesource = vtkLineSource::New(); - _vtkglyph = vtkGlyph3D::New(); + _vtkarrowsource = vtkArrowSource::New(); + _vtkglyph = NULL; + _vtklinesource = vtkLineSource ::New(); + _trans = vtkTransform ::New(); + + 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 ); } - //------------------------------------------------------------------------------ vtkVectorsVisu::~vtkVectorsVisu() { } + //------------------------------------------------------------------------------ void vtkVectorsVisu::Process() { -printf("EED vtkVectorsVisu::Process() start\n"); if(_active==true) { - _vtkglyph->SetInput( GetDataObject() ); + if (_vtkglyph==NULL) + { + if (GetOrientation()==-1) + { + _vtkglyph = vtkGlyph3D::New(); + } // _orientation + if ((GetOrientation()>=0) && (GetOrientation()<=2)) + { + _vtkglyph = vtkGlyph3D::New(); +// _vtkglyph = vtkGlyph2D::New(); + } // _orientation + } // _vtkglyph NULL + +#if VTK_MAJOR_VERSION <= 5 + _vtkglyph->SetInput( GetDataObject() ); +#else + _vtkglyph->SetInputData( GetDataObject() ); +#endif if(GetTypeForm()==1) // source Arrow { - _vtkglyph->SetSource( _vtkarrowsource->GetOutput() ); +#if VTK_MAJOR_VERSION <= 5 + _vtkglyph->SetSource( _vtkarrowsource->GetOutput() ); +#else + _vtkarrowsource->Update(); + _vtkglyph->SetSourceData( _vtkarrowsource->GetOutput() ); +#endif } else { // source Line +#if VTK_MAJOR_VERSION <= 5 _vtkglyph->SetSource( _vtklinesource->GetOutput() ); +#else + _vtklinesource->Update(); + _vtkglyph->SetSourceData( _vtklinesource->GetOutput() ); +#endif } - _vtkglyph->SetScaleModeToScaleByVector(); - _vtkglyph->SetColorModeToColorByVector(); + + + if (_externalLut==NULL) + { + _vtkglyph->SetColorModeToColorByVector(); + } else { + _vtkglyph->SetColorModeToColorByScalar(); + } // if _externalLut + _vtkglyph->SetScaleFactor( GetScaleFactor() ); - _vtkglyph->Update(); + _vtkglyph->Update(); +#if VTK_MAJOR_VERSION <= 5 _pdm->SetInput( _vtkglyph->GetOutput()); +#else + _pdm->SetInputData( _vtkglyph->GetOutput()); +#endif vtkPointData *data = _vtkglyph->GetOutput()->GetPointData(); //printf("EED -------------------------------------------\n"); //_vtkglyph->GetOutput()->Print(std::cout); //printf("EED -------------------------------------------\n"); //data->Print(std::cout); -printf("EED -------------------------------------------\n"); -int i,sizeDa = data->GetNumberOfArrays(); -printf("EED vtkVectorsVisu::Process sizeDa %d \n", sizeDa ); -for (i=0;iGetNumberOfArrays(); +//for (i=0;iGetArray(i)->Print(std::cout); +//} + + + if (_externalLut==NULL) + { + _pdm->ScalarVisibilityOn(); + _pdm->SetColorModeToMapScalars(); + // _pdm->SetColorModeToDefault(); + // _pdm->SetColorModeToDirectScalars(); // NOT compile + _pdm->SetScalarModeToUsePointFieldData(); + // _pdm->ImmediateModeRenderingOn(); // obsolete + _LutEED->SetVectorModeToComponent(); + //_LutEED->SetVectorModeToRGBColors(); + //_LutEED->SetVectorModeToMagnitud(); + // _pdm->SetScalarModeToUsePointFieldData(); + _pdm->SetLookupTable( _LutEED ); + _pdm->SelectColorArray( "GlyphVector" ); + } else { + data->SetActiveScalars("angle"); + + _pdm->ScalarVisibilityOn(); + double scalarRange[2]; + scalarRange[0]=0; + scalarRange[1]=40; +printf("EED warnnning ..... vtkVectorsVisu::Process clean scalar Range ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process clean scalar Range ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process clean scalar Range ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process clean scalar Range ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process clean scalar Range ......\n"); + _pdm->SetScalarRange(scalarRange); + _pdm->SetColorModeToMapScalars(); +// _pdm->SetColorModeToDefault(); +// _pdm->SetColorModeToDirectScalars(); // NOT compile +// _pdm->SetScalarModeToUsePointFieldData(); + _pdm->ImmediateModeRenderingOn(); // obsolete + _pdm->SetLookupTable( _externalLut ); + _pdm->SelectColorArray( "angle" ); + } // if _externalLut + +printf("EED warnnning ..... vtkVectorsVisu::Process Clean angle ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process Clean angle ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process Clean angle ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process Clean angle ......\n"); +printf("EED warnnning ..... vtkVectorsVisu::Process Clean angle ......\n"); + +/* +_vtkglyph->Update(); +vtkPointData *pointdata=_vtkglyph->GetOutput()->GetPointData(); +int i,size=pointdata->GetNumberOfArrays(); +for (i=0;iGetArrayName(i) ); - data->GetArray(i)->Print(std::cout); - printf("EED -------------------------------------------\n"); + vtkDataArray *array=pointdata->GetArray(i); + printf(" vtkVectorsVisu::Process array name %d:<%s> size:%d\n", i, array->GetName(), array->GetSize() ); } +*/ -//EED _pdm->SetScalarRange( range ); -//EED vtkPolyData *pd = vGlyphFlowPlane->GetOutput(); -//EED vtkPointData *pointdata = pd->GetPointData(); -//EED vtkDataArray *da = pointdata->GetVectors(); -//EED vtkDataArray *nda = vtkFloatArray::New(); -//EED nda->DeepCopy(da); -// pointdata->RemoveArray( "GlyphVector" ); -// bbGetInputIn()->GetPointData()->RemoveArray( "GlyphVector" ); -//EED pointdata->AddArray( nda ); -//EED bbGetInputIn()->GetPointData()->AddArray( nda ); -//EED2 _pdm->ScalarVisibilityOn(); - _pdm->SetScalarModeToUsePointFieldData(); - _pdm->SetLookupTable( _LutEED ); - _pdm->SelectColorArray( "GlyphVector" ); // vSliceMapperVec->SetLookupTable( vGreenToRedLut ); // vSliceMapperVec->SetColorModeToMapScalars(); +#if VTK_MAJOR_VERSION <= 5 + // .. +#else + _pdm->Update(); +#endif + + // Orientation -1 3D OK + + // Orientation 0 2D yz + if (GetOrientation()==0) + { + _trans->Identity(); + _trans->Translate(900,0,0); + _actor->SetUserTransform(_trans); + } + + + // Orientation 1 2D xz + if (GetOrientation()==1) + { + _trans->Identity(); + _trans->Translate(0,-900,0); + _actor->SetUserTransform(_trans); + } + + // Orientation 2 2D xy + if (GetOrientation()==2) + { + _trans->Identity(); + _trans->Translate(0,0,-900); + _actor->SetUserTransform(_trans); + } + _actor->SetMapper( _pdm ); _actor->GetProperty()->SetOpacity( GetOpacity() ); }// if _active VisibilityActor(); -printf("EED vtkVectorsVisu::Process() end\n"); } - - - - -