Geometry#

Overview#

This capability provides requirements for the rendering of 3D surfaces in visualization systems, proper mesh topology and geometry for physics simulation, as well as placement, orientation and positioning.

Summary#

  • Geometry is most often represented as a UsdGeomMesh prim.

  • Performance and proper β€œtopological hygiene” is a key consideration for geometry and an important focus of this capability.

  • USDGeom also provides other types of geometry, but this documentation focuses on meshes.

  • Various other geometry types in USD are also β€œpoint based” and may share the same requirements as meshes.

Requirements#

Tags

Summary

Compatibility

Validator

πŸ”‘

Assets must contain at least one imageable geometry prim.

core usd

latest+

πŸ”‘

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

latest+

βœ…

Mesh geometry must be manifold

core usd

latest+

βœ…

Mesh topology must be valid

core usd

latest+

βœ…

Meshes should be positioned using xform ops, not by embedding positions into point positions.

core usd

latest+

βœ…

Repeated occurrences of identically shaped objects should have identical mesh connectivity

core usd

Manual

βœ…

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

βœ…

Meshes made from non opaque materials shall have thickness

core usd

β›”

World space bounds must not exceed RTX limit.

rtx

latest+

πŸš€

Boundable geometry primitives should have valid extent values.

openusd

latest+

πŸš€

Only include geometry that contributes to visualization or simulation

openusd

latest+

πŸš€

Use efficient mesh boundaries for performance

rtx

πŸš€

Meshes should maintain appropriate scale and boundary volumes

rtx

latest+

πŸš€

Meshes should not overlap unnecessarily

core usd

πŸš€

Meshes should not share the exact same space

core usd

latest+

πŸš€

Use indexed primvars when values are repeated

core usd

latest+

πŸš€

Do not subdivide meshes with Normals.

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

latest+

πŸš€

Each vertex position should be unique

core usd

latest+

πŸš€

Avoid tessellating primitive shapes

core usd

latest+

πŸš€

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

latest+

πŸš€

Use appropriate vertex count for geometry

core usd

πŸš€

Meshes should use instancing if they are identical apart from their world space location

core usd

latest+

πŸš€

Boundable geometry should have non-zero extents in at least one dimension.Zero extent geometry wastes memory and may cause simulation problems.

core usd

πŸš€

Faces should not be lamina.Lamina faces are those that share all the same vertices. This means there are two or more identical overlapping faces. This is wasteful, and can also cause rendering artifacts if the faces have different materials. They can be created in a variety of ways, for example accidentally duplicating faces on a mesh, merging objects with coincident faces and then merging vertices, or modeling operations like booleans on meshes that have coincident faces.

core usd

latest+

πŸš€

Use appropriate mesh count for scene

rtx