[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