System 05 · September 2026
DepthCrafter depth node
Temporally consistent depth from a video diffusion model, as a Slate node: plug the shot in, draft a preview in seconds, run the full pass with a live ETA, and get depth back in the plate's frame numbers.
Measured results
- Full run 30 minutes 133 frames at 1280 by 576, 25 steps, on one RTX 5090 at 29 GB of VRAM. Cost scales with frames times steps, about 14 s per frame at 25 steps.
- Draft preview 12.6 seconds 12 frames at 4 steps through the worker, 25.8 s wall clock through the node, so the artist sees the depth before committing the half hour.
- Frame-to-frame flicker none measured Frame means drift smoothly across the 133 frames (15819, 15375, 18686 at frames 0, 66 and 132). The per-frame jumps that mark a single-image model are absent.
- Temporal window 110 + 25 frames + overlap The model's window and overlap. A 180-frame plate is two windows; a square-pixel 73-frame run at 1280 by 896 took about an hour.
Problem
Single-image depth models flicker. Relative inverse depth has an ambiguous scale and shift per frame, so consecutive frames land on different mappings and any defocus or relight driven by them pulses. The alternatives were a cloud API per second of footage or a research repo with a README written for another machine and another Nuke.
Method
DepthCrafter is a video diffusion depth model built on Stable Video Diffusion, so temporal consistency comes from the model rather than from filtering afterwards. Running a modern PyTorch inside Nuke on Windows is impossible, because Nuke ships its own libtorch and the CUDA runtime binds to it, so inference runs out of process in Nuke's own Python with no Nuke DLLs loaded. The node renders a desqueezed proxy at a multiple of 64 with one exposure for the clip, hands the worker a job file, shows progress and an ETA, and re-fits the returned depth to the plate box with the plate's frame numbers.
In production
The README for the plugin this started from was wrong for this machine in five places: Python version, CUDA build, a pip resolver that silently swaps the CUDA torch for a CPU one, a numpy that breaks OpenCV, and an install location that would have wiped every other Nuke plugin. Fixing those got a working pipeline outside Nuke and a crash inside it, and the crash was the real finding. Nuke 17 loads its own libtorch at startup for CopyCat and Inference, so any pip-installed torch binds to Foundry’s c10.dll and dies with a missing procedure. This is also why Cattery exists: .cat files run on Nuke’s own libtorch. The general rule for this workstation is now proven: any model that needs a modern torch runs out of process, with Nuke’s bundled Python as the interpreter.
The node is what makes that usable. A draft of 12 frames at four steps answers “is this the right plate and the right crop” in under half a minute. The full run writes EXRs numbered like the plate, so there is no offset to remember, and a smoke run of the same pipeline proved the frames read as a clean subject silhouette with a smooth near-to-far gradient before the long run was started.
Output is relative depth: temporally consistent, not metric. That is enough for defocus and relighting guides and not enough for anything that needs scale.
Next: the re-run on own footage for the reel capture, and a look at the temporal successor to Depth Anything, which runs as a hosted API at cents per second if local time ever becomes the bottleneck.