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.

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