This module implements the
EXT_mesh_manifold
GLTF extension for glTF Transform. It does
not depend on manifold. Use it where topological correctness is
required.
A mesh is typically considered manifold when it topologically represents a
solid object with well-defined volume, sometimes known as watertight. For the
purpose of this extension, a mesh is considered manifold when it is an
oriented 2-manifold triangle mesh, meaning for each halfedge (each of the
three ordered vertex index pairs around a triangle) there is exactly one
other halfedge with swapped vertices, and no other halfedge with the same
vertices.
NOTE: This is the same definition as used in the 3D Manufacturing Format
(3MF) for maximum interoperability.
Manifoldness is critical for reliability of geometric algorithms that operate
on solid objects, and so is important in CAD, FEA (Finite Element Analysis),
CFD (Computational Fluid Dynamics), and more. However, GPU-friendly formats
like glTF with indexed triangles lose manifoldness data because anywhere
vertex properties change at an edge (e.g. change of materials, UV swatch, or
normals at a crease) the entire vertex must be duplicated and referenced
separately. This means the only way to determine linked edges is by merging
vertices with identical positions, but this geometric check cannot losslessly
recreate the topology, as some separate vertices may happen to coincide in
position.
This extension allows authors to denote that the contained mesh data is in
fact manifold, and adds a small amount of extra data to losslessly recover
this manifold mesh by leveraging sparse accessors.
This module implements the EXT_mesh_manifold GLTF extension for glTF Transform. It does not depend on manifold. Use it where topological correctness is required.
A mesh is typically considered manifold when it topologically represents a solid object with well-defined volume, sometimes known as watertight. For the purpose of this extension, a mesh is considered manifold when it is an oriented 2-manifold triangle mesh, meaning for each halfedge (each of the three ordered vertex index pairs around a triangle) there is exactly one other halfedge with swapped vertices, and no other halfedge with the same vertices.
Manifoldness is critical for reliability of geometric algorithms that operate on solid objects, and so is important in CAD, FEA (Finite Element Analysis), CFD (Computational Fluid Dynamics), and more. However, GPU-friendly formats like glTF with indexed triangles lose manifoldness data because anywhere vertex properties change at an edge (e.g. change of materials, UV swatch, or normals at a crease) the entire vertex must be duplicated and referenced separately. This means the only way to determine linked edges is by merging vertices with identical positions, but this geometric check cannot losslessly recreate the topology, as some separate vertices may happen to coincide in position.
This extension allows authors to denote that the contained mesh data is in fact manifold, and adds a small amount of extra data to losslessly recover this manifold mesh by leveraging sparse accessors.
It can be imported as
manifold-3d/manifold-gltf.