Soften any Tracker transform, stabilize or match move, to any fraction of itself, or put parallax between layers.
dhSoftTransform
First submitted: 19 September 2026
Author: David Hochstadter
Website: https://www.paladinfx.com/dhsofttransform/
Compatible Nuke versions: 13.0 or later
Compatibility: Linux, Mac, Windows

Apply less of a transform you have already made. Your Tracker gives you all or nothing; this puts a softness slider between the two.
What it does
First, it softens a stabilize. You match a feature, export a stabilize, and the shot is locked solid. Often that is too much. A completely locked plate looks dead, and what you actually wanted was most of the correction, not all of it. dhSoftTransform adds a softness control to the Transform or CornerPin the Tracker exported, so the correction can be dialed back to any fraction of itself. 0 is the track exactly as exported. 10 is fully soft, which is the plate as shot. Everything between is a straight fraction of the same motion, and a match move softens the same way.
It moves the plate less rather than dissolving between two copies of it, so it cannot ghost.
Then, it is a parallax tool
A partial transform decides how much a layer moves, and that is a depth control. Say you are comping a foreground element over a plate whose camera drifts. Track the plate. Give the background layer that track with the softness low, so it barely moves, and give the foreground layer the same track with the softness high, so it keeps most of the drift. Now the background moves less than the foreground: the far layer hangs back, the near one travels, and the shot has parallax it never had. Each layer gets its own dhSoftTransform node, so the two amounts are independent. The same idea works between any two layers that share a camera move.
Using it
Select the Transform or CornerPin2D the Tracker exported, press Tab, type dhSoftTransform. A small dhSoftTransform node appears beside it holding the sliders, and Nuke draws the link between the two. Nothing is inserted into your image stream. The node being softened keeps its own panel, handle and motion path, so you can have both panels open and work with them side by side.
On a Transform you get translate, rotate and scale softness separately, because the usual need is to keep the roll locked while letting the framing breathe. Under translate and scale there is a checkbox that splits that one control into x and y, or w and h, when the axes want different amounts. A CornerPin gets one control, since four corners have no rotate or scale to separate.

Invert stays yours
On a CornerPin or a Transform, invert on is what turns the Tracker's match move into a stabilize, and dhSoftTransform never changes it. Softness applies either way: a match move softened moves less, a stabilize softened locks less. So to soften a stabilization, make sure invert is on first, or use the Tracker's own stabilize export, which already is. If the result moves twice as far instead of less, invert is the wrong way round for what you meant, and it is one click to fix.
Several at once
Select more than one node and run it, and they all share one dhSoftTransform node. One set of sliders softens all of them together. Select more later and run it again, and they join the same node.
Both Tracker exports
The normal "create Transform stabilize" has no keyframes at all, only live expressions back to the Tracker, and dhSoftTransform wraps those rather than replacing them, so your node stays connected and still updates if you retrack. The baked export works the same way through its keyframes. Nothing is ever baked by the tool, and the tracked keys are left exactly where they are. Key a channel afterwards and run the tool again; it picks that channel up and leaves everything already set alone.
Taking it off
Delete the dhSoftTransform node and everything it drives goes back exactly as it was, link to the Tracker included. There is also a remove command for taking a single node off a shared control, or for putting a node back whose control node is already gone.
Everything is explained inside the node, on a How to use tab of its own.

Installing
Unzip it. Drag the dhSoftTransform folder into your .nuke folder. Add one line to init.py in that same folder:
nuke.pluginAddPath('./dhSoftTransform')
Quit Nuke and start it again. It shows up under Tab, and in the Nodes menu under DH_Tools > Transform.
Nuke 13 and up, Windows, Mac and Linux, tested on 15, 16 and 17. The control node is a plain Nuke NoOp with the sliders saved in the script, so scripts render on a farm without anything installed. The README in the download has the full version, including what to check if it does not turn up.
By David Hochstadter. paladinfx.com/dhsofttransform
Free to use and free to pass on, personally or at a studio, including on a render farm.
Comments