Aller au contenu

uTransform Node

By Kriss Norde

The uTransform applies a 3D transform (Translation, Rotation, Scale) to a USD scene. It lets you position / orient / scale an asset without modifying the source file. It is animatable (animatable TRS) for motion effects. The counterpart of the classic Transform 3D, but for USD.

Overview

uTransform inserts a transform at the USD scene level: everything downstream of the uTransform is translated / rotated / scaled according to the parameters. It lets you compose assets while keeping the source USD files intact.

Typical case: a character.usd asset at the origin (0,0,0), a set.usd with its own origin. A uTransform on the character places it correctly in the set, and TRS animation makes it move.

Where to find this node

  • Effects Library: Tools > USD > uTransform
  • Quick add: right-click in the Node Editor → Add Tool > USD > uTransform

uTransform vs Transform 3D

Transform 3D
A transform applied to native Fusion 3D nodes (Cube, ImagePlane, etc.). The classic Fusion workflow.
uTransform
A transform applied to USD scenes. The modern USD workflow. The output stays USD for use by other USD nodes.

Rule of thumb: do not mix the two worlds. uTransform for a USD pipeline, Transform 3D for a Fusion 3D pipeline.

Inputs

  • SceneInput (green) - the USD scene to transform.
  • Output (green) - the transformed USD scene.

Setup

Placing an asset in a set:
uLoader (set.usd) ─┐
                   │
uLoader (character.usd) → uTransform (Position = (5, 0, 3),
                                     Rotation = (0, 90, 0))
                                       │
                          uMerge ──────┘
                            ↓
                          uRenderer

Simple animation:
uLoader (asset.usd) → uTransform (Position animated 0→100 on X)
                    → uRenderer

Transform hierarchy:
uLoader → uTransform (parent) → uTransform (child) → uRenderer
   = combined transforms (parent + child)

Custom pivot:
uTransform (Pivot = (0, 1, 0)) = rotation around a pivot 1m up

Controls tab

Translation X / Y / Z (defaults: 0,0,0)
Position of the scene in scene units (typically meters). Animatable.
Rotation X / Y / Z (defaults: 0,0,0)
Euler rotation in degrees around the 3 axes. The rotation order follows USD convention.
Scale X / Y / Z (defaults: 1,1,1)
Scaling. Lock X/Y/Z for uniform scaling, or keep them independent for stretching.
Pivot X / Y / Z (defaults: 0,0,0)
Pivot point for rotation and scale. The scene origin by default. Change it to rotate around another point.
Rotation Order (default: XYZ)
The order in which Euler rotations are applied. Standard USD convention, but adjust it when importing from another app with a different convention.

Use cases

  • Positioning an asset in a scene - place characters / props / vehicles in a set without modifying the source USDs.
  • Simple animation - animate Translation to move an asset, Rotation to rotate it, Scale to grow it.
  • Asset reuse - the same USD asset used in several places = several uTransforms with different positions.
  • Unit conversion - an asset modeled in cm in Maya, a scene in m in Fusion = a uTransform with Scale 0.01 for the conversion.
  • Pivot animation - animation around a specific point (a door opening, a wheel turning) = an adapted Pivot + an animated Rotation.
  • Transform hierarchies - several uTransforms in a cascade for parent/child hierarchies.

Tips

  • Consistent scene units - match the unit of the USD file (meters / cm / inches). Otherwise you get odd scales.
  • A well-chosen pivot - for rotations around a specific point (e.g. a wheel), the Pivot must be at the center of the wheel.
  • Rotation Order when importing from another app - Maya YXZ, Houdini XYZ, etc. If rotations look odd after import, try different Rotation Orders.
  • Native animation rather than many keys - for complex motion, consider native USD animation (stored in the file) rather than animating everything in uTransform.
  • Cascade for hierarchy - several uTransforms in a cascade = a hierarchy of combined transforms (like parent/child). Easy to read.
  • Neutral performance - uTransform is very light to compute. Use as many as you need without worrying about performance.
  • For sophisticated animation (squash/stretch, animated non-uniform scaling), consider editing the USD directly in Houdini / Maya for native animation.