Nodes/ComfyUI-CineStack-H3/CineStack H3 Director Group (Reference to Video)
ComfyUI Node

CineStack H3 Director Group (Reference to Video)

Nine Pictures, Three Videos, Three Audios — One Node per Reference Shot

By guomenghao·Created 6 days ago·Updated 2 days ago· 0
CineStack H3 Director Group (Reference to Video)
  • ref_images
  • ref_videos
  • ref_video_audios
  • ref_audios
  • group
◄prompt►
◄duration_sec5.0►
◄ref_image_sizematch►
◄first_pass_seed►

Reference-to-video is the H3 task where the model reads tagged material instead of just words: <Picture 1> for a face, <Video 1> for a motion reference, <Audio 1> for a voice. In the official graph you wire all of that into one enormous node with autogrowing slots. In CineStack, the Director already holds a shot list - so this node is the same material set, scoped to one shot, packable into a list.

CineStack H3 Director Group (Reference to Video) outputs a single group that the Director's r2v_groups socket accepts. Same idea as its Image to Video sibling, with the reference slots bolted on.

The slots

Four autogrow inputs, and the caps are the official ones - connect into the last empty slot and another appears:

  • ref_images up to 9, mapping to <Picture 1> … <Picture 9>
  • ref_videos up to 3, as IMAGE batches, mapping to <Video 1> … <Video 3>
  • ref_video_audios up to 3, the soundtrack paired with the same-numbered reference video - so slot 2's audio attaches to video 2
  • ref_audios up to 3 standalone audios, mapping to <Audio 1> … <Audio 3>

That distinction between ref_video_audios and ref_audios is the one that confuses people. A reference video with dialogue in it wants its audio in the paired slot. A voice you want the model to imitate wants the standalone slot. Get it wrong and the model hears a soundtrack where you meant a performance.

The required prompt is where those tags earn their keep - the tags are how the model knows which element you're talking about, so "the woman in <Picture 1> walks as in <Video 1>" is the shape of a working prompt. duration_sec is per-group, defaults to 5 seconds, and snaps to H3's 17k+5 frame grid at the Director's frame rate.

ref_image_size is the one real decision

Every group carries its own ref_image_size, and the Director honours the per-group value. match downscales references to roughly the generation pixel area, which is the fast default and the one to use while you're iterating. The numeric options (1024, 1280, 1536) cap the long edge before the official maximum; max is the official 2048 short-edge treatment.

Higher looks better and costs you real time and VRAM on encode. If a shot has nine reference images at max, you've just made the most expensive node in your graph a text-encode-adjacent step.

first_pass_seed is the usual decimal STRING: full uint64 range, blank inherits the Director card then the global seed, 0 means zero.

Output

One group, type MMX_DIR_GROUP. Into the Director's r2v_groups for a single shot, or into a Groups Combine for a sequence. Output size stays on the Director - this node packs material, not canvas.

Worth knowing: these groups feed the reference material side. Source-video modes (v2v and rv2v) still get their source clip from the Director's own timeline panel with its segmentation, so the group node is for the reference sets, not for the source footage.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/guomenghao/ComfyUI-CineStack-H3.git
python -m pip install -r ComfyUI-CineStack-H3/requirements.txt

Restart, then find it under CineStack/H3/Groups. Reference modes need the ref2va UNET rather than the fl2va one, plus the minimax CLIP and both VAEs - the audio VAE isn't optional once references are in play. There's a working template in the repo at example_workflows/minimax_h3_director_external_groups_r2v.json, and it's a wiring template, not a preset.

Where people get burned

"It says the reference conditioning needs audio_vae." You connected a reference image, video or audio and left the audio VAE off the Director. The reference path builds an audio+video latent and can't do that without it.

The tag does nothing. Either the number is wrong (<Picture 2> with only one image connected) or the material is in the wrong slot family. Tags are positional - the model doesn't guess.

Nine references and the shot changed character. More reference images is not more fidelity; it's more context competing for attention. Two or three clear images usually beats nine mediocre ones, and ref_image_size: match at least keeps the encode honest.

Nothing you edit on the Director's cards takes effect. External groups override the UI cards. That is the documented priority order, not a bug.

CategoryCineStack/H3/Groups

Inputs (8)

NameTypeDefaultDescription
promptSTRINGPrompt; use <Picture N> / <Video K> / <Audio J> tags.
duration_secFLOAT5.00.2–120Clip duration in seconds (snapped to MiniMax 17k+5 frames @ fps).
ref_image_sizeCOMBOmatchPer-group ref sizing (Director reads this). match: downscale to the generation pixel area. 1024/1280/1536: cap the long edge, then official max. max: official 2048 short-edge. Default match; smaller is faster.
ref_imagesoptCOMFY_AUTOGROW_V3Reference images → <Picture N>. Connect to grow another slot.
ref_videosoptCOMFY_AUTOGROW_V3Reference video frame batches → <Video K>.
ref_video_audiosoptCOMFY_AUTOGROW_V3Soundtrack paired with the same-numbered reference video.
ref_audiosoptCOMFY_AUTOGROW_V3Standalone reference audio → <Audio J>.
first_pass_seedoptSTRINGFixed first-pass seed; empty inherits the Director card/global seed.

Outputs (1)

NameTypeDescription
groupMMX_DIR_GROUP—