usdgeom-mesh-manifold#

Code

VG.007

Validator

latest+

Compatibility

core usd

Tags

Summary#

Mesh geometry must be manifold

Description#

Mesh geometry must maintain manifold topology to ensure proper simulation and rendering behavior. Non-manifold issues include:

  • Non-manifold vertices: Two or more faces share a single vertex but are not connected to each other via an edge or via one or more intermediate faces. Examples are two planes or two cubes touching at one shared corner vertex.

  • Non-manifold edges: Three or more faces share an edge

  • Inconsistent winding: Adjacent faces have opposite vertex winding order

Why is it required?#

  • Prevents visual artifacts

  • Avoids potential simulation issues

Examples#

# Invalid: Non-manifold edge (inconsistent winding)
def Mesh "BadMesh" {
    int[] faceVertexCounts = [4, 4]
    int[] faceVertexIndices = [0, 1, 2, 3, 3, 2, 4, 5]  # Edge 2-3 used twice
    point3f[] points = [(0,0,0), (1,0,0), (1,1,0), (0,1,0), (1,2,0), (0,2,0)]
}

# Valid: Manifold mesh
def Mesh "GoodMesh" {
    int[] faceVertexCounts = [4]
    int[] faceVertexIndices = [0, 1, 2, 3]
    point3f[] points = [(0,0,0), (1,0,0), (1,1,0), (0,1,0)]
}

How to comply#

  • Use mesh repair tools to weld edges and vertices

  • Align face normals

  • Reconvert to USD after repair

For More Information#