VTK/Polyhedron Support

From KitwarePublic
Revision as of 16:37, 18 February 2010 by Wschroed (talk | contribs)
Jump to navigationJump to search


  • Add support for arbitrary polyhedral cell (manifold, watertight, may be concave)
  • Develop smooth interpolation functions for polyhedron
  • Create filters, examples and testing infrastructure supporting this technology
  • Application goal: support CFD solvers (finite volume methods for computational fluid dynamics and similar)

Summary of Implementation Plan:

  • Identify interpolation functions
    • Mean Value Coordinates
    • Triangle meshes (paper by Tao Ju et al.)
    • Arbitrary polyhedron (paper by Torsten Langer et al.)
  • Polyhedron cell support
    • vtkPolyhedron - more complex cell in that it requires explicit face representation
    • vtkUnstructuredGrid - modified to support polyhedron cell, new InsertNextCell() and related methods (e.g., GetFace()).
    • vtkGenericCell (and vtkUnstructuredGrid::GetCell() methods) expanded to include vtkPolyhedron
    • vtkCellTypes.h has new #define VTK_POLYHEDRON
  • Implement cool related interpolation functions & filters
    • vtkMeanValueCoordinatesInterpolator
    • vtkProbePolyhedron - probe the region (interior, surface, exterior) around a polyhedral mesh for data values.
    • vtkDeformPointSet - use MVC to deform any vtkPointSet using control mesh
    • vtkExtractPolyhedralMesh - for debugging, convert 3D cells to vtkPolyhedron
    • Would like to implement some VTK widgets to manipulate meshes
      • vtkPancakeWidget (local surface deformation)
      • vtkControlMeshWidget (for global deformation of geometry)

Implementation Issues:

  • VTK File formats and IO
    • XML formats
    • Legacy formats
  • Critical filters /functionality
    • Geometry Filter - should work once vtkCell::GetCellNeighbors() is implemented
    • Contouring - some work required
    • Clipping - serious work required
    • Search (vtkDataSet::FindCell() and FindPoint()) - should work once evaluation functions are implemented
  • Impact on previous code
    • Previous vtkClipDataSet can now produce polyhedron as output, is this desirable?

Auxiliary Tasks

  • vtkPolygon basis functions: replace silly 1/r^2 with the MVC 2D equivalent


  • Working on core functionality which should be done by mid 2010. Completion of all work depends on funding, schedule and customer support.


  • Will Schroeder (will.schroeder at kitware.com)
  • Hua Yang (hua.yang at kitware.com)