identical-mesh-consistency#
Code |
VG.024 |
---|---|
Validator |
Manual |
Compatibility |
core usd |
Tags |
✅ |
Summary#
Repeated occurrences of identically shaped objects should have identical mesh connectivity
Description#
When identically shaped and parameterized objects appear multiple times in an asset, all occurrences should have identical mesh connectivity - point positions and connections / edges between the vertices. This enables proper memory de-duplication optimizations and primvar usage (texture coordinates, normals, etc.)

The locks on this toolbox are identical and should have identical mesh connectivity.#
Why is it required?#
Enables efficient memory de-duplication of identical meshes
Ensures consistent behavior across different instances of the same mesh, for example when applying a textured material or applying mesh decimation operations
Reduces file size and memory usage
Examples#
#usda 1.0
# Valid: Identical meshes with same point positions
def Xform "Chair1" (
prepend apiSchemas = ["GeomXformCommonAPI"]
)
{
float3 xformOp:translate = (0, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
def Mesh "ChairMesh" {
point3f[] points = [(-1, 0, -1), (1, 0, -1), (1, 2, -1), (-1, 2, -1),
(-1, 0, 1), (1, 0, 1), (1, 2, 1), (-1, 2, 1)]
int[] faceVertexCounts = [4, 4, 4, 4, 4, 4]
int[] faceVertexIndices = [0,1,2,3, 4,7,6,5, 0,4,5,1, 1,5,6,2, 2,6,7,3, 3,7,4,0]
}
}
def Xform "Chair2" (
prepend apiSchemas = ["GeomXformCommonAPI"]
)
{
float3 xformOp:translate = (3, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
def Mesh "ChairMesh" {
point3f[] points = [(-1, 0, -1), (1, 0, -1), (1, 2, -1), (-1, 2, -1),
(-1, 0, 1), (1, 0, 1), (1, 2, 1), (-1, 2, 1)]
int[] faceVertexCounts = [4, 4, 4, 4, 4, 4]
int[] faceVertexIndices = [0,1,2,3, 4,7,6,5, 0,4,5,1, 1,5,6,2, 2,6,7,3, 3,7,4,0]
# Identical point positions as Chair1
}
}
# Invalid: Similar meshes with different point positions
def Xform "Chair3" (
prepend apiSchemas = ["GeomXformCommonAPI"]
)
{
float3 xformOp:translate = (6, 0, 0)
uniform token[] xformOpOrder = ["xformOp:translate"]
def Mesh "ChairMesh" {
point3f[] points = [(2, 0, -1), (4, 0, -1), (4, 2, -1), (2, 2, -1),
(2, 0, 1), (4, 0, 1), (4, 2, 1), (2, 2, 1)]
# Different point positions - transformation baked into geometry
}
}
How to comply#
When splitting a previously merged mesh into multiple separate meshes, de-duplicate/replace any resulting geometry that should be identical with other geometry. For example bolts and screws or wheels in a vehicle.
When positioning duplicated geometry, don’t do so by moving the points / vertices directly. Instead, apply transformation (xform ops) to the geometry to position it.
Use identical mesh data for geometrically identical objects
Consider using USD’s instancing capabilities for repeated geometry