From 0669db4305686c580a5af90759aac12c2ed2f4d9 Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Thu, 6 Jun 2019 11:40:53 +0200 Subject: [PATCH] #3100 creaVtk Feature New Normal - Vectors Visu refresh --- .../bbs/boxes/VectorVisuPlane_Widget.bbg | 37 +++++++- .../bbs/boxes/VectorVisuPlane_Widget.bbs | 9 ++ .../bbs/boxes/VectorsTensors_Widget.bbg | 48 +++++----- .../bbs/boxes/VectorsTensors_Widget.bbs | 2 +- .../bbcreaVtkImageDataStructuredPoints.cxx | 20 ++-- .../src/bbcreaVtkImageDataStructuredPoints.h | 28 ++++-- bbtk_creaVtk_PKG/src/bbcreaVtkPlaneSource.cxx | 13 +-- bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.cxx | 4 + bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.h | 27 +++--- lib/creaVtk/vtkImageDataStrucPoints.cpp | 88 +++++++++++------ lib/creaVtk/vtkImageDataStrucPoints.h | 4 +- lib/creaVtk/vtkVectorsTensorsVisuBase.cpp | 95 +++++++++++++------ lib/creaVtk/vtkVectorsTensorsVisuBase.h | 3 + lib/creaVtk/vtkVectorsVisu.cpp | 82 +++++++++++++--- lib/creaVtk/vtkVectorsVisu.h | 1 - 15 files changed, 329 insertions(+), 132 deletions(-) diff --git a/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbg b/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbg index d74d5f1..1ae192a 100644 --- a/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbg +++ b/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbg @@ -15,7 +15,7 @@ COMPLEX_PORT outwidget 10.147096:-179.347579:-900.000000 FIN_COMPLEX_PORT -COMPLEXINPUTS:7 +COMPLEXINPUTS:8 COMPLEX_PORT structuredpoints 118.034259:165.342792:-900.000000 @@ -44,7 +44,11 @@ COMPLEX_PORT boxExecute 136.897755:166.588357:-900.000000 FIN_COMPLEX_PORT -BOXES:22 +COMPLEX_PORT +lookuptable +-168.767355:163.699267:-900.000000 +FIN_COMPLEX_PORT +BOXES:23 BOX creaVtk:VectorsVisu_Interface:Box01 ISEXEC:FALSE @@ -197,7 +201,13 @@ ISEXEC:FALSE PORT Active:"true" FIN_BOX -CONNECTIONS:78 +BOX +std:MagicBox:Box28 +ISEXEC:FALSE +-200.365716:-1.413275:-900.000000 +-164.290716:-11.413275:-900.000000 +FIN_BOX +CONNECTIONS:85 CONNECTION Box01:widget:outwidget:outwidget NumberOfControlPoints:0 @@ -432,4 +442,25 @@ NumberOfControlPoints:0 CONNECTION Box01:active3DXY:Box16:Active NumberOfControlPoints:0 +CONNECTION +lookuptable:lookuptable:Box28:In +NumberOfControlPoints:0 +CONNECTION +Box28:Out:Box03:ExternalLut +NumberOfControlPoints:0 +CONNECTION +Box28:Out:Box04:ExternalLut +NumberOfControlPoints:0 +CONNECTION +Box28:Out:Box05:ExternalLut +NumberOfControlPoints:0 +CONNECTION +Box28:Out:Box14:ExternalLut +NumberOfControlPoints:0 +CONNECTION +Box28:Out:Box15:ExternalLut +NumberOfControlPoints:0 +CONNECTION +Box28:Out:Box16:ExternalLut +NumberOfControlPoints:0 APP_END diff --git a/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbs b/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbs index f4faa57..ff6e413 100644 --- a/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbs +++ b/bbtk_creaVtk_PKG/bbs/boxes/VectorVisuPlane_Widget.bbs @@ -71,6 +71,8 @@ new vtk:UpdateRender Box26 new vtk:UpdateRender Box27 set Box27.Active "true" +new std:MagicBox Box28 + connect Box06.vtkRenderer Box03.Renderer connect Box01.Opacity Box03.Opacity @@ -142,6 +144,12 @@ connect Box18.outvtkdataset Box05.In connect Box01.active3DYZ Box14.Active connect Box01.active3DXZ Box15.Active connect Box01.active3DXY Box16.Active +connect Box28.Out Box03.ExternalLut +connect Box28.Out Box04.ExternalLut +connect Box28.Out Box05.ExternalLut +connect Box28.Out Box14.ExternalLut +connect Box28.Out Box15.ExternalLut +connect Box28.Out Box16.ExternalLut # Complex input ports input Point Box09.In " " @@ -151,6 +159,7 @@ input vtkbaseview_3D Box20.wxVtkBaseView " " input boxExecute Box21.In " " input wxvtkbaseview2_2D Box06.wxVtkBaseView " " input wxvtkbaseview1_2D Box11.wxVtkBaseView " " +input lookuptable Box28.In " " # Complex output ports output outwidget Box01.widget " " diff --git a/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbg b/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbg index 6980d5b..f1a04f4 100644 --- a/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbg +++ b/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbg @@ -1,6 +1,6 @@ # ---------------------------------- # - BBTKGEditor v 1.4 BBG BlackBox Diagram file -# - VectorsTensors_Widget.bbg +# - /home/davila/Creatis/C8/creatools_source/creaVtk/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbg # ---------------------------------- APP_START @@ -13,7 +13,7 @@ PACKAGENAME:creaVtk COMPLEXOUTPUTS:1 COMPLEX_PORT widget --87.086702:-131.675720:-900.000000 +-133.205566:-215.108938:-900.000000 FIN_COMPLEX_PORT COMPLEXINPUTS:3 COMPLEX_PORT @@ -32,24 +32,24 @@ BOXES:14 BOX vtk:UpdateRender:Box22 ISEXEC:FALSE -112.874685:-20.808003:-900.000000 -158.449685:-30.808003:-900.000000 +91.911565:-119.753930:-900.000000 +132.236565:-129.753930:-900.000000 PORT Active:"true" FIN_BOX BOX wx:LayoutTab:Box17 ISEXEC:FALSE --89.942511:-71.713124:-900.000000 --44.367511:-81.713124:-900.000000 +-148.219985:-138.795108:-900.000000 +-90.659985:-148.795108:-900.000000 PORT WinTitle:"VectorsTensors Analysis" FIN_BOX BOX std:MultipleInputs:Box23 ISEXEC:FALSE -76.506639:18.351379:-900.000000 -122.081639:8.351379:-900.000000 +32.484087:-86.883484:-900.000000 +72.184087:-96.883484:-900.000000 PORT BoxProcessMode:"Reactive" FIN_BOX @@ -57,13 +57,13 @@ BOX creaVtk:PlaneVectorVisu_Widget:Box41 ISEXEC:FALSE -290.289955:71.849699:-900.000000 --202.478965:61.849699:-900.000000 +-240.339955:61.849699:-900.000000 FIN_BOX BOX wx:LayoutLine:Box14 ISEXEC:FALSE --231.090102:-2.949602:-900.000000 --136.464715:-12.949602:-900.000000 +-249.537648:23.883192:-900.000000 +-191.977648:13.883192:-900.000000 PORT WinTitle:"Field" FIN_BOX @@ -71,13 +71,13 @@ BOX creaVtk:VolumeVectorVisu_Widget:Box18 ISEXEC:FALSE -214.258652:71.383715:-900.000000 --143.083652:61.383715:-900.000000 +-162.208652:61.383715:-900.000000 FIN_BOX BOX wx:LayoutLine:Box16 ISEXEC:FALSE --40.899412:-16.748818:-900.000000 -4.675588:-26.748818:-900.000000 +-107.142871:-103.536135:-900.000000 +-49.582871:-113.536135:-900.000000 PORT WinTitle:"Tensors" FIN_BOX @@ -85,43 +85,43 @@ BOX creaVtk:VolumeTensorVisu_Widget:Box19 ISEXEC:FALSE 60.863865:72.033730:-900.000000 -132.038865:62.033730:-900.000000 +112.563865:62.033730:-900.000000 FIN_BOX BOX creaVtk:PlaneTensorVisu_Widget:Box21 ISEXEC:FALSE --19.798384:71.186398:-900.000000 -51.376616:61.186398:-900.000000 +-17.702072:72.444185:-900.000000 +31.897928:62.444185:-900.000000 FIN_BOX BOX creaVtk:PlaneWidget_StreamLineVisu_Widget:Box30 ISEXEC:FALSE --128.471084:73.231403:-900.000000 --57.296084:63.231403:-900.000000 +-156.561665:28.789589:-900.000000 +-94.686665:18.789589:-900.000000 FIN_BOX BOX vtk:vtkImageDataPointerRelay:Box26 ISEXEC:FALSE -208.540015:141.393307:-900.000000 --137.365015:131.393307:-900.000000 +-154.090517:131.393307:-900.000000 FIN_BOX BOX vtk:vtkImageDataPointerRelay:Box27 ISEXEC:FALSE -89.314298:137.998626:-900.000000 --18.139298:127.998626:-900.000000 +-37.139298:127.998626:-900.000000 FIN_BOX BOX std:MagicBox:Box28 ISEXEC:FALSE 123.517825:137.982960:-900.000000 -169.092825:127.982960:-900.000000 +159.592825:127.982960:-900.000000 FIN_BOX BOX wx:LayoutTab:Box29 ISEXEC:FALSE --199.996601:-45.212305:-900.000000 --126.846139:-55.212305:-900.000000 +-175.679382:-102.651254:-900.000000 +-118.119382:-112.651254:-900.000000 PORT WinTitle:"Vectors" FIN_BOX diff --git a/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbs b/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbs index 1187f71..8117a50 100644 --- a/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbs +++ b/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbs @@ -1,6 +1,6 @@ # ---------------------------------- # - BBTKGEditor v 1.4 BBS BlackBox Script (Complex Box) -# - VectorsTensors_Widget.bbs +# - /home/davila/Creatis/C8/creatools_source/creaVtk/bbtk_creaVtk_PKG/bbs/boxes/VectorsTensors_Widget.bbs # ---------------------------------- include std diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.cxx index 20c25c7..b8e8f8e 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.cxx +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.cxx @@ -13,22 +13,26 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ImageDataStructuredPoints,bbtk::AtomicBlackBox); //===== void ImageDataStructuredPoints::Process() { - vtkImageData* imageX = bbGetInputX(); - vtkImageData* imageY = bbGetInputY(); - vtkImageData* imageZ = bbGetInputZ(); - vtkImageDataStrucPoints idsp; - - idsp.joinComponents(imageX, imageY, imageZ); + idsp.joinComponents(bbGetInputX(), bbGetInputY(), bbGetInputZ(), + bbGetInputData1(), bbGetInputData2(), bbGetInputData3(), + bbGetInputData4(), bbGetInputData5(), bbGetInputData6() ); bbSetOutputImageEnsemble( idsp.getStructuredPoints() ); - } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== void ImageDataStructuredPoints::bbUserSetDefaultValues() { - + bbSetInputX(NULL); + bbSetInputY(NULL); + bbSetInputZ(NULL); + bbSetInputData1(NULL); + bbSetInputData2(NULL); + bbSetInputData3(NULL); + bbSetInputData4(NULL); + bbSetInputData5(NULL); + bbSetInputData6(NULL); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.h b/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.h index c679b52..4e30e62 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.h +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkImageDataStructuredPoints.h @@ -24,6 +24,12 @@ class bbcreaVtk_EXPORT ImageDataStructuredPoints BBTK_DECLARE_INPUT(X, vtkImageData*); BBTK_DECLARE_INPUT(Y, vtkImageData*); BBTK_DECLARE_INPUT(Z, vtkImageData*); + BBTK_DECLARE_INPUT(Data1, vtkImageData*); + BBTK_DECLARE_INPUT(Data2, vtkImageData*); + BBTK_DECLARE_INPUT(Data3, vtkImageData*); + BBTK_DECLARE_INPUT(Data4, vtkImageData*); + BBTK_DECLARE_INPUT(Data5, vtkImageData*); + BBTK_DECLARE_INPUT(Data6, vtkImageData*); BBTK_DECLARE_OUTPUT(ImageEnsemble, vtkImageData*); BBTK_PROCESS(Process); void Process(); @@ -33,14 +39,20 @@ class bbcreaVtk_EXPORT ImageDataStructuredPoints }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(ImageDataStructuredPoints,bbtk::AtomicBlackBox); -BBTK_NAME("ImageDataStructuredPoints"); -BBTK_AUTHOR("Carlos Torres"); -BBTK_DESCRIPTION("No Description."); -BBTK_CATEGORY("empty"); -BBTK_INPUT(ImageDataStructuredPoints,X,"Image X",vtkImageData*,""); -BBTK_INPUT(ImageDataStructuredPoints,Y,"Image Y",vtkImageData*,""); -BBTK_INPUT(ImageDataStructuredPoints,Z,"Image Z",vtkImageData*,""); -BBTK_OUTPUT(ImageDataStructuredPoints,ImageEnsemble,"Image Ensemble",vtkImageData*,""); + BBTK_NAME("ImageDataStructuredPoints"); + BBTK_AUTHOR("Carlos Torres"); + BBTK_DESCRIPTION("No Description."); + BBTK_CATEGORY("empty"); + BBTK_INPUT(ImageDataStructuredPoints,X,"Image X",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Y,"Image Y",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Z,"Image Z",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Data1,"You need: No Data or Data1 or Data1..3 or Data1..6",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Data2,"You need: No Data or Data1 or Data1..3 or Data1..6",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Data3,"You need: No Data or Data1 or Data1..3 or Data1..6",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Data4,"You need: No Data or Data1 or Data1..3 or Data1..6",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Data5,"You need: No Data or Data1 or Data1..3 or Data1..6",vtkImageData*,""); + BBTK_INPUT(ImageDataStructuredPoints,Data6,"You need: No Data or Data1 or Data1..3 or Data1..6",vtkImageData*,""); + BBTK_OUTPUT(ImageDataStructuredPoints,ImageEnsemble,"Image Ensemble",vtkImageData*,""); BBTK_END_DESCRIBE_BLACK_BOX(ImageDataStructuredPoints); //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkPlaneSource.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkPlaneSource.cxx index aa0b1f8..14fbab9 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkPlaneSource.cxx +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkPlaneSource.cxx @@ -29,38 +29,39 @@ void PlaneSource::Process() p0[1] = 0; p0[2] = 0; + double size=350; // xy if ((bbGetInputNormal()[0]==0) && (bbGetInputNormal()[1]==0) && (bbGetInputNormal()[2]==1) ) { - p1[0] = 200; + p1[0] = size; p1[1] = 0; p1[2] = 0; p2[0] = 0; - p2[1] = 200; + p2[1] = size; p2[2] = 0; } // xz if ((bbGetInputNormal()[0]==0) && (bbGetInputNormal()[1]==1) && (bbGetInputNormal()[2]==0) ) { - p1[0] = 200; + p1[0] = size; p1[1] = 0; p1[2] = 0; p2[0] = 0; p2[1] = 0; - p2[2] = 200; + p2[2] = size; } // yz if ((bbGetInputNormal()[0]==1) && (bbGetInputNormal()[1]==0) && (bbGetInputNormal()[2]==0) ) { p1[0] = 0; - p1[1] = 200; + p1[1] = size; p1[2] = 0; p2[0] = 0; p2[1] = 0; - p2[2] = 200; + p2[2] = size; } diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.cxx index 783fe64..a0d8fdd 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.cxx +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.cxx @@ -26,6 +26,7 @@ void VectorsVisu::Process() // * TYPE is the C++ type of the input/output // (the one provided in the attribute 'type' of the tag 'input') +printf("EED VectorsVisu::Process Start \n"); vectorsvisu.SetActive( bbGetInputActive() ); vectorsvisu.SetDataObject( bbGetInputIn() ); vectorsvisu.SetScaleFactor( bbGetInputScaleFactor() ); @@ -33,8 +34,10 @@ void VectorsVisu::Process() vectorsvisu.SetRenderer( bbGetInputRenderer() ); vectorsvisu.SetTypeForm( bbGetInputTypeForm() ); vectorsvisu.SetOrientation( bbGetInputOrientation() ); + vectorsvisu.SetExternalLut( bbGetInputExternalLut() ); vectorsvisu.Process(); bbSetOutputOut( vectorsvisu.GetProp3D() ); +printf("EED VectorsVisu::Process End \n"); } //===== @@ -53,6 +56,7 @@ void VectorsVisu::bbUserSetDefaultValues() bbSetInputOpacity(1); bbSetInputTypeForm(0); bbSetInputOrientation(0); + bbSetInputExternalLut(NULL); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.h b/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.h index 9a64671..14b1e56 100644 --- a/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.h +++ b/bbtk_creaVtk_PKG/src/bbcreaVtkVectorsVisu.h @@ -9,6 +9,7 @@ #include "vtkRenderer.h" #include "vtkDataObject.h" +#include "vtkScalarsToColors.h" #include "vtkVectorsVisu.h" @@ -30,6 +31,7 @@ class bbcreaVtk_EXPORT VectorsVisu BBTK_DECLARE_INPUT(Opacity,double); BBTK_DECLARE_INPUT(TypeForm,int); BBTK_DECLARE_INPUT(Orientation,int); + BBTK_DECLARE_INPUT(ExternalLut,vtkScalarsToColors*); BBTK_DECLARE_OUTPUT(Out,vtkProp3D*); BBTK_PROCESS(Process); void Process(); @@ -43,18 +45,19 @@ private: }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(VectorsVisu,bbtk::AtomicBlackBox); -BBTK_NAME("VectorsVisu"); -BBTK_AUTHOR("ED at InfoDev Creatis"); -BBTK_DESCRIPTION("No Description."); -BBTK_CATEGORY("empty"); - BBTK_INPUT(VectorsVisu,Active,"Active (false default)",bool,""); - BBTK_INPUT(VectorsVisu,In,"(needed) vtkDataObject. (Example vtkDataObject<-vtkDataSet<-vtkPointSet<-vtkPolyData (parrent class) )",vtkDataObject*,""); - BBTK_INPUT(VectorsVisu,ScaleFactor,"Scale factor (500 default)",double,""); - BBTK_INPUT(VectorsVisu,Opacity,"Opacity (1 default)",double,""); - BBTK_INPUT(VectorsVisu,Renderer,"vtkRenderer",vtkRenderer*,""); - BBTK_INPUT(VectorsVisu,TypeForm,"0 Line, 1 Arrow (default 0)",int,""); - BBTK_INPUT(VectorsVisu,Orientation,"(default 5) -1=xy, 0=yz, 1=yz, 2=xz, 5=3D, 6=3D",int,""); - BBTK_OUTPUT(VectorsVisu,Out,"vtkProp3D of an vtkActor",vtkProp3D*,""); + BBTK_NAME("VectorsVisu"); + BBTK_AUTHOR("ED at InfoDev Creatis"); + BBTK_DESCRIPTION("No Description."); + BBTK_CATEGORY("empty"); + BBTK_INPUT(VectorsVisu,Active,"Active (false default)",bool,""); + BBTK_INPUT(VectorsVisu,In,"(needed) vtkDataObject. (Example vtkDataObject<-vtkDataSet<-vtkPointSet<-vtkPolyData (parrent class) )",vtkDataObject*,""); + BBTK_INPUT(VectorsVisu,ScaleFactor,"Scale factor (500 default)",double,""); + BBTK_INPUT(VectorsVisu,Opacity,"Opacity (1 default)",double,""); + BBTK_INPUT(VectorsVisu,Renderer,"vtkRenderer",vtkRenderer*,""); + BBTK_INPUT(VectorsVisu,TypeForm,"0 Line, 1 Arrow (default 0)",int,""); + BBTK_INPUT(VectorsVisu,Orientation,"(default 5) -1=xy, 0=yz, 1=yz, 2=xz, 5=3D, 6=3D",int,""); + BBTK_INPUT(VectorsVisu,ExternalLut,"Lookuptable",vtkScalarsToColors*,""); + BBTK_OUTPUT(VectorsVisu,Out,"vtkProp3D of an vtkActor",vtkProp3D*,""); BBTK_END_DESCRIBE_BLACK_BOX(VectorsVisu); //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/lib/creaVtk/vtkImageDataStrucPoints.cpp b/lib/creaVtk/vtkImageDataStrucPoints.cpp index b06c5f2..426d760 100644 --- a/lib/creaVtk/vtkImageDataStrucPoints.cpp +++ b/lib/creaVtk/vtkImageDataStrucPoints.cpp @@ -36,8 +36,13 @@ vtkImageDataStrucPoints::vtkImageDataStrucPoints() vtkImageDataStrucPoints::~vtkImageDataStrucPoints() { } -void vtkImageDataStrucPoints::joinComponents(vtkImageData* imageX, vtkImageData* imageY, vtkImageData* imageZ) + +void vtkImageDataStrucPoints::joinComponents(vtkImageData* imageX, vtkImageData* imageY, vtkImageData* imageZ, + vtkImageData* Data1, vtkImageData* Data2, vtkImageData* Data3 , + vtkImageData* Data4, vtkImageData* Data5, vtkImageData* Data6 ) { +printf("EED vtkImageDataStrucPoints::joinComponents Start \n"); + int ext[6]; imageY->Modified(); //EED 2017-01-01 Migration VTK7 @@ -53,35 +58,60 @@ void vtkImageDataStrucPoints::joinComponents(vtkImageData* imageX, vtkImageData* dim[1]=ext[3]-ext[2]+1; dim[2]=ext[5]-ext[4]+1; imageY->GetSpacing(spc); - - - double *ptrX = (double *)imageX->GetScalarPointer(); - double *ptrY = (double *)imageY->GetScalarPointer(); - double *ptrZ = (double *)imageZ->GetScalarPointer(); - - long int sizeimage = dim[0]*dim[1]*dim[2]; - - vtkDoubleArray *array = vtkDoubleArray::New(); - array->SetNumberOfTuples(sizeimage); - array->SetNumberOfComponents(3); - array->Allocate(sizeimage*3, 100 ); // ??? - array->SetName("velocity"); - - double vx; - double vy; - double vz; - - int i; - + double *ptrX=NULL, *ptrY=NULL, *ptrZ=NULL; + double *ptrD1=NULL, *ptrD2=NULL, *ptrD3=NULL, *ptrD4=NULL, *ptrD5=NULL, *ptrD6=NULL; + + if (imageX!=NULL) ptrX = (double *)imageX->GetScalarPointer(); + if (imageY!=NULL) ptrY = (double *)imageY->GetScalarPointer(); + if (imageZ!=NULL) ptrZ = (double *)imageZ->GetScalarPointer(); + if (Data1 !=NULL) ptrD1 = (double *)Data1->GetScalarPointer(); + if (Data2 !=NULL) ptrD2 = (double *)Data2->GetScalarPointer(); + if (Data3 !=NULL) ptrD3 = (double *)Data3->GetScalarPointer(); + if (Data4 !=NULL) ptrD4 = (double *)Data4->GetScalarPointer(); + if (Data5 !=NULL) ptrD5 = (double *)Data5->GetScalarPointer(); + if (Data6 !=NULL) ptrD6 = (double *)Data6->GetScalarPointer(); + + long int sizeimage = dim[0]*dim[1]*dim[2]; + int components=3; +// if ((Data1!=NULL) && (Data2==NULL) && (Data3==NULL) && (Data4==NULL) && (Data5==NULL) && (Data6==NULL) ) { components=4; } +// if ((Data1!=NULL) && (Data2!=NULL) && (Data3!=NULL) && (Data4==NULL) && (Data5==NULL) && (Data6==NULL) ) { components=6; } +// if ((Data1!=NULL) && (Data2!=NULL) && (Data3!=NULL) && (Data4!=NULL) && (Data5!=NULL) && (Data6!=NULL) ) { components=9; } + vtkDoubleArray *array = vtkDoubleArray::New(); + array->SetNumberOfTuples(sizeimage); + array->SetNumberOfComponents(components); + array->Allocate(sizeimage*components, 100 ); // ??? + array->SetName("velocity"); + + vtkDoubleArray *array2 = vtkDoubleArray::New(); + array2->SetNumberOfTuples(sizeimage); + array2->SetNumberOfComponents(1); + array2->Allocate(sizeimage*1, 100 ); // ??? + array2->SetName("angle"); + +printf("EED Warnning .... vtkImageDataStrucPoints::joinComponents Limpiar este codigo ........ \n"); +printf("EED Warnning .... vtkImageDataStrucPoints::joinComponents Limpiar este codigo ........ \n"); +printf("EED Warnning .... vtkImageDataStrucPoints::joinComponents Limpiar este codigo ........ \n"); +printf("EED Warnning .... vtkImageDataStrucPoints::joinComponents Limpiar este codigo ........ \n"); +printf("EED Warnning .... vtkImageDataStrucPoints::joinComponents Limpiar este codigo ........ \n"); +printf("EED Warnning .... vtkImageDataStrucPoints::joinComponents Limpiar este codigo ........ \n"); + + double vx,vy,vz,d1=0,d2=0,d3=0,d4=0,d5=0,d6=0; + int i; for( i = 0 ; i < sizeimage ; i++ ) { - vx = *ptrX; - vy = *ptrY; - vz = *ptrZ; - ptrX++; - ptrY++; - ptrZ++; - array->SetTuple3(i,vx, vy , vz ); + if (ptrX !=NULL) { vx = *ptrX; ptrX++; } else { vx=0; } + if (ptrY !=NULL) { vy = *ptrY; ptrY++; } else { vy=0; } + if (ptrZ !=NULL) { vz = *ptrZ; ptrZ++; } else { vz=0; } + if (ptrD1!=NULL) { d1 = *ptrD1; ptrD1++;} + if (ptrD2!=NULL) { d2 = *ptrD2; ptrD2++;} + if (ptrD3!=NULL) { d3 = *ptrD3; ptrD3++;} + if (ptrD4!=NULL) { d4 = *ptrD4; ptrD4++;} + + if (components==3) { array->SetTuple3(i,vx,vy,vz); } + if (components==3) { array2->SetTuple1(i,d1); } +// if (components==4) { array->SetTuple4(i,vx,vy,vz,d1); } +// if (components==6) { array->SetTuple6(i,vx,vy,vz,d1,d2,d3); } +// if (components==9) { array->SetTuple9(i,vx,vy,vz,d1,d2,d3,d4,d5,d6); } } // for i _structuredPoints = vtkStructuredPoints::New(); @@ -99,6 +129,7 @@ void vtkImageDataStrucPoints::joinComponents(vtkImageData* imageX, vtkImageData* #endif _structuredPoints->GetPointData()->SetVectors(array); + _structuredPoints->GetPointData()->AddArray(array2); _structuredPoints->GetPointData()->SetNumberOfTuples(sizeimage); _structuredPoints->Modified(); //EED 2017-01-01 Migration VTK7 @@ -122,6 +153,7 @@ void vtkImageDataStrucPoints::joinComponents(vtkImageData* imageX, vtkImageData* */ +printf("EED vtkImageDataStrucPoints::joinComponents End\n"); } diff --git a/lib/creaVtk/vtkImageDataStrucPoints.h b/lib/creaVtk/vtkImageDataStrucPoints.h index d5dd52c..e7642e9 100644 --- a/lib/creaVtk/vtkImageDataStrucPoints.h +++ b/lib/creaVtk/vtkImageDataStrucPoints.h @@ -39,7 +39,9 @@ class vtkImageDataStrucPoints public : vtkImageDataStrucPoints(); ~vtkImageDataStrucPoints(); - void joinComponents(vtkImageData* imageX, vtkImageData* imageY, vtkImageData* imageZ); + void joinComponents(vtkImageData* imageX, vtkImageData* imageY, vtkImageData* imageZ, + vtkImageData* Data1, vtkImageData* Data2, vtkImageData* Data3, + vtkImageData* Data4 , vtkImageData* Data5 , vtkImageData* Data6 ); vtkStructuredPoints* getStructuredPoints(); vtkStructuredPoints* _structuredPoints; diff --git a/lib/creaVtk/vtkVectorsTensorsVisuBase.cpp b/lib/creaVtk/vtkVectorsTensorsVisuBase.cpp index 8da1d1a..3c1addc 100644 --- a/lib/creaVtk/vtkVectorsTensorsVisuBase.cpp +++ b/lib/creaVtk/vtkVectorsTensorsVisuBase.cpp @@ -108,38 +108,71 @@ void vtkLookupTableMapDirVectorEED(vtkLookupTableDirectionVector *self, T *input // double *mag; int i, j; double dirx,diry,dirz; - - -inIncr=3; -// printf("EED length %d %p\n", length,input); + double angle; + + printf("EED vtkLookupTableMapDirVectorEED inIncr=%d \n", inIncr); + + // mag = new double[length]; for (i = 0; i < length; ++i) { - dirx = 0; - diry = 0; - dirz = 0; - sum = 0; - for (j = 0; j < inIncr; ++j) - { - if (j==0) dirx= static_cast(*input); - if (j==1) diry= static_cast(*input); - if (j==2) dirz= static_cast(*input); - tmp = static_cast(*input); - sum += (tmp * tmp); - ++input; - } - sum=sqrt(sum); - *output++ = (unsigned char) abs( (255*dirx/sum) ); - *output++ = (unsigned char) abs( (255*diry/sum) ); - *output++ = (unsigned char) abs( (255*dirz/sum) ); - *output++ = 255; -// printf("%d %d %d ",(int)(255*dirx/sum),(int)(255*diry/sum),(int)(255*dirz/sum)); -// printf(" C %d %f %f %f \n",inIncr,dirx,diry,dirz); - } + + + if (1==1){ + dirx = static_cast(input[0]); + diry = static_cast(input[1]); + dirz = static_cast(input[2]); + input = input+inIncr; + sum = sqrt( dirx*dirx + diry*diry + dirz*dirz ); + + /* + dirx = 0; + diry = 0; + dirz = 0; + sum = 0; + for (j = 0; j < inIncr; ++j) + { + if (j==0) dirx= static_cast(*input); + if (j==1) diry= static_cast(*input); + if (j==2) dirz= static_cast(*input); + tmp = static_cast(*input); + sum += (tmp * tmp); + ++input; + } + sum=sqrt(sum); + */ + + *output++ = (unsigned char) abs( (255*dirx/sum) ); + *output++ = (unsigned char) abs( (255*diry/sum) ); + *output++ = (unsigned char) abs( (255*dirz/sum) ); + *output++ = 255; + // printf("%d %d %d ",(int)(255*dirx/sum),(int)(255*diry/sum),(int)(255*dirz/sum)); + // printf(" C %d %f %f %f \n",inIncr,dirx,diry,dirz); + + } // type 1 color vector by direction + + + if (2==0){ + angle = static_cast(input[0]); + input = input+inIncr; + + *output++ = (unsigned char) abs( 255*angle/90 ); + *output++ = (unsigned char) abs( 0 ); + *output++ = (unsigned char) abs( 0 ); + *output++ = 255; + // printf("%d %d %d ",(int)(255*dirx/sum),(int)(255*diry/sum),(int)(255*dirz/sum)); + // printf(" C %d %f %f %f \n",inIncr,dirx,diry,dirz); + + }// type 2 color vector by scalar + + } // for + // vtkLookupTableMapData(self, mag, output, length, 1, outFormat); // delete [] mag; + + } @@ -151,7 +184,7 @@ void vtkLookupTableDirectionVector::MapScalarsThroughTable2(void *input, int inputIncrement, int outputFormat) { -// printf("vtkLookupTableEED::MapScalarsThroughTable2 inputIncrement=%d inputDataType=%d\n",inputIncrement,inputDataType); + printf("vtkLookupTableEED::MapScalarsThroughTable2 \n"); // if (this->UseMagnitude && inputIncrement > 1) // { switch (inputDataType) @@ -196,7 +229,8 @@ vtkVectorsTensorsVisuBase::vtkVectorsTensorsVisuBase() _typeForm = 0; _orientation = 0; - _LutEED = vtkLookupTableDirectionVector::New(); + _LutEED = vtkLookupTableDirectionVector::New(); + _externalLut = NULL; //_LutEED->SetVectorMode(0); //_LutEED->SetVectorModeToMagnitude(); //_LutEED->SetVectorModeToComponent(); @@ -351,4 +385,11 @@ int vtkVectorsTensorsVisuBase::GetOrientation() return _orientation; } +//------------------------------------------------------------------------------ +void vtkVectorsTensorsVisuBase::SetExternalLut(vtkScalarsToColors* lut) +{ +printf("EED vtkVectorsTensorsVisuBase::SetExternalLut C ptrlut %p this:%p\n",lut, this); + _externalLut=lut; +printf("EED vtkVectorsTensorsVisuBase::SetExternalLut D ptrlut %p \n",_externalLut); +} diff --git a/lib/creaVtk/vtkVectorsTensorsVisuBase.h b/lib/creaVtk/vtkVectorsTensorsVisuBase.h index f229542..7d08c22 100644 --- a/lib/creaVtk/vtkVectorsTensorsVisuBase.h +++ b/lib/creaVtk/vtkVectorsTensorsVisuBase.h @@ -97,6 +97,7 @@ public : void SetColorLaw(int); void SetColor(std::vector); void SetOrientation(int orientation); + void SetExternalLut(vtkScalarsToColors* lut); bool GetActive(); vtkDataObject* GetDataObject(); @@ -136,6 +137,8 @@ protected: vtkSmartPointer _pdm; vtkSmartPointer _actor; vtkLookupTableDirectionVector *_LutEED; + vtkScalarsToColors *_externalLut; // lookuptable + int _colorlaw; double _colorR,_colorG,_colorB; }; diff --git a/lib/creaVtk/vtkVectorsVisu.cpp b/lib/creaVtk/vtkVectorsVisu.cpp index 2b4128d..88eb4d2 100644 --- a/lib/creaVtk/vtkVectorsVisu.cpp +++ b/lib/creaVtk/vtkVectorsVisu.cpp @@ -31,7 +31,9 @@ //Borrame #include "vtkPointData.h" - +#include "vtkArrayData.h" +#include "vtkDataObject.h" +#include //------------------------------------------------------------------------------ vtkVectorsVisu::vtkVectorsVisu() @@ -101,7 +103,15 @@ void vtkVectorsVisu::Process() #endif } _vtkglyph->SetScaleModeToScaleByVector(); - _vtkglyph->SetColorModeToColorByVector(); + + + if (_externalLut==NULL) + { + _vtkglyph->SetColorModeToColorByVector(); + } else { + _vtkglyph->SetColorModeToColorByScalar(); + } // if _externalLut + _vtkglyph->SetScaleFactor( GetScaleFactor() ); _vtkglyph->Update(); @@ -122,20 +132,66 @@ vtkPointData *data = _vtkglyph->GetOutput()->GetPointData(); // data->GetArray(i)->Print(std::cout); //} - _pdm->ScalarVisibilityOn(); - _pdm->SetColorModeToMapScalars(); - //_pdm->SetColorModeToDefault(); - // _pdm->SetColorModeToDirectScalars(); // NOT compile - _pdm->SetScalarModeToUsePointFieldData(); - _pdm->ImmediateModeRenderingOn(); - - _LutEED->SetVectorModeToComponent(); - //_LutEED->SetVectorModeToRGBColors(); - //_LutEED->SetVectorModeToMagnitud(); -// _pdm->SetScalarModeToUsePointFieldData(); + if (_externalLut==NULL) + { +printf("EED vtkVectorsVisu::Process LutEED \n"); + _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 { +printf("EED vtkVectorsVisu::Process ExternalLut \n"); + 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;iGetArray(i); + printf(" vtkVectorsVisu::Process array name %d:<%s> size:%d\n", i, array->GetName(), array->GetSize() ); +} + + // vSliceMapperVec->SetLookupTable( vGreenToRedLut ); // vSliceMapperVec->SetColorModeToMapScalars(); diff --git a/lib/creaVtk/vtkVectorsVisu.h b/lib/creaVtk/vtkVectorsVisu.h index 719cdc1..ff5547a 100644 --- a/lib/creaVtk/vtkVectorsVisu.h +++ b/lib/creaVtk/vtkVectorsVisu.h @@ -55,7 +55,6 @@ public : virtual void Process(); - //--Method template---------------------------- // void FunctionName(int& parameterA); -- 2.45.1