Nodes/ComfyUI_zura_nodes/Zura · Colour Depth for Seedance
ComfyUI Node

Zura · Colour Depth for Seedance

Fake-colour depth maps, because Seedance can't read a mask

By ZURAVFX·Created about a month ago·Updated a day ago· 2
Zura · Colour Depth for Seedance
  • depth
  • coloured_depth

Here's a genuinely different kind of node for this pack. It takes a depth map and turns it into a colour-coded image. That's it. One input, one output, about thirty lines of arithmetic. The reason it exists is the whole story, and it's a nice illustration of the difference between the graph you control and the API you call.

Why you can't just send a mask

Seedance is a hosted ByteDance model - no open weights, no local option, and if you want it, you call it, with credits. That means you drive it the way an API expects: reference video in, prompt in, video out. You cannot hand a closed video-editing API a load-bearing binary mask and expect it to respect it; what you can do is hand it visual information it will actually interpret.

So the pack's Seedance draft graph does this: it runs a depth pass over the source frames, colourises the depth with this node, and passes it into the reference node alongside the video. The prompt in the shipped graph spells the intent out - "Follow the coloured depth performer for movement and expression. Keep the original RGB background, framing, camera movement, action timing and mouth movements."

The coloured depth is a motion-and-shape guide that survives the trip through a hosted model, because it's just pixels. Depth rather than pose because depth preserves the whole silhouette, not a skeleton.

What the arithmetic does

It takes the mean of the first three channels - so a grayscale depth map duplicated into RGB works fine - giving a normalised value v per pixel, then produces three folded ramps:

red = clamp(1.5 − |4v − 3|, 0, 1), green = clamp(1.5 − |4v − 2|, 0, 1), blue = clamp(1.5 − |4v − 1|, 0, 1).

The result is a continuous false-colour palette that sweeps blue → cyan → grey → yellow → red across the depth range, with a mid-grey band at v = 0.5. One end of your depth range reads blue, the other reads red, mid-range detail sits on the yellow/grey transition - so how a subject reads depends on the polarity of the depth map feeding it. It's a viewport-style depth readout, not a photoreal render, and that's the point: it's a guide that stays legible even at modest resolution, which matters when you're handing a reference clip to a paid API.

Inputs and outputs

depth (IMAGE) in, coloured_depth (IMAGE) out. That's the entire schema. Distance-wise it's the simplest node in the pack.

Feed it from any depth estimator - the pack's graphs use DepthAnythingV2Preprocessor, and docs/knowledge/depth-estimation.md covers the wider field if you want a different estimator. Keep the depth map at a sane size before colourising: the depth pass is the expensive half, and a 720p guide is plenty for a hosted model.

Install

ComfyUI Manager → search Zura Nodes → install → restart ComfyUI:

cd ComfyUI/custom_nodes
git clone https://github.com/ZURAVFX/ComfyUI_zura_nodes
python -m pip install -r ComfyUI/custom_nodes/ComfyUI_zura_nodes/requirements.txt

No models, no ffmpeg, no dependencies beyond PyTorch - but note the depth preprocessor feeding it usually comes from comfyui_controlnet_aux (a separate pack), and if you're using the pack's own Seedance route you'll also want ComfyUI's official API nodes plus a Comfy account with credits, since Seedance calls are metered per generation and the pack ships separate draft and final graphs precisely because the draft is the cheap one.

Gotchas

  • It averages the first three channels. You cannot feed it an RGB image and get something meaningful out. Garbage in, saturated rainbow out.
  • Colour-space matters more than you'd think. Generated as a float image in the working space, this palette is a map, not a photo. If you convert it or tone-map it on the way to an API upload, the blue-red relationship gets skewed and the guide gets less legible. Keep the chain simple.
  • Depth is a preview, not a promise. The same caveat the pack applies to its other guide-based routes applies here: a structurally valid guide doesn't guarantee the hosted model follows it. Run one draft, look at it, then decide whether to pay for the final - which is exactly what the pack's two graph stages are arranged to make you do.
CategoryZura/Artist Studio

Inputs (1)

NameTypeDefaultDescription
depthIMAGE—

Outputs (1)

NameTypeDescription
coloured_depthIMAGE—