Skip to content

A collection of simple projects for Pixar's open-source Universal Scene Description

License

Notifications You must be signed in to change notification settings

ViktorM/USD-Cookbook

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repository is a collection of simple USD projects. Each project shows off a single feature or group of USD features.

Structure summary

Folders
- concepts/
 - {CONCEPT_NAME}
  - README.md
  - cpp/
  - python/
  - usda/
- guides/
- tricks/

Each USD feature is in the "concepts" folder. Most features have a C++, python, and USDA project folder where you can see how to author that feature in each representation and how it actually looks when it gets written in USD.

How to view

If a concept folder is trying to show off a USD feature but it takes a lot of code then the top-level README.md file is there to summarize the important bits. It may also refer to other resources for where to read more.

Lastly, source-code files may contain explanations for what is shown. Each of these lines is marked with XXX.

How to build

C++

Unless a C++ project has specific instructions, every project compiles and executes using the following commands:

cd {some_concept_cpp_folder}/build
USD_INSTALL_ROOT=/wherever/you/installed/USD/to cmake ..
make
./run_it

USD_INSTALL_ROOT typically defaults to /usr/local/USD on Linux but your location may vary. See USD's build documentation for details.

Python

Python modules can always run using python name_of_module.py

Folder Explanation

  • concepts is where you'll find simple, single features shown by-example. It will have C++, Python, and USDA example projects (whenever possible). If you're the type that makes flashcards, you'll get the most mileage here.
  • guides contains articles of ideas and references that help a user learn USD.
  • tricks is a mixed bag of situations that come up in production and general proof-of-concepts on how to do certain operations in USD. This folder has projects that are too complex or niche to fit in concepts. There's no defined structure for this folder.

Studying

This repository exists mainly as a reference for USD source-code. That said, if you want to treat as if this is a library of tutorials, here's a recommended viewing order:

add_comment

set_kind

specializes

uniquify_an_instance

asset_info

userProperties

world_bounding_box

relationship_forwarding

variant_set_in_stronger_layer

variant_set_production_shot

specializes_glossary_example

specializes_a_practical_example

specializes_as_a_fallback_mechanism

purposes

reference_into_prim

stl_iteration

stl_iteration2

orphaned_over

variant_set_auto_selections

copy_variant_set_to_prim

enable_debugging

profiling

usdview_auto_reloader

variant_fallbacks

registered_variant_selection_export_polices

plugin_metadata

custom_resolver

bound_material_finder

fast_export

flatten_layer_stack

value_clips

mesh_with_materials

sdf_change_block

batch_namespace_edit

caching

multi_payload

notices

notice_send

There's also Anki deck for this repository, which you can download by clicking here

Roadmap

See This wiki page for a list of planned topics that will be added in the future.

Contributing

This repository is a constant WIP. If there's something that you'd like to see written about, please suggest it as an issue so that I / others can pick it up and work on it. Also, if you have something that you'd like to contribute, please make a PR. Submissions are welcome!

Disclaimer

But note: This repository may not actually show the best way to do things in USD. It's just a collection of (my) personal findings. Also, as Pixar comes out with new USD releases and learning resources, this information may become out-of-date. Always prefer primary guides and documentation over anything that you see here.

Final Note

Tested with:

  • CentOS 7.6
  • USD 19.07
  • cmake version 3.13.4
  • make 3.82
  • g++ 8.3.0

About

A collection of simple projects for Pixar's open-source Universal Scene Description

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 40.0%
  • Python 37.7%
  • CMake 22.3%