Getting Started with Universal Scene Description (USD)
- Knowledge Article
USD (Universal Scene Description) is an open-source framework developed by Pixar for describing, composing, and collaborating on 3D scenes. It is widely used in animation, VFX, and industrial applications for its scalability and interoperability.
Key Features
- High-performance 3D scene interchange
- Extensible schemas for geometry, shading, lighting, and physics (CAE datasets)
- Powerful composition and layering system
- Python and C++ APIs
- Open-source and industry-supported
Reference: USD Documentation
USD File Types
.usda: ASCII format (human-readable).usdc: Binary format (optimized for speed and size).usd: Can be ASCII or binary.usdz: Compressed archive format (zip)
Basic Concepts
- Stage: The root of a USD scene, manages the scene graph and composition.
- Prim: A node in the scene graph (e.g., Mesh, Xform, Scope).
- Attribute: Data associated with a prim (e.g., points, normals).
- Relationship: Links between prims (e.g., material binding).
- Schema: Defines the structure and behavior of prims (e.g., UsdGeom, UsdShade).
Example: Minimal USDA File Structure
#usda 1.0
(
defaultPrim = "MyScene"
upAxis = "Y"
)
def Xform "Root" {
def Mesh "Plane" {
point3f[] points = [(0,0,0), (1,0,0), (1,1,0), (0,1,0)]
int[] faceVertexCounts = [4]
int[] faceVertexIndices = [0,1,2,3]
}
}
Python Example: Creating a Simple Mesh
This example shows how to create a USD file with a single plane mesh using Python.
from pxr import Usd, UsdGeom, Sdf, Gf
# Create a new USD stage
stage = Usd.Stage.CreateNew("plane_example.usda")
# Define a plane mesh
mesh = UsdGeom.Mesh.Define(stage, "/World/Plane")
mesh.CreatePointsAttr([
(0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0)
])
mesh.CreateFaceVertexCountsAttr([4])
mesh.CreateFaceVertexIndicesAttr([0, 1, 2, 3])
# Save the file
stage.GetRootLayer().Save()
Next Steps
- Explore USD schemas for materials, lights, and cameras
- Learn about USD composition and layering
- Try visualizing your USD files in a compatible viewer (e.g., NVIDIA Omniverse, usdview)
- Setup instructions: Omniverse Kit App Template
- Follow README for installation and usage
- Setup USD Composer App to visualize and edit USD files.
- Load your created USD files into the USD Composer App.
- Experiment with more complex geometry and attributes