Requirements#

Summary#

  • An Asset needs to include at least one USDGeom primitive with a computed purpose of “render” or “default”.

  • The USDGeom prim must have a valid topology.

  • The USDGeom primitive should not create performance issues for raytraced rendering and simulation.

Schema#

Geometry is defined with the USDGeom schema.

Requirements & Recommendations#

Tags

Summary

Compatibility

Validator

🔑

Assets must contain at least one Imageable Geometry

core-usd

🔑

Geometry shall be defined as such that the asset is correctly positioned and oriented at the origin (0,0,0).

core-usd

🔑

All geometry shall be represented as non-subdivided mesh primitives using the UsdGeomMesh schema.

core-usd

✅

Mesh geometry must be manifold

core-usd

latest+

✅

Mesh topology must be valid

core-usd

latest+

✅

Transparent physical bodies should be watertight to allow for simulation of light transmission and refraction.

core-usd

✅

Meshes should be positioned with xform ops rather than by “baking” transformations into point positions.

core-usd

✅

Repeated occurrences of identically shaped objects should have identical mesh connectivity

core-usd

Manual

✅

The pivot point of an asset should be positioned logically: at the center of the object’s base for ground plane objects, and at the center of rotation for objects that rotate around specific points.

core-usd

✅

All non-subdivided meshes must have normals.

core-usd

latest+

✅

Mesh normals values must be valid to produce correct shading.

core-usd

✅

The winding order of faces in a mesh must correctly represent the orientation (front/back) of the face.

core-usd

⛔

World space bounds must not exceed RTX limit.

rtx

🚀

Boundable geometry primitives must have valid extent values.

open-usd

🚀

Only include geometry that contributes to visualization or simulation

open-usd

🚀

Use efficient mesh boundaries for performance

rtx

🚀

Meshes should maintain appropriate scale and boundary volumes

rtx

🚀

Meshes should not overlap unnecessarily

core-usd

🚀

Meshes should not share the exact same space

core-usd

🚀

Use indexed primvars when values are repeated

core-usd

latest+

🚀

Use subdivision only when needed for smooth surfaces or displacement

core-usd

latest+

🚀

Only include primvars that are actively used

core-usd

latest+

🚀

Combine small meshes into larger ones where appropriate

core-usd

🚀

Use appropriate tessellation density for geometry

core-usd

🚀

Use time samples only when attribute values change

core-usd

🚀

Each vertex position should be unique

core-usd

latest+

🚀

Avoid tessellating primitive shapes

core-usd

🚀

Mesh topology should be without unused vertices, edges, or faces.

core-usd

latest+

🚀

Faces should have non-zero area.Faces where all vertices are co-linear or coincident waste memory and can cause rendering artifacts.

core-usd

latest+

🚀

The values of points must not exceed the limit at which a given precision can be represented using 32-bit floats.

core-usd

🚀

Meshes must be triangulated for optimal rendering performance and compatibility when considering automatic collider creation (convex-hull, convex-decomposition, etc…). Triangulating mesh will provide predictable results versus n-gons.

core-usd