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