X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbcreaMaracasVisuTubeFilter.cxx;h=3a284d1b4cfdc7d62363ddc5c1b4c0c77374931f;hb=46e997508c80de816d3e26f9ccdb4a5e6d68a5f9;hp=16441924a4e790b274dd027b7d2054fa4e3ecb3c;hpb=8b01430072604956a52213748415d28c87e018a6;p=creaMaracasVisu.git diff --git a/bbtk/src/bbcreaMaracasVisuTubeFilter.cxx b/bbtk/src/bbcreaMaracasVisuTubeFilter.cxx index 1644192..3a284d1 100644 --- a/bbtk/src/bbcreaMaracasVisuTubeFilter.cxx +++ b/bbtk/src/bbcreaMaracasVisuTubeFilter.cxx @@ -55,6 +55,13 @@ namespace bbcreaMaracasVisu this->lstPointZ = lstPointZ; } + + void MaracasTubeFilter::SetlstColour( std::vector lstColour ) + { + this->lstColour=lstColour; + } + + void MaracasTubeFilter::SetlstRadius( std::vector lstRadius ) { this->lstRadius = lstRadius; @@ -77,6 +84,8 @@ namespace bbcreaMaracasVisu void MaracasTubeFilter::Run() { + + unsigned int i; unsigned int nTv = 8; // No. of surface elements for each tube vertex @@ -87,23 +96,20 @@ namespace bbcreaMaracasVisu points->InsertPoint(i, lstPointX[i], lstPointY[i], lstPointZ[i]); } - vtkSmartPointer lines = - vtkSmartPointer::New(); + vtkSmartPointer lines = vtkSmartPointer::New(); lines->InsertNextCell( lstPointX.size() ); for (i = 0; i < lstPointX.size(); i++) { lines->InsertCellPoint(i); } - vtkSmartPointer polyData = - vtkSmartPointer::New(); + vtkSmartPointer polyData = vtkSmartPointer::New(); polyData->SetPoints(points); polyData->SetLines(lines); // Varying tube radius using sine-function - vtkSmartPointer tubeRadius = - vtkSmartPointer::New(); + vtkSmartPointer tubeRadius = vtkSmartPointer::New(); tubeRadius->SetName("TubeRadius"); tubeRadius->SetNumberOfTuples( lstRadius.size() ); for (i=0 ;i colors = - vtkSmartPointer::New(); + vtkSmartPointer colors = vtkSmartPointer::New(); colors->SetName("Colors"); colors->SetNumberOfComponents(3); colors->SetNumberOfTuples( lstPointX.size() ); + int numberOfColours = lstColour.size()/3; + int indexcolour; for (i = 0; i < lstPointX.size() ;i++) - { - colors->InsertTuple3(i, 255 , 0.0 , 0.0 ); - } + { + if (numberOfColours==0){ + colors->InsertTuple3(i, 1 , 1 , 1 ); + } else { + if (iInsertTuple3(i, 255*lstColour[indexcolour+0] , 255*lstColour[indexcolour+1] , 255*lstColour[indexcolour+2] ); + } + } // for polyData->GetPointData()->AddArray(colors); - vtkSmartPointer tube - = vtkSmartPointer::New(); + vtkSmartPointer tube = vtkSmartPointer::New(); + tube->CappingOn(); tube->SetInput(polyData); tube->SetNumberOfSides(nTv); tube->SetVaryRadiusToVaryRadiusByAbsoluteScalar(); - vtkSmartPointer mapper = - vtkSmartPointer::New(); + vtkSmartPointer mapper = vtkSmartPointer::New(); mapper->SetInputConnection(tube->GetOutputPort()); +// mapper->ScalarVisibilityOn(); +// mapper->SetScalarModeToUsePointFieldData(); + mapper->ScalarVisibilityOn(); + +// mapper->SetScalarModeToUseCellData(); +// mapper->SetScalarModeToUseCellFieldData(); +// mapper->SetScalarModeToUseFieldData(); +// mapper->SetScalarModeToUsePointData(); mapper->SetScalarModeToUsePointFieldData(); + + mapper->SetColorModeToDefault(); +// mapper->SetColorModeToMapScalars(); + + mapper->SelectColorArray("Colors"); // vtkSmartPointer actor =vtkSmartPointer::New(); @@ -144,7 +172,6 @@ namespace bbcreaMaracasVisu actor->SetMapper(mapper); actor->GetProperty()->SetOpacity( opacity ); - if ( transform!=NULL ) { actor->SetUserTransform( transform ); @@ -194,6 +221,7 @@ void TubeFilter::Process() tubefilter->SetlstRadius( bbGetInputlstRadio() ); tubefilter->SetOpacity( bbGetInputOpacity() ); tubefilter->SetTransform( bbGetInputTransform() ); + tubefilter->SetlstColour( bbGetInputColour() ); tubefilter->Run(); bbSetOutputOutAxis( tubefilter->GetActor() ); printf("EED TubeFilter::Process end \n"); @@ -208,7 +236,15 @@ void TubeFilter::bbUserSetDefaultValues() // Here we initialize the input 'In' to 0 bbSetInputOpacity(1); bbSetInputTransform(NULL); - + + std::vector colour; + // 0- gray + colour.push_back(1.0); + colour.push_back(0.0); + colour.push_back(0.0); + bbSetInputColour(colour); + + } //=====