Henrik,<br><br>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.<br><br>
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. <br><br>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. <br>
<br>Marie-Gabrielle Vallet<br><br><div class="gmail_quote">2008/6/4 Henrik Westerberg <<a href="mailto:henrik.westerberg@crg.es">henrik.westerberg@crg.es</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
<br>
<p><font size="2">Hello vtkusers,<br>
<br>
I have been having a similar problem rendering a cube made up of four smaller cubes.<br>
<br>
I would like to be able to visualise the interior nodes but they disappear<br>
depending on the degree of the vertex. I have included a sample screen shot.<br>
<br>
What I want to eventually do is extract the edges to a TubeFilter and color<br>
the tubes depending on some scalar values, but I always only get the exterior<br>
lines.<br>
<br>
Also I will eventually need to visualise tetrahedra within a surface.<br>
<br>
My current pipeline looks like:<br>
<br>
reader = vtkUnstructuredGridReader()<br>
reader.SetFileName(uginput)<br>
<br>
geoFil = new vtkGeometryFilter()<br>
geoFil.SetInput(reader.GetOutput())<br>
<br>
triFil = new vtkTriangleFilter()<br>
triFil.SetInput(geoFil.GetOutput())<br>
<br>
gridMapper = vtkDataSetMapper()<br>
gridMapper.SetInput(triFil.GetOutput())<br>
<br>
gridActor = vtkActor()<br>
gridActor.SetMapper(gridMapper)<br>
<br>
thanks for your time,<br><font color="#888888">
<br>
Henrik</font><div><div></div><div class="Wj3C7c"><br>
<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:vtkusers-bounces@vtk.org" target="_blank">vtkusers-bounces@vtk.org</a> on behalf of Marie-Gabrielle Vallet<br>
Sent: Fri 5/30/2008 9:21 PM<br>
To: <a href="mailto:briand@aracnet.com" target="_blank">briand@aracnet.com</a><br>
Cc: <a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a><br>
Subject: Re: [vtkusers] best way to represent a (planar) irregular polygon ?<br>
<br>
Hi Brian,<br>
I remember having some problem to render a non-convex polygon. I found an<br>
example, I can't find again where it comes from, and I worked on it. Finally<br>
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>
#!/usr/bin/env python<br>
<br>
# This example shows how to visualize polygons, convex or not.<br>
<br>
import vtk<br>
<br>
# Define a set of points - these are the ordered polygon vertices<br>
polygonPoints = vtk.vtkPoints()<br>
polygonPoints.SetNumberOfPoints(6)<br>
polygonPoints.InsertPoint(0, 0, 0, 0)<br>
polygonPoints.InsertPoint(1,.4,.4, 0)<br>
polygonPoints.InsertPoint(2, 1, 0, 0)<br>
polygonPoints.InsertPoint(3, 1, 1, 0)<br>
polygonPoints.InsertPoint(4,.1,.7, 0)<br>
polygonPoints.InsertPoint(5, 0, 1, 0)<br>
<br>
# Make a cell with these points<br>
aPolygon = vtk.vtkPolygon()<br>
aPolygon.GetPointIds().SetNumberOfIds(6)<br>
aPolygon.GetPointIds().SetId(0, 0)<br>
aPolygon.GetPointIds().SetId(1, 1)<br>
aPolygon.GetPointIds().SetId(2, 2)<br>
aPolygon.GetPointIds().SetId(3, 3)<br>
aPolygon.GetPointIds().SetId(4, 4)<br>
aPolygon.GetPointIds().SetId(5, 5)<br>
<br>
# The cell is put into a mesh (containing only one cell)<br>
aPolygonGrid = vtk.vtkUnstructuredGrid()<br>
aPolygonGrid.Allocate(1, 1)<br>
aPolygonGrid.InsertNextCell(aPolygon.GetCellType(), aPolygon.GetPointIds())<br>
aPolygonGrid.SetPoints(polygonPoints)<br>
<br>
# This part is needed for non-convex polygon rendering<br>
aPolygonGeomFilter = vtk.vtkGeometryFilter()<br>
aPolygonGeomFilter.SetInput(aPolygonGrid)<br>
aPolygonTriangleFilter = vtk.vtkTriangleFilter()<br>
aPolygonTriangleFilter.SetInput(aPolygonGeomFilter.GetOutput())<br>
#<br>
# This one is only to check the triangulation (when factor < 1)<br>
aPolygonShrinkFilter = vtk.vtkShrinkFilter()<br>
aPolygonShrinkFilter.SetShrinkFactor( 0.9 )<br>
#aPolygonShrinkFilter.SetShrinkFactor( 1.0 )<br>
aPolygonShrinkFilter.SetInput( aPolygonGrid)<br>
<br>
# Make ready for rendering<br>
aPolygonMapper = vtk.vtkDataSetMapper()<br>
aPolygonMapper.SetInput(aPolygonShrinkFilter.GetOutput())<br>
aPolygonActor = vtk.vtkActor()<br>
aPolygonActor.SetMapper(aPolygonMapper)<br>
aPolygonActor.GetProperty().SetDiffuseColor(1, .4, .5)<br>
<br>
# Create the usual rendering stuff.<br>
ren = vtk.vtkRenderer()<br>
renWin = vtk.vtkRenderWindow()<br>
renWin.AddRenderer(ren)<br>
renWin.SetSize(300, 150)<br>
iren = vtk.vtkRenderWindowInteractor()<br>
iren.SetRenderWindow(renWin)<br>
<br>
ren.SetBackground(.1, .2, .4)<br>
ren.AddActor(aPolygonActor)<br>
ren.ResetCamera()<br>
<br>
# Render the scene and start interaction.<br>
iren.Initialize()<br>
renWin.Render()<br>
iren.Start()<br>
<br>
<br>
<br>
</div></div></font>
</p>
</div>
</blockquote></div><br>