X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbcreaMaracasVisuTubeTreeFilter.cxx;h=bb4e3c23071fb7ddd6c22f86537db2b023963673;hb=2a1cde86bf45b8f9b11514a9b04d5834b10af209;hp=94f13067779bf29f81ec55ec28cac04af869748f;hpb=e4ef2b5df5aac431ff3b806f83b7dd5e55e89d86;p=creaMaracasVisu.git diff --git a/bbtk/src/bbcreaMaracasVisuTubeTreeFilter.cxx b/bbtk/src/bbcreaMaracasVisuTubeTreeFilter.cxx index 94f1306..bb4e3c2 100644 --- a/bbtk/src/bbcreaMaracasVisuTubeTreeFilter.cxx +++ b/bbtk/src/bbcreaMaracasVisuTubeTreeFilter.cxx @@ -34,7 +34,6 @@ #include #include #include -#include #include "vtkObjectFactory.h" @@ -215,6 +214,49 @@ BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,TubeTreeFilter) BBTK_BLACK_BOX_IMPLEMENTATION(TubeTreeFilter,bbtk::AtomicBlackBox); +void TubeTreeFilter::SetRadioTube(int iGeneral,int numPoints, int iTube) +{ + int i; + double radiotmp=1; + int size=iGeneral+numPoints; + vtkDoubleArray *tubeRadius = vecTubeRadiosArray[iTube]; + + if (bbGetInputlstRadio().size()>=1) + { + if (bbGetInputlstRadioLaw()==0) // for All + { + radiotmp=bbGetInputlstRadio()[0]; + } // Law 0 for All + + if (bbGetInputlstRadioLaw()==1) // by segment + { + if (bbGetInputlstRadio().size()>=iTube) + { + radiotmp=bbGetInputlstRadio()[iTube]; + } else { + radiotmp=bbGetInputlstRadio()[ bbGetInputlstRadio().size()-1 ]; + } + } // Law 1 by segment + + for (i=iGeneral;i=i) + { + radiotmp=bbGetInputlstRadio()[i]; + } else { + radiotmp=bbGetInputlstRadio()[ bbGetInputlstRadio().size()-1 ]; + } + } // Law 2 by points + tubeRadius->SetTuple1(i-iGeneral, radiotmp ); + } // for + tubeRadius->Modified(); + } // bbGetInputlstRadio().size()>=1 + + +} + void TubeTreeFilter::DrawOneTube(int iGeneral,int numPoints, int iTube) { @@ -256,47 +298,24 @@ void TubeTreeFilter::DrawOneTube(int iGeneral,int numPoints, int iTube) //EED vtkDoubleArray *tubeRadius = vtkDoubleArray::New(); tubeRadius->SetName("TubeRadius"); tubeRadius->SetNumberOfTuples( numPoints ); - for (i=iGeneral;iSetTuple1(i-iGeneral, bbGetInputlstRadio()[i] ); - } + vecTubeRadiosArray.push_back( tubeRadius ); + + polyData->GetPointData()->AddArray(tubeRadius); polyData->GetPointData()->SetActiveScalars("TubeRadius"); -// Adding spheres at the start and end of the tube - - // Sphere start - i=iGeneral; - vtkSphereSource *vtksphereStart = vtkSphereSource::New(); - vtksphereStart->SetThetaResolution (10); - vtksphereStart->SetPhiResolution (10); - vtksphereStart->SetRadius( bbGetInputlstRadio()[i] ); - vtkPolyDataMapper *sphereMapperStart = vtkPolyDataMapper::New(); - sphereMapperStart->SetInput( vtksphereStart->GetOutput() ); - vtkActor *sphereActorStart = vtkActor::New(); - sphereActorStart->SetMapper(sphereMapperStart); - sphereActorStart->SetOrigin( 0,0,0 ); - sphereActorStart->SetPosition(bbGetInputlstPointX()[i]*spc[0], bbGetInputlstPointY()[i]*spc[1], bbGetInputlstPointZ()[i]*spc[2] ); - - // Sphere end - i=size-1; - vtkSphereSource *vtksphereEnd = vtkSphereSource::New(); - vtksphereEnd->SetThetaResolution (10); - vtksphereEnd->SetPhiResolution (10); - vtksphereEnd->SetRadius( bbGetInputlstRadio()[i] ); - vtkPolyDataMapper *sphereMapperEnd = vtkPolyDataMapper::New(); - sphereMapperEnd->SetInput( vtksphereEnd->GetOutput() ); - vtkActor *sphereActorEnd = vtkActor::New(); - sphereActorEnd->SetMapper(sphereMapperEnd); - sphereActorEnd->SetOrigin( 0,0,0 ); - sphereActorEnd->SetPosition(bbGetInputlstPointX()[i]*spc[0], bbGetInputlstPointY()[i]*spc[1], bbGetInputlstPointZ()[i]*spc[2] ); - vtkSmartPointer tube = vtkSmartPointer::New(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 tube->SetInput(polyData); +#else + tube->SetInputData(polyData); +#endif tube->SetNumberOfSides(nTv); tube->SetVaryRadiusToVaryRadiusByAbsoluteScalar(); + tube->CappingOn(); vtkLookupTableEED* vLutEED = vtkLookupTableEED::New(); @@ -314,27 +333,23 @@ void TubeTreeFilter::DrawOneTube(int iGeneral,int numPoints, int iTube) actor->SetMapper(mapper); vecVtkActors.push_back( actor ); - vecVtkActors.push_back( sphereActorEnd ); - vecVtkActors.push_back( sphereActorStart ); // Interface Update // Interface Update if (bbGetInputRenderer()!=NULL ) { bbGetInputRenderer()->AddActor( actor ); - bbGetInputRenderer()->AddActor( sphereActorStart ); - bbGetInputRenderer()->AddActor( sphereActorEnd ); } } void TubeTreeFilter::SetGraphicProperties() { - int iTube,sizeLstAxis=bbGetInputlstIndexs().size(); + int iTube,sizeLstAxis=bbGetInputlstIndexs().size(); - vtkActor *actorTube; - vtkActor *actorSpherEnd; - vtkActor *actorSpherStart; + int iGeneral=0; + int numPoints; + vtkActor *actorTube; double r,g,b; r = bbGetInputColour()[0]; @@ -343,23 +358,19 @@ void TubeTreeFilter::SetGraphicProperties() for (iTube=0 ; iTubeGetProperty()->SetOpacity( bbGetInputOpacity() ); - actorSpherEnd->GetProperty()->SetOpacity( bbGetInputOpacity() ); - actorSpherStart->GetProperty()->SetOpacity( bbGetInputOpacity() ); - //Set Colour + // Set Transform if ( bbGetInputTransform()!=NULL ) { actorTube->SetUserTransform( bbGetInputTransform() ); - actorSpherEnd->SetUserTransform( bbGetInputTransform() ); - actorSpherStart->SetUserTransform( bbGetInputTransform() ); } + //Set Colour if (bbGetInputColourLaw()==1) // One solide colour { // @@ -380,8 +391,13 @@ void TubeTreeFilter::SetGraphicProperties() } actorTube->GetProperty()->SetColor( r,g,b ); - actorSpherEnd->GetProperty()->SetColor( r,g,b ); - actorSpherStart->GetProperty()->SetColor( r,g,b ); + + +// Setting radio + numPoints = bbGetInputlstIndexs()[iTube]; + SetRadioTube(iGeneral,numPoints,iTube); + iGeneral = iGeneral+numPoints; + } // for } @@ -415,6 +431,7 @@ void TubeTreeFilter::Process() //EED vecVtkPolyData.clear(); //EED vecVtkPolyDataMaper.clear(); vecVtkActors.clear(); + vecTubeRadiosArray.clear(); for ( iTube=0 ; iTube radio; + radio.push_back(1); + bbSetInputlstRadio( radio ); + bbSetInputlstRadioLaw( 0 ); // for all + } //===== // 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)