Recent from talks
Nothing was collected or created yet.
Universal Scene Description
View on Wikipedia| USD | |
|---|---|
| Filename extension |
.usd, .usda, .usdc, .usdz |
| Developed by | Alliance for OpenUSD (AOUSD) |
| Type of format | 3D computer graphics |
| Website | www |
Universal Scene Description (USD) is a framework for interchange of 3D computer graphics data. The framework focuses on collaboration, non-destructive editing, and enabling multiple views and opinions about graphics data.[1] USD is used in many industries including visual effects, architecture, design, robotics, CAD, and rendering.[2][3]
History
[edit]It is developed by Pixar and was first published as open source software in 2016, under a modified Apache license.[4] Pixar, Adobe, Apple, Autodesk, and NVIDIA, together with the Joint Development Foundation (JDF) of the Linux Foundation, announced the Alliance for OpenUSD (AOUSD) on August 1, 2023 to "promote the standardization, development, evolution, and growth of Pixar's Universal Scene Description technology."[5]
File formats
[edit]Support
[edit]- Adobe Substance 3D[8]
- Apple’s Reality Composer Pro supports .usdz files for its Reality Kit and visionOS ecosystem.
- Apple’s SceneKit supports .usdz[9] files for 3D model interchange.[10][11]
- Autodesk 3ds Max supports USD as of version 2022. Includes Import from USD and Export to USD.
- Autodesk Fusion 360 supports USD export since April 2022.
- Autodesk Inventor supports USD as of version 2023.
- Autodesk Maya supports USD as of version 2022.
- Autodesk VRED Professional 2025 (.usd, .usda, .usdc, .udsz).
- Blender includes support for USD import and export as of Version 4.0.[12][13][14]
- Cinema 4D includes support for USD for import and export.[15]
- Davinci Resolve includes support for importing USD.[16]
- Fusion includes support for importing USD.[17]
- Houdini includes an implementation of USD, for purposes of format interchange and scene editing.[18]
- Nvidia has announced support for USD in Omniverse, a graphics collaboration platform.[19]
- Rhinoceros 3D though support is currently limited to v8 WIP (work in progress) and is not yet supported on the current stable release.[20]
- Unreal Engine supports (.usd, .usda, .usdc, .usdz) though the importer is in beta right now.[21]
- Vectorworks 2023 Service Pack 3 onwards includes USD export and import.
See also
[edit]References
[edit]- ^ "Introduction to USD". graphics.pixar.com. Retrieved 2020-01-19.
- ^ "Pixar Universal Scene Description (USD)". NVIDIA Developer. 2019-07-16. Retrieved 2022-06-26.
- ^ "Introduction to USD — Universal Scene Description 24.08 documentation".
- ^ "Pixar open-sources its Universal Scene Description | CG Channel". Retrieved 2022-06-26.
- ^ "Pixar, Adobe, Apple, Autodesk, and NVIDIA Form Alliance for OpenUSD to Drive Open Standards for 3D Content". Retrieved 2023-08-03.
- ^ Sanders, James (2018-06-05). "Apple's USDZ AR file format: What you need to know". TechRepublic. Retrieved 2019-08-08.
- ^ "USD Documentation : Usdz File Format Specification". Pixar Graphics Technologies. 2018. Retrieved 2020-06-02.
- ^ "Products Using USD — Universal Scene Description 24.08 documentation".
- ^ Paul, Katie (2022-06-21). "Meta and other tech giants form metaverse standards body, without Apple". Reuters. Retrieved 2022-06-22 – via www.reuters.com.
- ^ Casserly, Martyn. "Everything you need to know about Apple's new USDZ augmented-reality file format". Macworld UK. Retrieved 2019-08-08.
- ^ Horaczek, Stan (2018-06-15). "Apple and Pixar created a new file format for augmented reality on your phone". Popular Science. Retrieved 2019-08-08.
- ^ "Universal Scene Description". Retrieved 2020-02-15.
- ^ Blender 3.0: Pipeline, Assets & IO - USD Importer
- ^ USD Import and Export in Blender
- ^ "Supported File Formats". maxon.net (in German, English, Spanish, French, Italian, Japanese, Korean, and Chinese). Retrieved 2023-04-08.
- ^ "What's new in Davinci Resolve 18.5 beta". Retrieved 2023-04-17.
- ^ "Release of Fusion Studio 18.5". Retrieved 2023-10-01.
- ^ "Solaris | SideFX". www.sidefx.com. Retrieved 2020-01-19.
- ^ "NVIDIA Omniverse™". NVIDIA Developer. 2019-03-11. Retrieved 2020-01-19.
- ^ "Rhino 8 Feature: USD (Universal Scene Description) Export". McNeel Forum. 2023-07-06. Retrieved 2023-08-03.
- ^ "State of the Universal Scene Description (USD) format in Unreal Engine | Talks and demos".
External links
[edit]Universal Scene Description
View on Grokipedia.usda (ASCII) and efficient .usdc (binary Crate), with .usdz for packaged, zipped distribution, ensuring interoperability across tools.[3]
USD's adoption has expanded rapidly in the 3D graphics industry, with major integrations in NVIDIA's Omniverse platform for collaborative simulation and rendering, Autodesk's Maya, 3ds Max, and Arnold for content creation, Epic Games' Unreal Engine for real-time applications, and Apple's ecosystem for AR/VR experiences.[4][5][6][7] It is now a de facto standard in film and visual effects pipelines at studios like Pixar and Industrial Light & Magic, as well as in architecture, engineering, and construction (AEC) for digital twins and virtual collaboration.[8]
Overview
Definition and Purpose
Universal Scene Description (USD) is a publicly available, open-source framework developed by Pixar Animation Studios for describing, composing, and interchanging 3D scenes and assets in computer graphics pipelines.[3] It provides a consistent API and scene graph structure to enable the interchange of elemental assets, such as models and animations, and their assembly into virtual sets, scenes, and worlds.[3] As the core of Pixar's 3D graphics pipeline, USD is integrated into every authoring and rendering application at the studio, including its proprietary Presto animation system.[3] The primary purpose of USD is to facilitate non-destructive editing, versioning, and collaboration in complex 3D workflows, addressing the limitations of proprietary formats by establishing a universal standard for data interchange.[3] It allows multiple artists across departments to work simultaneously on the same assets or scenes through mechanisms like sub-layers and overrides, preventing overwrites and enabling reversible modifications without altering underlying data.[3] This supports versioning via variant sets for selecting non-destructive variations and promotes scalability in production environments.[3] By providing a common language and extensible schemas, USD reduces reliance on tool-specific formats, enabling seamless integration of assets from diverse digital content creation tools.[9] USD emerged to address pipeline bottlenecks in film production, where assets created in various tools—such as modeling in Autodesk Maya and simulations in SideFX Houdini—require integration without data loss or conversion overhead.[10] Initiated at Pixar in 2012, it unified the composition engine from Presto with prior data models, evolving from earlier scene description systems to handle the demands of large-scale 3D content creation.[3] This historical need arose from the challenges of coordinating complex, multi-tool workflows in animation and visual effects, where traditional formats often led to inefficiencies and data silos.[11] Among its core benefits, USD offers scalability for massive scenes through native prim instancing and a high-performance runtime evaluation engine, capable of composing and managing millions of models, textures, lights, and other elements, as demonstrated in productions like Toy Story 4.[11] It provides extensibility via plugin mechanisms for asset resolution, file formats, and custom schemas, allowing adaptation to specific pipeline requirements.[3] Additionally, USD supports time-varying data, with attributes that can evolve over time through animation blocks and value clips, ensuring efficient handling of dynamic content in collaborative environments.[3] These features collectively enable robust augmentation and interchange of 3D scenes at production scale.[3]Key Features
Universal Scene Description (USD) employs a hierarchical scene representation built around "prims," which are the fundamental primitive elements such as meshes, lights, and cameras, organized into a tree-like structure that mirrors the logical composition of a 3D scene.[1] This structure allows for efficient navigation and manipulation of complex scenes by encapsulating attributes—typed, time-varying values like positions or colors—and relationships, which are pointers connecting prims to other elements within the hierarchy.[1] A distinctive capability of USD is its support for variant sets, which enable multiple interchangeable representations of a single prim without data duplication; for instance, a model can include variants for different levels of detail (LODs) that can be selected non-destructively during scene composition.[1] Time sampling further enhances USD's utility for dynamic content, allowing attributes to hold animated or time-dependent data through keyframes, which facilitates simulation, playback, and interpolation in workflows involving motion or procedural generation.[1] USD incorporates references and payloads as key mechanisms for asset management: references link external USD files into the current scene for modular assembly, while payloads provide deferred loading and unloading of heavy data components, optimizing performance in large-scale environments by controlling memory usage without altering the core scene graph.[1] The format's extensibility is achieved through custom schemas, which build upon a foundational set of core types to define domain-specific data, such as physics simulations or material properties, via an automated schema generation tool that ensures consistent APIs and discoverability.[1] A key feature enabling USD to scale to billions of instances is the UsdGeomPointInstancer schema, designed for massive-scale instancing. It uses prototypes with per-instance data separation, where positions, orientations, and scales are stored compactly as arrays referencing shared prototypes, avoiding per-instance prim overhead.[12] Efficient composition in the binary .usdc format loads only needed data, deferring expansion to render or view time.[13] This supports handling massive scenes, such as forests with leaves and grass blades, particle systems, and crowds, via Hydra render delegates like Storm and RTX, with performance enhancements from flattening or crate packaging.[14] In contrast to more rigid formats like OBJ or FBX, which typically require full file rewrites for modifications, USD is inherently edit-friendly, supporting partial reads and writes alongside non-destructive editing through layering, making it ideal for collaborative and iterative 3D pipelines.[1]History and Development
Origins and Early Development
Universal Scene Description (USD) originated at Pixar Animation Studios in 2012 as an internal experimental project aimed at unifying and enhancing the studio's 3D graphics pipeline. The initiative sought to streamline asset interchange and composition in large-scale film production, building on prior internal systems such as Marionette, which had been used since A Bug's Life (1998), and TidScene, introduced around 2008-2009 for geometry schemas and pose caching. USD specifically merged the composition engine from Pixar's proprietary Presto animation system—debuted with Brave (2012)—with TidScene's lazy-access cached scene description model to create a more scalable framework for handling complex, time-sampled 3D data.[3][15] The development was led by Pixar software engineers including F. Sebastian Grassia and George ElKoura, who addressed longstanding challenges in visual effects (VFX) workflows, such as fragmented data interchange between proprietary tools from different vendors, which often resulted in the loss of critical information like animation curves or material assignments during conversions. These issues were particularly acute in feature film production, where hundreds of artists collaborate on scenes involving thousands of assets, necessitating robust non-destructive editing and versioning to avoid pipeline bottlenecks. USD was designed to mitigate these by providing a layered, composable structure that preserved scene integrity across tools, enabling efficient handling of massive datasets without redundant file exports.[16] Early internal adoption began experimentally in films following Brave, with limited use in asset pipelines for Monsters University (2013) and Inside Out (2015). Full integration into production workflows was first achieved with Finding Dory (2016), marking the first feature-length film to utilize a USD-based pipeline and allowing refinements to features like composition arcs for better temporal scene management and artist collaboration. This period marked iterative improvements in scalability, with USD becoming central to Pixar's Presto-based authoring and rendering processes. Subsequent films further honed these capabilities, solidifying USD's role in the studio's ecosystem before broader dissemination.[16][3][17] A key pre-open-source milestone occurred in 2015, when Pixar released a prototype version of USD to select VFX partners, including Luma Pictures and DNEG, for interoperability testing in shared production environments. This limited rollout validated USD's potential for cross-studio asset exchange, addressing proprietary format silos that hindered industry-wide collaboration, and paved the way for its formal open-sourcing the following year.[16]Open-Sourcing and Community Adoption
Pixar Animation Studios officially released Universal Scene Description (USD) as open-source software on July 26, 2016, under the Apache 2.0 license, making the codebase publicly available on GitHub to facilitate 3D graphics interchange across the industry.[18] This move enabled immediate access for developers and studios, with early adopters including major visual effects (VFX) facilities such as MPC, Double Negative, Industrial Light & Magic, and Animal Logic, which began integrating USD into their pipelines between 2016 and 2018 to streamline complex scene management in film production.[19] By 2019, USD's adoption expanded beyond VFX into gaming and augmented reality (AR) workflows, driven by integrations in tools like NVIDIA Omniverse for real-time collaboration and Unity's experimental support for USD import/export, enabling seamless asset sharing in interactive environments.[20] Standardization efforts accelerated in 2023 with the formation of the Alliance for OpenUSD (AOUSD) under the Linux Foundation on August 1, involving founding members Pixar, Adobe, Apple, Autodesk, and NVIDIA to promote interoperability and submit core specifications for ISO ratification by late 2025.[21][22] Community engagement grew through milestones like annual presentations at SIGGRAPH conferences, where USD courses and talks have showcased production applications since 2016, including a dedicated "USD in Production" session in 2025.[23] Key releases, such as USD 23.11 in November 2023, introduced enhancements to the UsdPhysics schema for improved rigid body simulations, supporting broader use in dynamic scene authoring.[24] The AOUSD marked a governance shift to neutral, multi-stakeholder stewardship in 2023, broadening participation beyond Pixar through a steering committee that oversees development and specifications. In November 2024, the alliance elected its first rotating steering committee members and welcomed new collaborations; by August 2025, it announced eight additional general members, further expanding ecosystem-wide innovations.[25][26][27] Contributions from NVIDIA focused on real-time rendering extensions for Omniverse, while Apple advanced AR compatibility, fostering ecosystem-wide innovations in collaborative 3D workflows.[20][28] By 2025, USD had achieved widespread integration in digital content creation tools from Autodesk Maya and Adobe Substance to rendering engines like RenderMan, enabling efficient non-destructive editing across film, gaming, and simulation pipelines.[5]Technical Architecture
Core Components and Prims
Universal Scene Description (USD) organizes 3D scenes using prims, which serve as the fundamental building blocks representing nodes in the scene graph. Each prim acts as a container for scene data, encapsulating properties such as transforms and visibility, as well as relationships like parent-child hierarchies that define the structural organization of the scene.[29][30] USD provides a set of built-in prim types through its core schemas, enabling the description of various scene elements. Common types include Xform for hierarchical transformations, Mesh for geometric surfaces, Scope for logical grouping without geometric meaning, Light for illumination sources, and Camera for viewpoint definitions. Additionally, the UsdGeomPointInstancer schema supports massive-scale instancing, designed to handle billions of instances by employing shared prototypes and separating per-instance data—such as positions, orientations, and scales stored as compact arrays— from the prototypes, thereby avoiding the overhead of creating individual prims for each instance. This allows for efficient composition, where binary formats like .usdc load only necessary data and defer full expansion until render or view time, facilitating applications such as forests with billions of leaves or grass blades, particle systems, and crowds rendered via Hydra delegates like Storm or RTX. Performance is further enhanced through techniques like scene flattening or crate packaging for very large scenes.[29][31][32] These types are extensible via applied schemas, allowing prims to conform to specialized behaviors like physics or shading without altering their base structure.[30] Properties on prims consist of attributes and relationships, with attributes being the primary mechanism for storing typed data such as float vectors for positions or colors. Attributes support time samples to enable animation, where values can be authored at specific frames for interpolation during playback. Metadata, in contrast, attaches non-time-varying information to prims or properties, including hints like versioning identifiers or kind classifications (e.g., "component" for leaf models).[29][33] The collection of prims forms a directed acyclic graph (DAG) via parent-child relationships and pointers, facilitating efficient traversal, querying, and non-destructive editing of the scene. This structure allows applications to navigate the hierarchy using iterators for siblings, children, or descendants, optimizing operations like rendering or simulation. Prims enable layering by providing opinion-based overrides, though detailed composition occurs through separate mechanisms.[30][29] For instance, a simple teapot model might be represented as an Xform prim named "Teapot" with a child Mesh prim for the geometry, an attribute for its transform (e.g., a matrix4d4 value positioning it in space), and a relationship binding it to a Material prim for surface shading. This setup encapsulates the object's position, shape, and appearance within the scene graph.Layering, Composition, and Non-Destructive Editing
Universal Scene Description (USD) employs a layering system to compose complex scenes from multiple files, where layers are stacked hierarchically to contribute scene elements or modifications without altering the underlying data.[3] This approach allows artists and technical directors to build intricate 3D environments modularly, with each layer representing a self-contained unit of scene description that can be authored, versioned, and reused independently.[29] The composition engine resolves the layer stack in a deterministic order, ensuring that contributions from weaker layers form the base while stronger layers apply targeted overrides.[3] Central to USD's composition model are the composition arcs, which define how elements from different layers are integrated into the final scene graph. The Sublayer arc includes entire layers into a parent layer's stack, enabling nested compositions where sub-layers can be added, removed, or reordered non-destructively.[29] Reference arcs incorporate a prim and its subtree from an external layer as an instance within the current scene, facilitating the reuse of assets like characters or props while allowing local overrides.[3] Variant arcs, organized into variant sets on a prim, provide selectable alternatives—such as different materials or poses—enabling flexible scene variations without duplicating data.[29] Override mechanisms, often implemented through list-editing operations (e.g., prepend, append, or block), apply changes to properties or relationships from weaker layers, preserving the original files intact.[3] Finally, Payload arcs support conditional inclusion of subtrees, loading heavy assets only when needed to optimize memory and performance during authoring or rendering.[29] Non-destructive editing in USD is achieved through a system of "opinions" with defined strengths, where modifications are expressed as overrides that do not modify base layers but instead layer atop them during resolution.[3] The resolution process follows the LIVERPS ordering—Local (direct authoring), Inherits (from ancestors), VariantSets, Relocates (for instancing), References, Payloads, and Specializes (for refinements)—ensuring that stronger opinions supersede weaker ones systematically.[29] This hierarchy allows for collaborative workflows, where multiple team members can contribute overrides in separate layers, and the composition engine merges them predictably without risking data loss.[3] Conflict resolution during composition prioritizes the strongest applicable opinion for each property, with metadata and relationships combined via list-editing rules that support operations like deletion or reordering to resolve ambiguities.[29] For time-sampled attributes, such as animations, the system applies layer offsets and interpolates values if needed, blending contributions from multiple sources while deferring to the most authoritative opinion.[3] Blocked opinions can nullify weaker values entirely, providing fine control over inheritance without propagating unwanted changes.[29] A representative workflow for building a complex scene, such as a city environment, begins with a base layer containing core geometry and layout authored in a USD file.[34] Subsequent layers reference this base to add animated elements like vehicles or pedestrians, instancing them across the scene without duplicating files.[3] Variants on lighting prims allow switching between day and night configurations non-destructively, while payload arcs defer loading of detailed building interiors until required for specific shots.[29] Overrides in a top-layer file then apply final adjustments, such as color corrections or prop placements, ensuring the original assets remain unmodified for reuse in other projects.[34]File Formats
Text-Based Format (USDA)
The Text-Based Format (USDA) is a human-readable representation of Universal Scene Description (USD) data, utilizing UTF-8 encoding and the .usda file extension. This format employs a YAML-like syntax to structure scene hierarchies, including sections for primitives (prims), properties, relationships, and metadata, enabling straightforward authoring and inspection of 3D scenes.[35][36] Key syntax elements include indentation to denote hierarchical relationships, such as child prims within parent blocks; the # symbol for comments; the def keyword to define new prims; and = for property assignments. For instance, prim definitions follow the pattern def Type "Name" { ... }, where properties like transforms or geometry attributes are nested inside curly braces. This structure supports time-sampled data via bracketed time codes and variant sets for conditional content.[37][29] The USDA format offers advantages in ease of debugging through direct text editing, compatibility with version control systems due to its diff-friendly nature, and seamless integration with scripting languages for automated modifications. It is particularly suitable for small to medium-sized scenes, such as prototype assets or configuration files with heavy referencing.[38] However, USDA files tend to have larger sizes compared to binary alternatives, leading to increased storage needs, and incur higher parsing overhead, which can slow loading for massive datasets with extensive geometry or shading.[38] The following snippet illustrates a basic USDA file defining a cube prim with a translate transform and a bound preview material:#usda 1.0
(
defaultPrim = "World"
)
def Xform "World" (
prepend variantSets = "model"
)
{
def Cube "Cube" (
prepend apiSchemas = ["MaterialBindingAPI"]
)
{
double size = 2
rel material:binding = </World/Material>
uniform token subdivisionScheme = "none"
xformOp:translate = (0, 0, 0)
xformOpOrder = ["xformOp:translate"]
}
def Material "Material"
{
token outputs:surface.connect = </World/Material/Shader.outputs:surface>
def Shader "Shader"
{
uniform token info:id = "UsdPreviewSurface"
color3f inputs:diffuseColor = (1, 0, 0)
}
}
}
#usda 1.0
(
defaultPrim = "World"
)
def Xform "World" (
prepend variantSets = "model"
)
{
def Cube "Cube" (
prepend apiSchemas = ["MaterialBindingAPI"]
)
{
double size = 2
rel material:binding = </World/Material>
uniform token subdivisionScheme = "none"
xformOp:translate = (0, 0, 0)
xformOpOrder = ["xformOp:translate"]
}
def Material "Material"
{
token outputs:surface.connect = </World/Material/Shader.outputs:surface>
def Shader "Shader"
{
uniform token info:id = "UsdPreviewSurface"
color3f inputs:diffuseColor = (1, 0, 0)
}
}
}
