Universal Scene Description
Learn
Introduction to USD
Terms and Concepts
Tutorials
Hello World - Creating Your First USD Stage
Hello World Redux - Using Generic Prims
Inspecting and Authoring Properties
Referencing Layers
Converting Between Layer Formats
Traversing a Stage
Authoring Variants
Variants Example in Katana
Transformations, Time-sampled Animation, and Layer Offsets
Simple Shading in USD
End to End Example
Houdini USD Example Workflow
Generating New Schema Classes
Creating a Usdview Plugin
Downloads and Videos
Products Using USD
User Guides
Collections and Patterns
Basic Usage
Relationship-Mode Collections
Configuring Relationship-Mode Collections
Pattern-Based Collections
Path Expressions
Path Patterns
Additional Expressions Considerations
Configuring Pattern-Based Collections
Getting the Expression for a Relationship-Mode Collection
Namespace Editing
Using UsdNamespaceEditor
Fixing Paths For Moved Objects
Batch Edits
Namespace Editing Best Practices
Use CanApplyEdits() To Validate Edit Operations
Built-In Properties From Schemas Are Not Editable
Rendering with USD
Configuring Imageable Content
Configuring the Stage Coordinate System
Understanding Render Visibility
Using the Visibility Attribute
Using Imageable Purpose
Understanding Intrinsic and Explicit Normals
Working with Lights
Using Light-linking to Filter Objects Affected by Lights
Working with Materials
Using the USD Preview Material
Using GLSLFX Shaders
Working with Primvars
Primvar Interpolation
Indexed Primvars
Consuming Primvars in Materials
Material Primvar Fallbacks
Using Material Binding Purpose
Specifying Material Binding Purpose in Render Settings
Binding Materials to Collections
Setting Collection Binding Strength
Combining Collection Binding with Material Binding Purpose
Using Material Render Contexts
Working With Image File Formats
Guidelines for All Supported Image Formats
JPEG
PNG
OpenEXR
AV1 Image File Format (AVIF)
Defining the Render Camera
Configuring Motion Blur
Configuring Render Settings
USD Variable Expressions
Defining Expression Variables in a Layer
string
bool
int64
<type>[]
None
Expression Variables and Composition
Authoring Variable Expressions
Expression Function Reference
defined(<variable name>, …)
if(<condition>, <true-value>, <false-value>)
if(<condition>, <true-value>)
and(<x>, <y>, …)
or(<x>, <y>, …)
not(<x>)
eq(<x>, <y>)
neq(<x>, <y>)
lt(<x>, <y>)
leq(<x>, <y>)
gt(<x>, <y>)
geq(<x>, <y>)
contains(<list_or_string>, <value>)
at(<list_or_string>, <index>)
len(<list_or_string>)
Examples
Flexible Variant Selections
Asset-valued Texture File Attribute
Conditionally Include Sublayers
Schema Domains
Volumes (usdVol)
Overview
Working With Volumes
Working With Fields
Field3DAsset
Properties
Inherited Properties (
FieldAsset
)
Inherited Properties (
Xformable
)
Inherited Properties (
Imageable
)
FieldAsset
Properties
Inherited Properties (
Xformable
)
Inherited Properties (
Imageable
)
FieldBase
Properties
Inherited Properties (
Xformable
)
Inherited Properties (
Imageable
)
OpenVDBAsset
Properties
Inherited Properties (
FieldAsset
)
Inherited Properties (
Xformable
)
Inherited Properties (
Imageable
)
Volume
Properties
Inherited Properties (
Gprim
)
Inherited Properties (
Boundable
)
Inherited Properties (
Xformable
)
Inherited Properties (
Imageable
)
Reference
API Documentation
Toolset
usdedit
usdcat
usddiff
usdview
usdrecord
usdresolve
usdtree
usdzip
usdchecker
usdfixbrokenpixarschemas
usdstitch
usdstitchclips
usddumpcrate
sdfdump
sdffilter
usdmeasureperformance
Specifications
UsdPreviewSurface Specification
Goal
Core Nodes
Preview Surface
Texture Reader
Primvar Reader
Transform2d
USD Sample
Other Notes
Texture Coordinate Orientation in USD
Roughness vs Glossiness
Changes, by Version
Version 2.0 - Initial Public Specification
Version 2.2 - Before Type Changes
Version 2.3
Version 2.4
Version 2.5 - Current Head
Usdz File Format Specification
Purpose
Usdz Specification
Foundation
Zip Constraints
Layout
File Types
USD Constraints
Editability
Accessibility
Packaging Considerations for Streaming and Encapsulation
File Ordering Within Package for Streaming
For Reproducible Results, Encapsulate Using Anchored Asset Paths
MIME Type
Toolset
Changes, by Version
Version 1.3 - Current Head
Proposals
Adapting UsdLux to Accommodate Geometry Lights
Introduction and Background
Mesh Light Support in the Industry
Goals
Workflow Considerations
Design Space and Issues
Dual-Prim Geometry Light Problems
Single-Prim Geometry Light
UsdLux LightAPI OM
Light -> LightAPI
Introduce Convenience Base Classes
Preserve Existing UsdLux Concrete Schemas
Deprecate GeometryLight
How do we Identify the Appropriate SdrShaderNode for a Light?
Lights with Materials?
Proposal and Behaviors
Shading and Emission
Volumes
Primvars in Light Networks
Adapting UsdLux to the Needs of Renderers
Background and Goals
Foundational Technologies in USD
Sdr
USD Schemas
UsdImaging and Hydra
Proposals
Changes to UsdLux
Changes to UsdImaging
Changes to Hd
Changes to HdPrman and Other Render Delegates
Asset Previews in USD
Introduction
Proposal
Object Model
Concrete Encoding
Schema
Asset Resolution (Ar) 2.0
Background and Goals
Tasks
General Cleanup
Add Documentation and Examples
Add Identifier Concept
Remove Repository and Search Path
Improve Resolve and Asset Info
Remove Filesystem-specific Code
Add Asset Writing Interface
Add URI Resolvers
Allow Creation of ArResolverContext From Strings
Remove ArResolver::ConfigureResolverForAsset
Rollout and Transition
Proposed API
Coordinate Systems in USD Proposal
Purpose
Requirements
Coordinate Systems are Identified by Name in Shaders
Proposed API Schema
Recording a Frame of Reference
Binding Frames of Reference
CoordSysAPI
USD Sample and Analysis
Analysis: Coordinate Systems Evaluated
Analysis: Coordinate System Binding and Consumption
Projections, Cameras, and CoordSysAPI
Generalizing Connectable Nodes Beyond UsdShade
Background and Goals
Proposal
Node Definition as API Schema
Plugin-defined ConnectableAPI Behavior
Connectability Rules for UsdShade Types
Intended use in UsdLux and UsdRi (RenderMan USD schema)
Discussion
Sdr & Ndr
Flexibility of Connectability Callbacks
Non-shading Networks
Render Settings in USD Proposal
Purpose and Scope
Overall Design and Concerns
Concrete Schemas
Renderer-Specific Schemas
Prim and Scene Organization
Discovering Render Settings
Selecting and Combining Render Settings
Grouping RenderVars and RenderProducts
Discovering All Potential Shader-based RenderVars
Workflow Considerations
Interactive vs. Batch Rendering
Examples
Discussion and Questions
ID variables
Stereo Rendering
Camera Exposure Curves
Denoising, Color Correction, and Tasks
Why Locality of Overrides is Valuable
Image-Mapping-Related Options on Camera or RenderSettings?
Crop Windows and Region-of-Interest
Rigid Body Physics in USD Proposal
Purpose and Scope
Overall Design Concerns
Rigid Body Simulation Primer
USD Implementation
Concrete Schemas
Examples
Box on Box
Box on Quad
Spheres with Materials
Group Filtering
Pair Filtering
Joint
Distance Joint
Schema Versioning in USD
Introduction
Challenges to Schema Versioning in USD
Proposal for Per-Schema Versioning
Version Representation in Schemas
Schema Registry
UsdPrim Schema-related API
Considerations for Auto-apply API Schemas
Risks, Questions, Limitations
Guidelines for Schema Versioning
Criteria for Versioning
Do not Version a Schema When…
Do Version a Schema When…
Pixar Examples, Past and Future
UsdLux Connectability
Light → LightAPI
Visibility to VisibilityAPI
Possible Code Generation Changes to Support Versioning
Base Schema Class is Always the Latest Version of the Family
Class Per Version with Typedef Mapping to “Current” or “Latest” Version-Class
Single C++ Class That Provides API for ALL Versions of the Schema Family
“Compatible Cluster” Classes with Disambiguating Method Names
Stage Variable Expressions
UsdAudio Proposal
Goal
Initial Requirements
Proposed Prim Schema
SpatialAudio
USD Sample
Other Notes/Questions
SdfTimeCode and Time Scaling
UsdShade Material Assignment
Background
Basic Proposal for Collection-Based Assignment
Example Collection-Based Assignment
Refinement 1: Specifying Binding Strength
Refinement 2: Material Purpose
Material Resolve: Determining the Bound Material for any Geometry Prim
UsdShade API
Analysis of Collection-Based Binding
Integration
Katana Import
Maya I/O
Houdini
Remaining Questions
Performance
Implication on Renderer Instancing
Material Layering
FAQ
General Questions
What is USD and why should I use it?
What programming languages are supported?
Isn’t USD just another file format?
So what file formats does USD support?
What file format is my
.usd
file?
What character encoding does
.usda
support?
How can I convert USD files between binary and text?
What data types are supported?
What does a USD file look like?
Subtler Aspects of Scene Description and Composition
I have some layers I want to combine: Should I use SubLayers or References?
What happens to “overs” when their underlying prim is moved to a different location in the scenegraph?
When can you delete a reference (or other deletable thing)?
List-edited string, token, and int metadata
List-edited relationships and connections
List-edited composition arcs
What’s the difference between an “over” and a “typeless def” ?
Why Can’t I Instance a Leaf Mesh Prim Directly?
Build and Runtime Issues
How do I use the
TF_DEBUG
mechanism?
Why Isn’t Python Finding USD Modules?
Why Isn’t This Plugin Being Built?
Why doesn’t the OpenUSD runtime recognize the USD file format?
Why Isn’t My App Finding USD DLLs and Plugins on Windows?
Performance Considerations
Use an allocator optimized for multithreading
Use binary “.usd” files for geometry and shading caches
Package assets with payloads
What makes a USD scene heavy/expensive?
Performance Metrics
What We Measure
What Environment Is Used
Linux
macOS
Windows
USD Build
Metrics
Performance Graphs Per Platform
Standard Shader Ball
Kitchen Set
ALab
Moore Lane
Running Performance Metrics Locally
Adding Custom Metrics
Third Party Plugins
RenderMan USD Imaging Plugin
Configuration
Building hdPrman
Running hdPrman
Developer
Supported Render Pass AOVs
Alembic USD Plugin
Known Limitations
Collaborate
Source Code @ GitHub
OpenUSD Forum
Contributing
Contributor License Agreement
Coding Conventions
Pull Request Guidelines
Git Workflow
GitHub Issues
Making Major Changes
Step 1. Get consensus for major changes
Step 2. Make code changes
Step 3. Test code changes
Step 4. Submit code for review
Step 5. Pixar will test and land your changes
Contributors
Release Schedule
Press
Open Source Release
Open Source Announcement
Universal Scene Description
API Documentation
API Documentation
USD C++ API Documentation