X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbmaracasvisuDrawAxisTree3D.cxx;h=00fae1748ba908cee2709fc7467027938bf880a8;hb=a7017a8ade695bd14a4c7ee70b197d63b5e76765;hp=5bfd80b857174e037f4925e28d75f4281e7b4d55;hpb=e4ef2b5df5aac431ff3b806f83b7dd5e55e89d86;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuDrawAxisTree3D.cxx b/bbtk/src/bbmaracasvisuDrawAxisTree3D.cxx index 5bfd80b..00fae17 100644 --- a/bbtk/src/bbmaracasvisuDrawAxisTree3D.cxx +++ b/bbtk/src/bbmaracasvisuDrawAxisTree3D.cxx @@ -27,6 +27,13 @@ #include "bbcreaMaracasVisuPackage.h" #include "vtkLinearTransform.h" +#include "vtkUnsignedCharArray.h" +#include "vtkCellData.h" +#include "vtkPolyLine.h" +#include "vtkLine.h" + + + namespace bbcreaMaracasVisu { @@ -41,6 +48,7 @@ void DrawAxisTree3D::DrawOneAxis(int iGeneral,int numPoints, int iAxis) vtkPolyDataMapper *polydatamapper = vtkPolyDataMapper::New(); vtkActor *vtkactor = vtkActor::New(); +// polydatamapper->ScalarVisibilityOff(); polydatamapper->SetInput(polydata); vtkactor->SetMapper(polydatamapper); @@ -60,8 +68,9 @@ void DrawAxisTree3D::DrawOneAxis(int iGeneral,int numPoints, int iAxis) if( lstpointsXsize>0 ){ vtkPoints* allPoints = vtkPoints::New( ); +vtkPolyLine *polyline = vtkPolyLine::New(); vtkCellArray* allTopology = vtkCellArray::New( ); - allTopology->InsertNextCell( numPoints ); +// allTopology->InsertNextCell( numPoints ); size=iGeneral+numPoints; for (i=iGeneral;i %f, %f, %f \n", i, bbGetInputlstPointX()[i], bbGetInputlstPointY()[i], bbGetInputlstPointZ()[i] ); - allTopology->InsertCellPoint( i-iGeneral ); + +polyline->GetPointIds()->InsertNextId(i-iGeneral); + +// allTopology->InsertCellPoint( i-iGeneral ); } // rof + allTopology->InsertNextCell(polyline); + + // create cell array for edges + vtkCellArray *edges = vtkCellArray::New(); + +// connect edge's and vertexes point ids + for(vtkIdType i = iGeneral; i < size-1; i++) + { + vtkLine *edge = vtkLine::New(); + edge->GetPointIds()->SetId(0, i-iGeneral); + edge->GetPointIds()->SetId(1, (i-iGeneral+1) ); + edges->InsertNextCell(edge); + edge->Delete(); +// vtkSmartPointer vertex = vtkSmartPointer::New(); +// vertex->GetPointIds()->SetId(0, i); +// vertexes->InsertNextCell(vertex); + } + polydata->SetPoints( allPoints ); - polydata->SetLines( allTopology ); + polydata->SetLines(edges); +// polydata->SetLines( allTopology ); + + + // polydata->SetPolys( allTopology ); + + edges->Delete(); allPoints->Delete(); allTopology->Delete(); } @@ -83,19 +119,55 @@ void DrawAxisTree3D::DrawOneAxis(int iGeneral,int numPoints, int iAxis) // color double r,g,b; - if ( (iAxis*3+1) < (int)(bbGetInputColour().size()) ) + if (bbGetInputColourLaw()==1) // the same color for all { + r = bbGetInputColour()[0]; + g = bbGetInputColour()[1]; + b = bbGetInputColour()[2]; + vtkactor->GetProperty()->SetColor( r,g,b ); + } // Law 1 color for all + + if (bbGetInputColourLaw()==2) // different colors for each segment + { + if ( (iAxis*3+1) < (int)(bbGetInputColour().size()) ) + { r = bbGetInputColour()[0+iAxis*3]; g = bbGetInputColour()[1+iAxis*3]; b = bbGetInputColour()[2+iAxis*3]; - } else { + } else { r = (rand() % 100) / 100.0; g = (rand() % 100) / 100.0; b = (rand() % 100) / 100.0; - } + } + vtkactor->GetProperty()->SetColor( r,g,b ); + } // Law 2 color for each segment + - vtkactor->GetProperty()->SetColor( r,g,b ); - vtkactor->GetProperty()->SetLineWidth( 0.5 ); + if (bbGetInputColourLaw()==3) // color for each point + { + // Setup the colors array + vtkUnsignedCharArray *colors = vtkUnsignedCharArray::New(); + colors->SetNumberOfComponents(3); + colors->SetName("Colors"); +// colors->SetName("vertex color"); + int iPoint,pointSize=iGeneral+numPoints; + + + for (iPoint=iGeneral; iPointSetTuple3(iPoint,r,g,b); + colors->InsertNextTuple3(r,g,b); + } + polydata->GetCellData()->SetScalars(colors); + polydata->Modified(); + + } // Law 3 color for each point + + + vtkactor->GetProperty()->SetLineWidth( bbGetInputLineWidth() ); vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() ); if ( bbGetInputTransform()!=NULL ) @@ -154,13 +226,14 @@ void DrawAxisTree3D::Process() { bbSetOutputOutAxis( vecVtkActors[ bbGetInputiAxis() ] ); } else { - printf("TubeTreeFilter .ERROR. missing index vector...\n"); + printf("DrawAxisTree3D .ERROR. missing index vector...\n"); } } else {// if oldLstSize for (iActor=0 ; iActorGetProperty()->SetOpacity( bbGetInputOpacity() ); + vecVtkActors[iActor]->GetProperty()->SetLineWidth( bbGetInputLineWidth() ); } } @@ -201,6 +274,7 @@ void DrawAxisTree3D::bbUserSetDefaultValues() bbSetInputColour(colour); bbSetInputOpacity(1); + bbSetInputLineWidth(0.5); bbSetInputColourLaw(1); }