Skip to main content

Getting Started with Universal Scene Description (USD)

  • Knowledge Article
Omniverse
[email protected] Created: 07.01.2026 Last update: 09.04.2026

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

References

Connect with Ansys