usdgeom-mesh-primitive-tessellation#

Code

VG.017

Validator

latest+

Compatibility

core usd

Tags

🚀

Summary#

Avoid tessellating primitive shapes

Description#

Simple shapes that are available as native USD primitives (such as Spheres, Cylinders, etc.) should use those primitive types rather than mesh tessellation when possible. Native primitives provide better memory efficiency and rendering quality when varying primvars/UVs/Texture Coordinates are not needed.

Why is it required?#

  • Ensures efficient memory usage

  • Maintains optimal geometric precision

  • Keeps file sizes manageable

  • Improves load times

  • Provides mathematically perfect primitive shapes

Examples#

# Not recommended: Tessellated sphere
def Mesh "TessellatedSphere" {
    int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, ...]  # Many faces
    int[] faceVertexIndices = [...]
    point3f[] points = [...]  # Many vertices approximating a sphere
}

# Recommended: Native USD primitive
def Sphere "PerfectSphere" {
    double radius = 0.5
    double height = 2
    point3f[] extent = [(-0.5, -1, -0.5), (0.5, 1, 0.5)]
}

How to comply#

  • Replace tessellated geometry with native USD primitives where possible

  • Only use mesh tessellation when required for UV mapping or deformation

  • Re-export from source application using primitive types

For More Information#