Hi Brian,<br>I remember having some problem to render a non-convex polygon. I found an example, I can&#39;t find again where it comes from, and I worked on it. Finally the following python script does what you want. <br><br>
You should try to add two filters : a GeometryFilter and a TriangleFilter. <br>Marie-Gabrielle<br><br>&nbsp;#!/usr/bin/env python<br><br>&nbsp;# This example shows how to visualize polygons, convex or not.<br><br>&nbsp;import vtk<br><br>
&nbsp;# Define a set of points - these are the ordered polygon vertices<br>&nbsp;polygonPoints = vtk.vtkPoints()<br>&nbsp;polygonPoints.SetNumberOfPoints(6)<br>&nbsp;polygonPoints.InsertPoint(0, 0, 0, 0)<br>&nbsp;polygonPoints.InsertPoint(1,.4,.4, 0)<br>
&nbsp;polygonPoints.InsertPoint(2, 1, 0, 0)<br>&nbsp;polygonPoints.InsertPoint(3, 1, 1, 0)<br>&nbsp;polygonPoints.InsertPoint(4,.1,.7, 0)<br>&nbsp;polygonPoints.InsertPoint(5, 0, 1, 0)<br><br>&nbsp;# Make a cell with these points<br>&nbsp;aPolygon = vtk.vtkPolygon()<br>
&nbsp;aPolygon.GetPointIds().SetNumberOfIds(6)<br>&nbsp;aPolygon.GetPointIds().SetId(0, 0)<br>&nbsp;aPolygon.GetPointIds().SetId(1, 1)<br>&nbsp;aPolygon.GetPointIds().SetId(2, 2)<br>&nbsp;aPolygon.GetPointIds().SetId(3, 3)<br>&nbsp;aPolygon.GetPointIds().SetId(4, 4)<br>
&nbsp;aPolygon.GetPointIds().SetId(5, 5)<br><br>&nbsp;# The cell is put into a mesh (containing only one cell)<br>&nbsp;aPolygonGrid = vtk.vtkUnstructuredGrid()<br>&nbsp;aPolygonGrid.Allocate(1, 1)<br>&nbsp;aPolygonGrid.InsertNextCell(aPolygon.GetCellType(), aPolygon.GetPointIds())<br>
&nbsp;aPolygonGrid.SetPoints(polygonPoints)<br><br>&nbsp;# This part is needed for non-convex polygon rendering<br>&nbsp;aPolygonGeomFilter = vtk.vtkGeometryFilter()<br>&nbsp;aPolygonGeomFilter.SetInput(aPolygonGrid)<br>&nbsp;aPolygonTriangleFilter = vtk.vtkTriangleFilter()<br>
&nbsp;aPolygonTriangleFilter.SetInput(aPolygonGeomFilter.GetOutput())<br>&nbsp;#<br>&nbsp;# This one is only to check the triangulation (when factor &lt; 1)<br>&nbsp;aPolygonShrinkFilter = vtk.vtkShrinkFilter()<br>&nbsp;aPolygonShrinkFilter.SetShrinkFactor( 0.9 )<br>
&nbsp;#aPolygonShrinkFilter.SetShrinkFactor( 1.0 )<br>&nbsp;aPolygonShrinkFilter.SetInput( aPolygonGrid)<br><br>&nbsp;# Make ready for rendering<br>&nbsp;aPolygonMapper = vtk.vtkDataSetMapper()<br>&nbsp;aPolygonMapper.SetInput(aPolygonShrinkFilter.GetOutput())<br>
&nbsp;aPolygonActor = vtk.vtkActor()<br>&nbsp;aPolygonActor.SetMapper(aPolygonMapper)<br>&nbsp;aPolygonActor.GetProperty().SetDiffuseColor(1, .4, .5)<br><br>&nbsp;# Create the usual rendering stuff.<br>&nbsp;ren = vtk.vtkRenderer()<br>&nbsp;renWin = vtk.vtkRenderWindow()<br>
&nbsp;renWin.AddRenderer(ren)<br>&nbsp;renWin.SetSize(300, 150)<br>&nbsp;iren = vtk.vtkRenderWindowInteractor()<br>&nbsp;iren.SetRenderWindow(renWin)<br><br>&nbsp;ren.SetBackground(.1, .2, .4)<br>&nbsp;ren.AddActor(aPolygonActor)<br>&nbsp;ren.ResetCamera()<br>
<br>&nbsp;# Render the scene and start interaction.<br>&nbsp;iren.Initialize()<br>&nbsp;renWin.Render()<br>&nbsp;iren.Start()<br><br>