File Exchange

image thumbnail

Mesh2Tetra

version 1.2 (39.7 KB) by

Convert a closed triangulated mesh to a tetrahedron volume ( like constrained Delaunay )

9 Downloads

Updated

View License

 This function MESH2TETRA converts a triangulated surface mesh into a tetrahedron volume mesh.
 
  Main advantage above existing constrained 3D Delaunay is that it
  will never add new boundary points, (useful for active appearance models)
  Disadvantage, some highly non-convex surface-shapes cannot be converted.
 
    T=Mesh2Tetra(V,F,options);
 
  inputs,
    V : Vertex List N x 3, with x,y,z positions
    F : Face List M x 3, with vertex indices
    options : Struct with options
    options.verbose : if true, show information
    options.checkinput : if true, check input mesh on errors
 
  outputs,
    T : Tetrahedron List K x 4, with tetrahedron indices
 
 
  Note!, most functions are also available as c-code (much faster),
    run compile_c_files.m to compile the code
   
  How the software works:
  - First, normal Delaunay is used to created a tetrahedron convexhull.
    Then outside tetrahedrons and tetrahedrons intersecting the boundary
    mesh are removed.
  - Second, New triangulated surface meshes are constructed for the space
    not yet filled by tetrahedrons. After which Delaunay
    is done on the new boundary meshes.
  - Third, The remaining boundary which cannot be filled using Delaunay
    constraints, is filled with a "Boundary collapse method". The Boundary
    collapse method merges vertex neighbors, creating tetrahedrons while
    making the surface mesh smaller (like a deflating balloon)
  - Fourth, It is possible that a part of the boundary mesh is left over which
    cannot be filled with tetrahedrons. This is the case if there are no 4
    vertices left who can see each other (like a non-convex polygon). In
    that case nearby Tetrahedrons are removed creating a new boundary
    mesh. And tetrahedron fitting with the boundary collapse methods is
    tried again (until success, or a fixed amount of tries).

.
Please leave a comment if you find a bug, like the code, or have a good suggestion.

Comments and Ratings (3)

YE HUICHAO

Sorry I don't know how to use this file.I just open the examples and run the m.file but Matlab shows error. What should I do to practice it on a real mesh?

linreal Lin

linreal Lin

The codes work on R2009a after some minor modification. However, the computation time is too long for only 300 faces. Only part of the C codes can be MEXed, so hopefully the complete C MEX version can be released soon. Thanks a lot for the nice work!

Updates

1.2

Added some code to correct for mesh intersections, sadly not yet perfect ...

1.1

Improved help and made input-options work for sub-functions.

MATLAB Release
MATLAB 7.10 (R2010a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video