[vtkusers] Extracting "feature surfaces" in VTK

Evan Kao tossin at gmail.com
Mon Oct 20 14:32:17 EDT 2014

Hey vtk-users,

Sorry if the above is a bit long-winded.  It pretty much boils down to a
couple questions:

1. How do I extract each individual surface created by
2. How are the edges created by vtkPolyDataNormals stored in the poly data

Evan Kao

On Fri, Oct 10, 2014 at 3:56 PM, Evan Kao <tossin at gmail.com> wrote:

> 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
> <http://public.kitware.com/pipermail/vtkusers/2000-December/005137.html>,
> 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
>    data?
> 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?
> Thanks,
> Evan Kao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20141020/8598ce6f/attachment.html>

More information about the vtkusers mailing list