Difference between revisions of "VTK/Polyhedron Support"

From KitwarePublic
< VTK
Jump to navigationJump to search
Line 31: Line 31:
** Legacy formats
** Legacy formats
* Critical filters /functionality
* Critical filters /functionality
** Geometry Filter
** Geometry Filter - should work once vtkCell::GetCellNeighbors() is implemented
** Contouring
** Contouring - some work required
** Clipping
** Clipping - serious work required
** Search (vtkDataSet::FindCell() and FindPoint())
** Search (vtkDataSet::FindCell() and FindPoint()) - should work once evaluation functions are implemented
* Impact on previous code
* Impact on previous code
** Previous vtkClipDataSet can now produce polyhedron as output, is this desirable?
** Previous vtkClipDataSet can now produce polyhedron as output, is this desirable?

Revision as of 11:34, 18 February 2010

Goals:

  • 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 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


Contacts:

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