Geometry and Feature Edges Dispatcher Filters#
Two new dispatcher filters provide unified geometry extraction and feature edge detection across all VTK data types. These filters were previously part of ParaView’s rendering infrastructure and are now available as standalone VTK components.
vtkGeometryFilterDispatcher#
vtkGeometryFilterDispatcher extracts renderable geometry (surfaces or outlines)
from any VTK data object, automatically dispatching to the appropriate
type-specific implementation. It accepts all major VTK data types as input:
vtkImageData,vtkRectilinearGrid,vtkStructuredGridvtkUnstructuredGrid,vtkPolyDatavtkHyperTreeGrid,vtkExplicitStructuredGridvtkCellGrid,vtkGenericDataSetComposite datasets (
vtkMultiBlockDataSet,vtkPartitionedDataSetCollection,vtkUniformGridAMR)
Key capabilities:
Surface or outline extraction controlled by the
UseOutlineflag. When enabled (the default), structured volumes produce a bounding box outline; when disabled, a full surface is extracted.Feature edge generation via
GenerateFeatureEdges. For HyperTreeGrid inputs, this delegates tovtkHyperTreeGridFeatureEdgesrather than operating on the extracted polydata.Normal computation with
GeneratePointNormalsandGenerateCellNormals, includingFeatureAngleandSplittingcontrols for sharp edge handling.Nonlinear subdivision for higher-order cells, controlled by
NonlinearSubdivisionLevel.Cell/point ID passthrough with
PassThroughCellIdsandPassThroughPointIdsfor selection and picking workflows.Parallel support via
SetController()for distributed-memory execution, with optionalGenerateProcessIdsarrays.AMR-specific options including
HideInternalAMRFacesandUseNonOverlappingAMRMetaDataForOutlines.Mesh caching for improved performance on repeated updates.
vtkNew<vtkGeometryFilterDispatcher> geometry;
geometry->SetInputConnection(reader->GetOutputPort());
geometry->SetUseOutline(0); // extract surface, not outline
geometry->SetGeneratePointNormals(true);
geometry->Update();
vtkFeatureEdgesDispatcher#
vtkFeatureEdgesDispatcher extracts feature edges from either vtkPolyData or
vtkHyperTreeGrid input, dispatching to vtkFeatureEdges or
vtkHyperTreeGridFeatureEdges respectively.
For polydata input, the following edge types can be extracted independently:
BoundaryEdges— edges used by only one cellFeatureEdges— edges where the dihedral angle exceedsFeatureAngleNonManifoldEdges— edges shared by more than two cellsManifoldEdges— interior edges shared by exactly two cells
For HyperTreeGrid input, MergePoints controls whether coincident points
are merged using a locator.
vtkNew<vtkFeatureEdgesDispatcher> edges;
edges->SetInputConnection(source->GetOutputPort());
edges->SetFeatureAngle(45.0);
edges->SetBoundaryEdges(true);
edges->SetNonManifoldEdges(false);
edges->Update();