USD Concepts in the New 3D System
Nuke's Approach to USD
Nuke’s New 3D System is designed for all artists and meant to be intuitive for artists who are not familiar with USD. In the New 3D System, you have the choice of a range of nodes, some of which allow you to create objects (prims) natively in USD in Nuke and some that import or convert data, which allow you to work flexibly with a range of assets. Nuke intends to use USD in a way that is useful for compositors, such as by having additional controls, like the strength ordering options as outlined below.
|
• Having some basic USD knowledge may help your understanding of the New 3D System. It will be helpful to understand terminology like prims, layers and stages and these terms will be used throughout this User Guide. See USD Basics: Stage, Prims, and Layers to learn about these. • When compositing in Nuke, you may want to use USD to bring in assets, cameras, and lights (prims) and then manipulate these in your scene. To learn more about prims, see Primitive Types and Primitive Attributes. |
Nuke's Controls
In USD typically, you author by setting the value on an object’s (prim’s) attribute and this is considered ‘authoring an opinion’. The USD framework works by arranging layers and objects (prims) in a hierarchy. Therefore some of the layers, based on USD composition arc rules and strength ordering, have a higher opinion than others and may override others. However, the way Nuke approaches this is to let artists have full control over this so they can change the rules to support an efficient workflow for them.
You'll see that certain nodes have additional settings, such as GeoBindMaterial node's Binding Strength parameter, which helps make sure your materials are being assigned regardless of other layers which may be present. See more at Using GeoBindMaterial to Assign Materials.
We have introduced Authoring Modes to give greater control of specific knobs.
Across some of the key New 3D System nodes, there are knobs to the left hand side
that let you select from two options: Set and No Change. Directly interacting with the knob automatically updates this to Set mode, making changes faster. You can then easily revert back to No Change if you want to restore the USD default value.
Because the value you set is an opinion, there may be stronger opinions set elsewhere in your stage that modify this attribute value when the final stage is composed. These added authoring mode options allow you greater control over this:
Set - Directly interacting with the knob has it automatically update to ‘Set’ mode. Use this option if you want to set the knob’s current value, regardless of whether it’s the knob’s default or not. This will be the USD prim attribute, or ‘authored’. Depending on whether the knob’s value matches the USD prim attribute’s default schema value will determine if the attribute is actually ‘overridden’.
No Change - use this option if you do not want to author any value on the USD prim attribute, or if you want to reset the knob’s value back to the knob’s default (not the USD schema default).
USD Configuration
USD Versions
Refer to Third-Party Libraries and Fonts to find out about which USD version is supported by Nuke. To change or modify the USD version within Nuke, it can be accessed in its own subfolder, which has the same structure as a USD build.
Tip: You can set an environment variable to make swapping between different USD versions with Nuke easier.
For setting up your own Custom USD version with Nuke, please reference the Readme.md in the following Nuke directory:
/source/FnUsdShim/Readme.md which is found next to the Nuke executable.
USD Python Bindings
Nuke exposes Pixar's USD Python API allowing you to manipulate USD data directly through Python, giving you greater control over how you work with USD data in Nuke and more flexibility when building your USD-based pipeline tools. The API can be used in any Python script and in Nuke’s Script Editor directly by calling:
import pxr
For more information on how to use Pixar's USD Python bindings, please refer to their official USD documentation: https://openusd.org/release/index.html