[vtkusers] Problem with vtkPolyLine width greater than 20
Goodwin Lawlor
goodwin.lawlor.lists at gmail.com
Sat Apr 28 12:10:01 EDT 2012
Hi Stefan,
VTK clamps linewidth to values 0 -> VTK_LARGE_FLOAT (ie 1 x 10^38) ...
that's not your limitation.
OpenGL clamps linewidth to value 1 -> implementation max, ie, depends on
your video card and driver.
cf: http://www.opengl.org/sdk/docs/man/xhtml/glLineWidth.xml
So, I guess 20 is your implementation max.
If you want to keep a 2d element, try using a vtkPolygon. Otherwise go with
vtkTubeFilter as Jothy suggested.
hth
Goodwin
2012/4/26 Stefan Köhnen <stefan.khnen at googlemail.com>
> Thanks, that is exactly what we need. Especially this part "This is
> helpful because when you zoom the camera, the thickness of a line
> remains constant, while the thickness of a tube varies."
>
> I will look into it. Thanks for your reply Jothy.
>
> But just to clarify, there is a limit for the width of a vtkPolyLine?
>
> Greetings,
>
> Stefan
>
>
> 2012/4/26 Jothybasu Selvaraj <jothybasu at gmail.com>:
> > If you want such a thick line, why don't you use vtkTubeFilter?
> >
> > Jothy
> >
> > On Thu, Apr 26, 2012 at 1:11 PM, Stefan Köhnen <
> stefan.khnen at googlemail.com>
> > wrote:
> >>
> >> Hello,
> >>
> >> I have a problem while trying to increase the width of a vtkPolyLine.
> >> No matter what I try, the width never seems to become bigger for
> >> values above 20.
> >>
> >> For values below 20, the method SetLineWidth works as expected.
> >>
> >> My question is if there is a limitation that prevents me to increase
> >> the width further or is there an error in my implementation.
> >>
> >> To explain my problem better I modified the PolyLine-Example.
> >> I added SetLineWidth for the vtkProperty of the vtkActor.
> >>
> >>
> >> Greetings,
> >>
> >> Stefan Köhnen
> >>
> >> Here is the code:
> >>
> >> #include <vtkVersion.h>
> >> #include <vtkSmartPointer.h>
> >> #include <vtkCellArray.h>
> >> #include <vtkCellData.h>
> >> #include <vtkDoubleArray.h>
> >> #include <vtkPoints.h>
> >> #include <vtkPolyLine.h>
> >> #include <vtkPolyData.h>
> >> #include <vtkPolyDataMapper.h>
> >> #include <vtkActor.h>
> >> #include <vtkRenderWindow.h>
> >> #include <vtkRenderer.h>
> >> #include <vtkRenderWindowInteractor.h>
> >> #include <vtkProperty.h>
> >>
> >> int main(int, char *[])
> >> {
> >> // Create five points.
> >> double origin[3] = {0.0, 0.0, 0.0};
> >> double p0[3] = {1.0, 0.0, 0.0};
> >> double p1[3] = {0.0, 1.0, 0.0};
> >> double p2[3] = {0.0, 1.0, 2.0};
> >> double p3[3] = {1.0, 2.0, 3.0};
> >>
> >> // Create a vtkPoints object and store the points in it
> >> vtkSmartPointer<vtkPoints> points =
> >> vtkSmartPointer<vtkPoints>::New();
> >> points->InsertNextPoint(origin);
> >> points->InsertNextPoint(p0);
> >> points->InsertNextPoint(p1);
> >> points->InsertNextPoint(p2);
> >> points->InsertNextPoint(p3);
> >>
> >> vtkSmartPointer<vtkPolyLine> polyLine =
> >> vtkSmartPointer<vtkPolyLine>::New();
> >> polyLine->GetPointIds()->SetNumberOfIds(5);
> >> for(unsigned int i = 0; i < 5; i++)
> >> {
> >> polyLine->GetPointIds()->SetId(i,i);
> >> }
> >>
> >> // Create a cell array to store the lines in and add the lines to it
> >> vtkSmartPointer<vtkCellArray> cells =
> >> vtkSmartPointer<vtkCellArray>::New();
> >> cells->InsertNextCell(polyLine);
> >>
> >> // Create a polydata to store everything in
> >> vtkSmartPointer<vtkPolyData> polyData =
> >> vtkSmartPointer<vtkPolyData>::New();
> >>
> >> // Add the points to the dataset
> >> polyData->SetPoints(points);
> >>
> >> // Add the lines to the dataset
> >> polyData->SetLines(cells);
> >>
> >> // Setup actor and mapper
> >> vtkSmartPointer<vtkPolyDataMapper> mapper =
> >> vtkSmartPointer<vtkPolyDataMapper>::New();
> >> #if VTK_MAJOR_VERSION <= 5
> >> mapper->SetInput(polyData);
> >> #else
> >> mapper->SetInputData(polyData);
> >> #endif
> >>
> >> vtkSmartPointer<vtkActor> actor =
> >> vtkSmartPointer<vtkActor>::New();
> >> actor->SetMapper(mapper);
> >>
> >>
> >>
> ////////////////////////////////////////////////////////////////////////////
> >> // Here is the explained change - Set width of line
> >> actor->GetProperty()->SetLineWidth(30.0f);
> >>
> >>
> ////////////////////////////////////////////////////////////////////////////
> >>
> >>
> >> // Setup render window, renderer, and interactor
> >> vtkSmartPointer<vtkRenderer> renderer =
> >> vtkSmartPointer<vtkRenderer>::New();
> >> vtkSmartPointer<vtkRenderWindow> renderWindow =
> >> vtkSmartPointer<vtkRenderWindow>::New();
> >> renderWindow->AddRenderer(renderer);
> >> vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
> >> vtkSmartPointer<vtkRenderWindowInteractor>::New();
> >> renderWindowInteractor->SetRenderWindow(renderWindow);
> >> renderer->AddActor(actor);
> >>
> >> renderWindow->Render();
> >> renderWindowInteractor->Start();
> >>
> >> return EXIT_SUCCESS;
> >> }
> >> _______________________________________________
> >> Powered by www.kitware.com
> >>
> >> Visit other Kitware open-source projects at
> >> http://www.kitware.com/opensource/opensource.html
> >>
> >> Please keep messages on-topic and check the VTK FAQ at:
> >> http://www.vtk.org/Wiki/VTK_FAQ
> >>
> >> Follow this link to subscribe/unsubscribe:
> >> http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
> >
> >
> > --
> > Jothy
> >
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120428/5482093c/attachment.htm>
More information about the vtkusers
mailing list