VTK/Polyhedron Support: Difference between revisions

From KitwarePublic
< VTK
Jump to navigationJump to search
No edit summary
No edit summary
Line 17: Line 17:
** vtkCellTypes.h has new #define VTK_POLYHEDRON
** vtkCellTypes.h has new #define VTK_POLYHEDRON
* Implement cool related interpolation functions & filters ''(note items in yellow are complete)''
* Implement cool related interpolation functions & filters ''(note items in yellow are complete)''
** <span style="color:yellow">vtkMeanValueCoordinatesInterpolator
** <span style="color:yellow">vtkMeanValueCoordinatesInterpolator</span>
** vtkProbePolyhedron - probe the region (interior, surface, exterior) around a polyhedral mesh for data values.
** <span style="color:yellow">vtkProbePolyhedron - probe the region (interior, surface, exterior) around a polyhedral mesh for data values.</span>
** vtkDeformPointSet - use MVC to deform any vtkPointSet using control mesh
** <span style="color:yellow">vtkDeformPointSet - use MVC to deform any vtkPointSet using control mesh</span>
** vtkExtractPolyhedralMesh - for debugging, convert 3D cells to vtkPolyhedron</span>
** <span style="color:yellow">vtkExtractPolyhedralMesh - for debugging, convert 3D cells to vtkPolyhedron</span>
** Would like to implement some VTK widgets to manipulate meshes
** Would like to implement some VTK widgets to manipulate meshes
*** vtkPancakeWidget (local surface deformation)
*** vtkPancakeWidget (local surface deformation)

Revision as of 12:48, 23 February 2010

Goals:

  1. Add support for arbitrary polyhedral cell (manifold, watertight, may be concave)
  2. Develop smooth interpolation functions for polyhedron
  3. Create filters, examples and testing infrastructure supporting this technology
  4. 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 (note items in yellow are complete)
    • 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


Schedule

  • Working on core functionality which should be done by mid 2010. Completion of all work depends on funding, schedule and customer support.
    • Basics- polygon2d, data API and integration, Mesh2Polyhedra filter, Evaluate/Location/Position functions() in vtkPolyhedron, GetCellNeighbors(), GetFace(), GetFaceIds() (Early March)
    • Core- geometry filter, IO (mid-March)
    • Algorithms- (clipping, contouring) (early to mid April)
    • Final tuning (mid to late April)


Contacts:

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