Nodes/ComfyUI-MAINodes/H3 Jerk Heatmap (oracle overlay tile)
ComfyUI Node

H3 Jerk Heatmap (oracle overlay tile)

Watch the de-rope oracle think, then trust it a little less

By matlowai·Created 17 days ago·Updated about 17 hours ago· 112
H3 Jerk Heatmap (oracle overlay tile)
  • images
  • samples
  • IMAGE
alpha0.55
strip_height96
show_drifttrue

Some tools save you time by doing the work. H3 Jerk Heatmap saves you time by showing you what the work would be. It's the oracle in ComfyUI-MAINodes made visible - the exact overlay tile from the pack's demo page, turned into a node you can drop on any graph. It reads the same latent as the H3 Jerk Oracle and paints where the motion is running too hot for the model.

This is the fastest way to understand whether a de-rope is even needed on a given clip, and whether the oracle's read matches yours. Queue once, watch the heat, then decide.

What you're actually looking at

The node computes per-latent-token jerk - the third finite difference of the latent over time, |Δ³| - which is the same signal H3 Jerk Oracle thresholds on. It renders two things on top of your frames:

  • Red-yellow pools where motion per latent token is too fast: these are the bursts the de-rope will hold and regenerate.
  • A bar strip along the bottom drawing the per-token jerk profile with a playhead, so you can watch a burst light up as playback reaches it.

The interesting extra is show_drift (on by default). Regions that move steadily without burst jerk - birds, crowds, traffic: velocity-high but jerk-low - glow blue. That's the "drifter" class, the one thing time warping mishandles: it over-cranks steady background movers inside dilated spans. Seeing the blue before you commit tells you whether you'll need a manual mask to protect the background, which is a whole sub-problem in this pack.

The inputs

Four required, two of them the obvious ones: images (the frames) and samples (the same latent you'd give H3 Jerk Oracle - not a decoded batch, the latent). Then:

  • alpha (0.55 default) - overlay strength. 0.4–0.7 reads well; past that it's just tint.
  • strip_height (96) - height of the profile strip; set 0 to hide it entirely if you only want the overlay.

Output is a single IMAGE (the composited preview). Purely diagnostic - the node changes nothing about the render, so it costs you time, not quality.

Where people get burned

Two things, both easy to miss. First, it's CPU-side: the node pulls the latent and frames to the CPU to draw, so on a long clip the preview can take a moment to appear. That's a cost, not a bug. Second, remember this shows you what the jerk oracle sees - the motion signal. There's a second oracle in this pack (H3 Indecision Oracle) that reads the model's uncertainty instead, and the two genuinely disagree on some clips. If you're tuning which oracle to trust, wire the heatmaps side by side; the strips make the comparison obvious.

Installing it

ComfyUI-MAINodes is pure Python, so:

cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes

Restart ComfyUI, look under image/minimax/motion. The example graphs additionally pull in ComfyUI-KJNodes for SageAttention patches; the pack's nodes don't need it. And you need a MiniMax H3 model on hand - remember its community license excludes the US, EU, UK and South Korea, so check where you're running it.

My honest take: don't leave this node in every graph. Wire it in when you're tuning q/d_max or diagnosing a specific smear, then pull it before the final render. It's a diagnostic, and it deserves to be treated like one.

Categoryimage/minimax/motion

Inputs (5)

NameTypeDefaultDescription
imagesIMAGE
samplesLATENT
alphaFLOAT0.550–1
strip_heightINT960–256
show_driftoptBOOLEANtrueblue overlay on steady movers (velocity-high, jerk-low): the birds

Outputs (1)

NameTypeDescription
IMAGEIMAGE