[vtkusers] Getting a volume's contour vertices

Mattia Tommasone raibaz at gmail.com
Fri Sep 22 11:45:16 EDT 2006


Ok, second question of the day, for which i spent the whole day digging 
through the archives and googling around and yet i didn't find any clues:

I'm working on a haptic volume renderer, and my haptic API (which, by 
chance, is Sensable's HDAPI/HLAPI) needs the shapes to be rendered 
directly via OpenGL commands, i.e. glVertex*; thus, i was hoping to use 
vtk to load a volume file which can be in raw, stl or any other format 
(i still have to decide the format to use), then retrieving its outline 
vertices' coordinates, store them somewhere in memory and then feed them 
to OpenGL commands to render the outline itself instead of using the vtk 
renderer.

The approach i followed until now is described here in pseudocode for 
briefness:

- Read a .vtk file with a vtkStructuredPointsReader
- Filter the structured points with a vtkContourFilter
- Store contour->GetOutput()->GetPoints() elements in a vector
- Iterate through the vector and draw a GL_POINT for each vector element

What i'm getting, however, is not the external surface of the volume, 
but seems more like a scattered group of points...needless to say that 
if i try drawing the points as GL_LINES or any other OpenGL drawing 
mode, the result is even worse...

So, what am i missing?
- vtkContourFilter isn't the right filter to get a volume's external surface
- vtkPolyData::GetPoints() isn't the right method to get a vtkPolyData's 
vertices to be drawn via OpenGL
- What i'm looking for simply can't be done via vtk (which seems 
impossible to me)
- I googled for the wrong query strings and somebody can give me better 
hints

Hope somebody can help, this is the basis for my graduation thesis and 
i'm totally stuck...

Mattia Tommasone



More information about the vtkusers mailing list