Notes for 'What is USD: A Primer' SIGGRAPH 2019
TLDW Summary: This talk is an intro to the key concepts and terminology of Universal Scene Description. The presentation shows examples of how USD is integrated into SideFX products.
Key Terms
- Universal Scene Description
- Scene Graph
- Layer
- Hydra
- DCC
Presentation Time Stamps
Link to the talk on YouTube.
- at minute 1 What is USD?
- at minute 4 “Layer” term
- at minute 4 “Stage” term
- at minute 4 “Composition Arcs” term
- at minute 5 “SubLayers” term
- at minute 7 “Namespace” term
- at minute 9 “Opinions” term
- at minute 11 “Sublayering” term
- at minute 12 “References” term
- at minute 14 “Payload” term
- at minute 16 “Instancing” term
- at minute 18 “VariantSet” term
- at minute 22 “Hydra” term
- at minute 23 Q&A
Key Concepts
the ‘more’ link will take you to the USD glossary
- Layer: a file on disk (find out more)
- Stage: the resulting composition of the layers (find out more)
- Composition Arcs: different ways to combine layers into a stage (find out more)
- SubLayers: the way to refer to other layers within a layer (find out more)
- Opinions: a system for resolving conflicts when combining layers (find out more)
- Namespace: path to the primitives in the scene graph (find out more)
The Problems/Challenges
- Have a single standardized format for describing a 3D scene
- The format needs to be open for multiple parties to use and extend
- The format should be easy to implement
Propositions
- Start learning and using USD in your pipelines to take advantage of the built-in integration into popular DDC tools, commercial rendering engines, and commercial game engines.
- You will need a tool to visualize how USD composes the scene graphs to get the final result.
Arguments
- Pixar developed USD
- USD is becoming an industry standard
- USD is open and actively developed
Key Points
- USD is for assembling scene and editing 3D data
- USD is about enhancing the communication between Digital Content Creation tools
- Layer == Scene Graph == USD File
- USD can enable non-destructive editing of data from lower layers
- The concept of splitting the scene into multiple files allows the artist not to load the whole resulting scene, a.k.a. “Stage”
- Compositing USD files (referencing other USD files in a USD file) works like PhotoShop layers
- “opinions” are used to resolve scene graph composition conflicts. Layer on top will have a stronger “opinion” then the layer below that
- Need a standalone viewer/tool to understand how the scene is created
- “This can get super confusing.”
- “This can get very complicated.”
Notable parts of the talk
Enabling multiple artist work
timestamp: 2 minutes into the presentation
- It allows multiple artists to work on the same scene
- Every department can have its own USD file
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 3:53.
Composing multiple USD files
timestamp: 4 minutes into the presentation
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 4:23.
Sublayering
timestamp: 5 minutes into the presentation
- An empty root layer creates an empty stage
- USD composition works by combining scene graphs (USD files/Layers)
- a.k.a. sublayering
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 5:53.
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 8:00.
- opinions are used to resolve conflicts between scene graphs
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 11:25.
References
timestamp: 12 minutes into the presentation
- “You reference one primitive from one file into the namespace of an existing primitive of a referencing scene graph”
- You can make a primitive into a reference to a scene graph in another file
- You can define root primitives as default primitives
- USD will look for default primitives
- The idea is not to just graft a scene graph on top of the existing scene graph. The idea is to specify the location wherein the existing scene graph USD inserts the source scene graph. Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 14:14.
Payloads
timestamp: 14 minutes into the presentation
- Only load what you want Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 15-54.
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 15-57.
3 ways to compose
- There are 3 principal ways to bring a USD file into a scene graph
- Layers
- adding a USD file on top of an existing USD file
- Referencing
- adding a select primitive of another USD file into a specific location in the base USD file
- Payload
- a reference that you can load or not
- done for memory management and processing time
- a reference that you can load or not
- Layers
Variantset
timestamp: 18 minutes into the presentation
- a non-destructive set of alternatives
- examples:
- dented models that are dented
- models with different textures materials applied
- models ageing over time
- storing LODs
- examples:
- The alternatives are chosen non-destructively by using the “opinion” layer stack
Hydra
timestamp: 22 minutes into the presentation
Rob Stauffer. What is USD: A Primer. July 2019, SIGGRAPH, YouTube. Presentation Timestamp 23-08.
Notes from the Q&A
timestamp: 23 minutes into the presentation
- in theory USD should make the interop between different DCC tools easier
- it all depends on the way the given DCC supports USD
-
previz in Virtual Production can be defined as a USD layer
- USD can hold geometry
- You can set up a USD scene in a way where:
- Some USD files will contain the Scene Description and some USD files will contain the geometry
- example: Pixar USD Kitchen set
- Some USD files will contain the Scene Description and some USD files will contain the geometry
- You can set up a USD scene in a way where:
-
currently missing support for skeletal animation rigs
-
it is possible to define your own types to store different metadata
- there isn’t a standard way to organize the USD layer files
- some studios organize per department
- some organize everything in a flat file
-
you can support multiple renderers, but you might need to store multiple material definitions
- Future work:
- Making it easier to work with materials for different renderers
- MaterialX
- MDL Material
- Supporting shaders
- Making it easier to work with materials for different renderers
Thoughts
Applications in Game dev
- The possibility of leveraging third-party DCCs tools that will use the same format to save levels
- a seamless workflow between proprietary studio technologies and third-party tools
- From what I understand you can use USD in 3 different ways:
interchange
- intermediate format to communicate between tools (buffer/temp files)low
commitment to USD
store
- the authoritative persistent format that all the tools use and save (all your proprietary tools save into a USD file)medium
commitment to USD
render
- implement the Hydra API to render from USDhigh
commitment to USD- a third-party DCC, that supports USD, can render using your proprietary render engine ( see Blender’s Cycles renderer running in the Houdini viewport )
Practical Truths
General Tools Development Wisdom
- Layers can power non-destructive workflows. - layers are key for implementing non-destructive workflows.
- Communicating hierarchies is hard. - it can be a challenge for a non-technical user to grasp hierarchies, especially if merging of hierarchies is a feature.
- Visualization is paramount. - getting the visualization “right” can make all the difference.
Practical Principles
General Tools Development Principles
-
Make it easy for your users to visualize the internal data. Don’t just render the underlying data and call it a day. (see GDC 2018 Notes for “A Tale of Three Data Schemas” )
-
Layers are great for separating artists and department work.
Questions that came to mind
- Is there a good comparison of scene description file formats (open and not)?
- Who supports USD?
- Why the “payload” functionality can’t be done via “composition arcs”?
- Nick Porcino answered:
Composition arcs is just a graph nomenclature. The “arc” expresses the relationship.
level3 -> is_active_in -> world lighting -> is_referenced_by -> level3 night_lighting -> overrides -> lighting grunt -> extends -> player red_costume -> is_referenced_by -> grunt
The mesh in the costume is a payload. The lights in the night_lighting scene might be a payload. etc….
- Nick Porcino answered:
Composition arcs is just a graph nomenclature. The “arc” expresses the relationship.
Notes from the Vault Club
During the discussion in the Vault Club, I learned a lot. Here are some highlights.
- some game dev studios are experimenting with proof-of-concept level editor that saves the scene graph as USD
-
Eskil Steenberg pointed out that USD is more about managing interdepartmental workflows, then about what graphics engineer would look for in a format (polygons, pixels, shaders). “USD, assumes that its part of a pipeline of large DCC applications that supports formats like Alembic, OpenEXR, OpenVDB, OpenShadingLanguage to store the actual data.”
- Nick Porcino mentioned that one of the possible names for USD was “Layered Scene Description”. :)
- The name “Hydra” - comes from the idea that you would implement your own rendering “head”.
- There might be an issue with the coupling between
blind data
andknown data
. Meaning that if an application creates custom data that is based on the USD data, we might break that custom data by modifying the USD data outside the current application.
These notes are just the main ideas of the talk. They don’t contain anecdotes and examples. If you want to learn more, I would advise watching the talk on YouTube.
The Toolsmiths
I took these notes as part of our little “Book Club” for Game Tools related videos The Toolsmiths #vault club
Join us on Slack.
Join us on Twitter.
Links
Related Blog Links
Related Talks\Videos
- SIGGRAPH 2016 Real-Time Graphics in Pixar Film Production
- WWDC 2017 From Art to Engine with Model I/O
- GDC 2019 The Future of Scene Description on ‘God of War’
- USD at UTS Animal Logic Academy video presentations
Related resources
- USD Projects and Resources
- Resources USD
- Article “Last mile interchange” by Nick Porcino
- See Blender’s Cycles renderer running in the Houdini viewport, CG Channel
- VSCode USD Language support
- HxA 3D asset format, Eskil Steenberg
- How to Integrate FX Using USD and Houdini Solaris - Lesterbanks
- Solaris, SideFX
- Intro to USD
- Alembic - an open computer graphics interchange framework
Credits
Post cover image by Alexander Stein from Pixabay