[vtkusers] best way to represent a (planar) irregular polygon ?

Marie-Gabrielle Vallet mgv.research at gmail.com
Wed Jun 4 09:46:50 EDT 2008


Henrik,

That's not a similar problem. A polygon is a surface, discretized with
triangles. For a non-convex polygon, the triangles have to be filtered
before rendering, to correct their orientation I guess.

Your grid is volumetric. There is no triangle to filter. I don't know how to
visualise your grid inside. And I'm not sure you want to see all these
lines.

A TubeFilter generates a surface around a line. There is nothing inside. You
can cap both ends. But you can only see the exterior surface because their
is no volume.

Marie-Gabrielle Vallet

2008/6/4 Henrik Westerberg <henrik.westerberg at crg.es>:

>
> Hello vtkusers,
>
> I have been having a similar problem rendering a cube made up of four
> smaller cubes.
>
> I would like to be able to visualise the interior nodes but they disappear
> depending on the degree of the vertex. I have included a sample screen
> shot.
>
> What I want to eventually do is extract the edges to a TubeFilter and color
> the tubes depending on some scalar values, but I always only get the
> exterior
> lines.
>
> Also I will eventually need to visualise tetrahedra within a surface.
>
> My current pipeline looks like:
>
> reader = vtkUnstructuredGridReader()
> reader.SetFileName(uginput)
>
> geoFil = new vtkGeometryFilter()
> geoFil.SetInput(reader.GetOutput())
>
> triFil = new vtkTriangleFilter()
> triFil.SetInput(geoFil.GetOutput())
>
> gridMapper = vtkDataSetMapper()
> gridMapper.SetInput(triFil.GetOutput())
>
> gridActor = vtkActor()
> gridActor.SetMapper(gridMapper)
>
> thanks for your time,
>
> Henrik
>
>
>
> -----Original Message-----
> From: vtkusers-bounces at vtk.org on behalf of Marie-Gabrielle Vallet
> Sent: Fri 5/30/2008 9:21 PM
> To: briand at aracnet.com
> Cc: vtkusers at vtk.org
> Subject: Re: [vtkusers] best way to represent a (planar) irregular polygon
> ?
>
> Hi Brian,
> I remember having some problem to render a non-convex polygon. I found an
> example, I can't find again where it comes from, and I worked on it.
> Finally
> the following python script does what you want.
>
> You should try to add two filters : a GeometryFilter and a TriangleFilter.
> Marie-Gabrielle
>
>  #!/usr/bin/env python
>
>  # This example shows how to visualize polygons, convex or not.
>
>  import vtk
>
>  # Define a set of points - these are the ordered polygon vertices
>  polygonPoints = vtk.vtkPoints()
>  polygonPoints.SetNumberOfPoints(6)
>  polygonPoints.InsertPoint(0, 0, 0, 0)
>  polygonPoints.InsertPoint(1,.4,.4, 0)
>  polygonPoints.InsertPoint(2, 1, 0, 0)
>  polygonPoints.InsertPoint(3, 1, 1, 0)
>  polygonPoints.InsertPoint(4,.1,.7, 0)
>  polygonPoints.InsertPoint(5, 0, 1, 0)
>
>  # Make a cell with these points
>  aPolygon = vtk.vtkPolygon()
>  aPolygon.GetPointIds().SetNumberOfIds(6)
>  aPolygon.GetPointIds().SetId(0, 0)
>  aPolygon.GetPointIds().SetId(1, 1)
>  aPolygon.GetPointIds().SetId(2, 2)
>  aPolygon.GetPointIds().SetId(3, 3)
>  aPolygon.GetPointIds().SetId(4, 4)
>  aPolygon.GetPointIds().SetId(5, 5)
>
>  # The cell is put into a mesh (containing only one cell)
>  aPolygonGrid = vtk.vtkUnstructuredGrid()
>  aPolygonGrid.Allocate(1, 1)
>  aPolygonGrid.InsertNextCell(aPolygon.GetCellType(),
> aPolygon.GetPointIds())
>  aPolygonGrid.SetPoints(polygonPoints)
>
>  # This part is needed for non-convex polygon rendering
>  aPolygonGeomFilter = vtk.vtkGeometryFilter()
>  aPolygonGeomFilter.SetInput(aPolygonGrid)
>  aPolygonTriangleFilter = vtk.vtkTriangleFilter()
>  aPolygonTriangleFilter.SetInput(aPolygonGeomFilter.GetOutput())
>  #
>  # This one is only to check the triangulation (when factor < 1)
>  aPolygonShrinkFilter = vtk.vtkShrinkFilter()
>  aPolygonShrinkFilter.SetShrinkFactor( 0.9 )
>  #aPolygonShrinkFilter.SetShrinkFactor( 1.0 )
>  aPolygonShrinkFilter.SetInput( aPolygonGrid)
>
>  # Make ready for rendering
>  aPolygonMapper = vtk.vtkDataSetMapper()
>  aPolygonMapper.SetInput(aPolygonShrinkFilter.GetOutput())
>  aPolygonActor = vtk.vtkActor()
>  aPolygonActor.SetMapper(aPolygonMapper)
>  aPolygonActor.GetProperty().SetDiffuseColor(1, .4, .5)
>
>  # Create the usual rendering stuff.
>  ren = vtk.vtkRenderer()
>  renWin = vtk.vtkRenderWindow()
>  renWin.AddRenderer(ren)
>  renWin.SetSize(300, 150)
>  iren = vtk.vtkRenderWindowInteractor()
>  iren.SetRenderWindow(renWin)
>
>  ren.SetBackground(.1, .2, .4)
>  ren.AddActor(aPolygonActor)
>  ren.ResetCamera()
>
>  # Render the scene and start interaction.
>  iren.Initialize()
>  renWin.Render()
>  iren.Start()
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20080604/41b83c37/attachment.htm>


More information about the vtkusers mailing list