Repo for learning about the OpenUSD "fileformat". A "Universal Scene Description", OpenUSD both provides a specification (through the code structure) for how to save information on disk, but also a runtime API to weave together complex interlocking information.
For more info and to get help: https://forum.aousd.org/
Related Projects: SketchPad | GHActionsForOpenUSD
USD, unlike other "file formats", has a a mission to provide NON DESTRUCTIVE compilation of information. That makes USD data storage verbose, but also very flexible, and very easy to work on in teams.
This repo focuses on understanding the specification for saving information in human readable format, the .usda file.
Proposed Spec for USDA files discussion:
PixarAnimationStudios/OpenUSD#2126
Proposed Spec for USDC files discussion:
PixarAnimationStudios/OpenUSD#2086
Asset Structure Guidelines:
https://github.com/usd-wg/assets/blob/main/docs/asset-structure-guidelines.md
These are overviews of what USD is / what problems it was meant to solve, not technical installing the library how-tos.
Luk, Aaron. “Universal Scene Description (OpenUSD): 4 Superpowers to Get You Started,” Video (4:11). YouTube NVIDIA Developer Channel: https://www.youtube.com/watch?v=1RnTSZK9Sw. Accessed: 2023 07 13.
Brief overview of what makes USD special by one of the folks who was there at the beginning.
Van Gelder, Dirk, "Introduction to USD," Video (26:36). NVidia-On-Demand, GTC Digital (April 2021): https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s33132/?playlistId=playList-911c5614-4b7f-4668-b9eb-37f627ac8d17. Accessed: 2023 07 13.
This does include some 101 how to information, but also explains why USD does things that way. Python focused.
- Luk, Aaron. "An Overview of Universal Scene Description (USD) for Building Virtual Worlds," Video (39 minutes). NVidia-On-Demand, GTC Digital Spring (March 2023). https://www.nvidia.com/en-us/on-demand/session/gtcspring23-s52054/ Accessed: 2023 07 13.
Has many "where to find more info" resources at the end.
-
Various Authors. Book of USD: Getting Started With Universal Scene Description. https://remedy-entertainment.github.io/USDBook/ Accessed: 2023 07 13, https://github.com/Remedy-Entertainment/USDBook/ Accessed: 2023 07 14.
-
Various Authors. "USD Terms and Concepts." Universal Scene Description. https://openusd.org/release/glossary.html Accessed: 2023 07 13, https://github.com/PixarAnimationStudios/OpenUSD/tree/release/docs Accessed: 2023 07 13.
The glossary on the official documentation site, alphabetical by definition, cannot be read in a way that presents a cohesive narrative.
The Book of USD resource provides simpler definitions in a useful order as an entry point to learn more.
The authors of the Book of USD recommend cross referencing what they've written with the glossary, so I list them as companions.
https://developer.nvidia.com/isaac-sim No spoilers.
Learning content hubs
- https://openusd.org/
- https://developer.nvidia.com/usd
- https://wiki.aswf.io/display/WGUSD/Learning+Content
- https://developer.apple.com/search/?q=USD
Gotcha's that got me:
- Swift
UUID()
is too long to be a prim identifier, also may start with a number which appears to be not allowed. - ARKit compliant usd files must be a single usdc file or a usdz archive that contains a single usdc file (plus assets).
- A defaultPrim cannot be a nested prim, e.g. no "defaultPrim = MainPrim/SubPrim"
See SETUP.md for install instructions for the Pixar library and mention of USDZ Tools.
.usda files pulled from explorations
that are good exemplars of a learned concept.
All of these examples pass usdchecker
but NONE will pass usdchecker --arkit
because none of them are usdc files.
usdcat -o output_test_2.usdc --flatten $USDA_ROOT_FILE_PATH_WITH_EXT
Will make many of them pass so far.
the support files for the learning about the USD file format series on whynotestflight.com. More of a dev journal / travelogue than a how to
- Part 1: Handwriting USDA files to show a sphere. A python script to generate several of multiple colors.
- Part 2: Meshes, and colors and materials, oh my
- Part 3: Exporting from RealityComposer
- Part 4: first whack at getting the python tools working
- Part 5: getting
usdview
to work - See SETUP.md, it's up to date - Part 6: Swift script to Match Day 1
- Part 7: Getting a checker ARKit compliance checker script working
- Part 8: Part 6, but in Package with ArgumentParser
- Part 9: Learning through Writing a DSL
- Part 10: Reading Day, references and takeaways
- Part 11: More Swift than USD StringNode Result Builder
- Part 12: Refactoring the USDA writer using previous day's work.
- Part 13: simplistic USDA validation via XCTest
- Part 14: Running those tests on Linux
- Part 15: Cache a USD Build with a GitHub Action
- https://openusd.org/release/index.html
- https://github.com/PixarAnimationStudios/OpenUSD
- https://openusd.org/release/api/usd_page_front.html
- https://openusd.org/release/api/_usd__page__properties_of_scene_description.html#Usd_PrimSpecifiers
- https://developer.nvidia.com/usd
- What is USD video: https://www.youtube.com/watch?v=1RnTSZK9SwM
- Getting started USD: (39 minutes) https://www.nvidia.com/en-us/on-demand/session/gtcspring23-s52054/
- Introduction to USD https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s33132/?playlistId=playList-911c5614-4b7f-4668-b9eb-37f627ac8d17
- Plumbing the Metaverse: https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s31946/
- https://github.com/NVIDIA-Omniverse/USD-Tutorials-And-Examples
- https://docs.omniverse.nvidia.com/prod_usd/prod_kit/dev_usd/quick-start/api.html
- https://wiki.aswf.io/display/WGUSD
- https://wiki.aswf.io/display/WGUSD/Learning+Content
- https://github.com/usd-wg/assets
- Understand USD Fundamentals, WWDC22, https://developer.apple.com/videos/play/wwdc2022/10129/
- Working with USD https://developer.apple.com/videos/play/wwdc2019/602/