Native USD Transformations

In USD, transformations are used to position, orient, and scale prims in 3D space.

To perform transformations in Katana, you can use the UsdTransformSet node to set transformations, and UsdTransformEdit to overwrite existing transformations. Other nodes also allow you to edit their transformation values directly in its parameters, for example UsdXform, UsdCamera, and UsdLight.

Tip:  The scenes used in the examples below can be found in Katana under Help > Example Projects > Native USD > Manipulating USD Data.

When editing a scene with transformations applied, you’ll see that USD stores transformation data via XformOpOrder. One way to think about xformOpOrder is that it describes a series of transformations to apply.

When transforming via the UsdTransformSet, the rotateXYZ, scale and translate values are stored in the Attributes tab and referenced within the xformOpOrder property.

This data is visible and editable in Katana in the Attributes Tab:

On the UsdTransformSet node, the appendTransform parameter can be toggled to drive how these values are stored:

When disabled, the xformOpOrder will store the values set on that node, and discard any previous/incoming transformations on that prim. You will end up with one set of transformations under the xformOpOrder, as seen in the image above.

When enabled, the xformOpOrder will “append” the transformations set on that node, and add it to the list, in addition to any previous transformations that had been set on the prim. This can be seen in the image below.

Note:  As of Katana 7.5, the attributes created by the UsdTransformSet node are authored in scale, rotate and translation components, rather than matrices (as it was in Katana 6.5 and Katana 7.0). When makeInteractive is set to No, the asMatrix parameter is still available as an option to set these attributes as a matrix.

Using UsdTransformEdit

In contrast, the UsdTransformEdit node will identify incoming transformations on a prim, and automatically populate the transformation parameters on the node itself. When modifying the prim’s transformations from the node interactively, it will override the xformOpOrder to only store the values set on the node.

The snapshot below shows that the prim contains multiple transforms from upstream UsdTransformSet nodes. However the UsdTransformEdit in edit mode will override to xformOpOrder to only take its own transformations into consideration.

To use the UsdTransformEdit, you can follow the same steps as UsdTransformSet node, with one additional step. After specifying your primPath, you will also need to fill in the xformOpName field, which will populate the translate, rotate and scale with its values. You can then use the Manipulators to change the values, and this will overwrite them. See Viewer Manipulators for Native USD below.

Note:  The UsdLight node, when set to edit mode will follow the same behaviour as the UsdTransformEdit node and override the transformation properties the same way.

Viewer Manipulators for Native USD

You can use Viewer transform manipulators against USD native scene locations, via various USD nodes: UsdTransformSet, UsdTransformEdit, UsdCamera, UsdLight, and UsdXform.

For example, using the UsdTransformSet node, you can allow interactive manipulation in the Viewer tab by following these steps:

Connect a UsdTransformSet node to your scene.

Specify the location to be transformed in the primPath parameter.

Tick appendTransform, if you want to add the transformations to the list of operations in USD. In the example below, the robot had pre-existing transforms, that we can see applied when we toggle that option.

Make sure the makeInteractive parameter in the UsdTransformSet node is set to Yes, which it is by default.

Note:  Interactive transformations against USD native locations are available exclusively when the mode parameter is set to Single Path. When set to multiple locations, interactive transformations through the Viewer are currently unavailable.

Select the prim in the Viewer or Scene Explorer.

You can then use Viewer manipulators through the UI in the Viewer tab, or use shortcuts to Translate 'W', Scale 'E' and Rotate 'R'.

Note:  The Center of Interest manipulator is currently not supported with USD native prims.