Nodes/IAMCCS-nodes/MiniMax H3 R40 · Candidate Preview
ComfyUI Node

MiniMax H3 R40 · Candidate Preview

Look at the H3 seed candidates before you commit to the full render

By IAMCCS·Created 11 months ago·Updated a day ago· 113
MiniMax H3 R40 · Candidate Preview
  • latent
  • video_vae
  • preview
  • report
trim_frames
max_preview_frames49
max_preview_width512

Scouting seed candidates is only useful if you can actually see them. IAMCCS_MiniMaxH3SeedPreviewR40 is the pair of eyes on the R40 Shot Lab pipeline: you point it at one candidate's latent, it decodes a cheap preview image, and you decide whether that take deserves the expensive native pass. It's a small node, but it's the one that makes "pick the winning take" a human decision instead of a dice roll.

Mechanically it's simple and that's the point. It VAE-decodes the latent, trims off the context frames you don't want to look at, downsamples the frame count and width so you get a snappy preview instead of a full 2K decode, and hands you an IMAGE you can view right in the graph. The defaults keep it cheap: up to 49 preview frames at up to 512px wide. If a candidate is marked inactive (candidate count was lowered in the shot plan), the node short-circuits and returns a blank frame with a "candidate inactive" report rather than decoding garbage.

Because H3 latents carry audio too, it's worth saying what this does not do: it decodes video frames only. This is a look-at-the-picture node, not the real decode - the actual full-res video-and-audio decode happens later in IAMCCS_MiniMaxH3SelectedDecodeR40 once you've committed to a take. Preview first, commit later. That split is the whole R40 caching story.

Inputs and outputs

  • latent - the candidate's latent, straight from a SeedCandidateR40 node.
  • video_vae - the H3 video VAE.
  • trim_frames - frames to trim off the front (the context/overlap frames you don't want in the preview). This comes from the planner as a force-input, matching the trim used by the real decode.
  • max_preview_frames (default 49) - cap on frames, stride-sampled evenly across the clip.
  • max_preview_width (default 512) - cap on width, aspect preserved.

Outputs: preview (an IMAGE you can attach to a preview widget or SaveImage) and report (which candidate, its seed, and how many frames you're looking at - handy when you're comparing four previews side by side and can't remember which is which).

The honest take

The report string is the sleeper feature. When you have four candidates in a row and they all look samey at 512px, the seed in each report tells you which one you're about to pick - and SeedSelectR40 reads the winner's stamped seed from the latent itself, so what you preview is exactly what gets selected. No drift between the thing you looked at and the thing that renders.

One genuine gotcha: this preview is low-res by design. Faces and fine motion are exactly the things that look worse at 512px, and they're also the things that differ most between H3 takes. Use it to kill obviously wrong candidates, but don't expect it to pick your best framing for you - that's what the full native decode and stage-2 pass are for. And a blank/black preview with an "inactive" report is not a bug; it means that candidate slot isn't configured in the shot plan.

Install

It's part of IAMCCS-nodes, so install the pack once:

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes

or via ComfyUI Manager (search "IAMCCS"), then restart. You need the whole R40 scaffolding around it - a candidate source and the shot plan in cine_linx - plus MiniMax H3 and its VAEs running in a current ComfyUI (≥ 3.x, Python ≥ 3.12, PyTorch ≥ 2.8). If you're in the US, EU, UK or Korea, remember the H3 community licence excludes you from running the local weights at all.

CategoryIAMCCS/MiniMax H3/R40 Shot Lab

Inputs (5)

NameTypeDefaultDescription
latentLATENT
video_vaeVAE
trim_framesINT
max_preview_framesINT491–209
max_preview_widthINT512128–1024

Outputs (2)

NameTypeDescription
previewIMAGE
reportSTRING