[vtkusers] Extracting "feature surfaces" in VTK

Evan Kao tossin at gmail.com
Fri Oct 10 18:56:31 EDT 2014

Hello all,

I'm trying to extract feature surfaces (e.g. inlets, outlets, etc.) in VTK
as briefly described in this fairly old mailing list exchange
but since I'm inexperienced with VTK, I need a little more detail.

I've tried the corresponding filters in Paraview, which was pretty
straightforward, but I'd like to be able to do it in VTK, which seems a lot
less straightforward.  The sequence of filters in Paraview that I used is
(starting from an unstructured grid volume) :

1. Extract Surface
2. Generate Surface Normals
3. Connectivity
4. Threshold (for each surface)

I believe the corresponding filters in VTK are:

1. vtkGeometryFilter
2. vtkPolyDataNormals
3. vtkPolyDataConnectivityFilter (or vtkConnectivityFilter)
4. vtkThreshold

I'm currently having trouble with the connectivity filters.  In Paraview,
the connectivity filter conveniently adds a "RegionId" array to the data,
which can then be used to separate the surfaces using the Threshold filter,
but this doesn't seem to be the case in VTK.  If I print the output of the
connectivity filter, there are no new arrays.  I believe the filter is
working though since GetNumberOfExtractedRegions() gives 3 (1 inlet, 1
outlet, 1 wall).  This brings me to a few questions:

   1. Is there a way to access each individual region?  And if so, is
   vtkThreshold even necessary?
   2. Is there a way to get the "RegionId" array in VTK and add it to the

I also had a question about how the connectivity filter works.  The Feature
Angle option in Generate Surface Normals dictates which edges of the object
that are rendered and seems to change the calculated point normals, but not
the cell normals.  Are these edges actually stored anywhere or are they
just implicit in the calculated point normals?  And the description for the
connectivity filter suggests that it simply looks for shared points between
cells, which doesn't seem like it would be affected by calculating point
normals.  So what does it use as criteria for separating surfaces when
performed after Generate Surface Normals/vtkPolyDataNormals?

Evan Kao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20141010/b874ad1b/attachment.html>

More information about the vtkusers mailing list