[vtkusers] How to create triangle strips?

Hugo Valdebenito hugo at maptek.cl
Mon Nov 22 13:10:39 EST 2010


Hi David.

It works with one strip, but that doesn't work with 2 o more strips. that is
my implementation (sorry,  is C#, I translated the c++ example)

       public void GenerateSurface(int nx, int ny)
       {

          vtkPoints points = vtkPoints.New();
          vtkCellArray cells = new vtkCellArray();
          vtkTriangleStrip triangleStrip;


          double z,zmax = 50.0;
          points.SetNumberOfPoints(nx * ny);
         //se points
          int index = 0;
          for (int j = 0; j < ny; j++)
          {
             for (int i = 0; i < nx; i++)
             {
                z = zmax * Math.Sin(4 * 3.1 * i / (float)nx) + 4 * j /
(float)(ny);
                //insert point and increment index
                *points.SetPoint(index++,(double)i, (double)j, (double)z);*


             }
          }
          //set ids
          for (int i = 0; i < nx - 1; i++)
          {
             index = 0;
             triangleStrip = new vtkTriangleStrip();
             triangleStrip.GetPointIds().SetNumberOfIds(ny*2);

              for (int j = 0; j < ny; j++)
             {
                triangleStrip.GetPointIds().SetId(index++, i + j * nx);
                triangleStrip.GetPointIds().SetId(index++, i + j * nx + 1);
             }
             *cells.InsertNextCell(triangleStrip);*
          }
          vtkPolyData polydata = new vtkPolyData();
          polydata.SetPoints(points);
          *polydata.SetStrips(cells);*

          // Create an actor and mapper
          vtkDataSetMapper mapper = new vtkDataSetMapper();
          mapper.SetInput(polydata);
          vtkActor Actor = new vtkActor();

          Actor.SetMapper(mapper);
          Actor.GetProperty().SetRepresentationToWireframe();
          //Add the actors to the scene
          _renderer.AddActor(Actor);
     }


Hugo



2010/11/22 David Gobbi <david.gobbi at gmail.com>

> Hi Hugo,
>
> The vtkPolyData stores the strips in an array called "Strips", that is
> how it knows what cells are strips.  And all vtkDataSet objects have a
> GetCellType(i) method that VTK can use to check the type of cell "i".
> I have some code here that generates several shapes with triangle
> strips:
>
> https://github.com/dgobbi/ToolCursor/blob/master/vtkGeometricCursorShapes.cxx
>
>  David
>
>
> On Mon, Nov 22, 2010 at 5:55 AM, Hugo Valdebenito <hugo at maptek.cl> wrote:
> >
> > You should to see the triangles, maybe it's wrong. with 4 ids you define
> 2
> > triagles, with 5 --> 3 and so on (that structure saves memory). How does
> you
> > said to vtk that you are using Strips?  I don't know how to define that
> on
> > VTK.
> >
> >
> > Thanks!
> >
> >
> >
> > 2010/11/19 David Doria <daviddoria at gmail.com>
> >>
> >> On Fri, Nov 19, 2010 at 3:22 PM, Hugo Valdebenito <hugo at maptek.cl>
> wrote:
> >> > Thanks david!!
> >> >
> >> > vtkCellArray object is defined, but never used....
> >> >
> >> > Anyone can suggest a fix?, I'm beginner on VTK
> >> > Hugo
> >>
> >> Try it now. It doesn't show the line through the middle of the square
> >> (the center edge of the triangles), but maybe that is expected with a
> >> triangle strip?
> >>
> >>
> >>
> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Broken/GeometricObjects/TriangleStrip
> >>
> >> David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101122/2d7bf199/attachment.htm>


More information about the vtkusers mailing list