Nodes/ComfyUI-CineStack-H3/CineStack H3 Director Conditioning
ComfyUI Node

CineStack H3 Director Conditioning

The Two Wires Every H3 Graph Needs, Minus the Timeline

By guomenghao·Created 6 days ago·Updated 3 days ago· 0
CineStack H3 Director Conditioning
  • clip
  • vae
  • audio_vae
  • first_frame
  • last_frame
  • reference_image_0
  • reference_image_1
  • reference_image_2
  • reference_image_3
  • reference_image_4
  • reference_image_5
  • reference_image_6
  • reference_image_7
  • reference_image_8
  • positive
  • latent
◄prompt►
◄width864►
◄height480►
◄length124►
◄ref_image_sizematch►

H3 conditioning isn't one node in the official graph - it's an encode step, a latent construction step, and a sizing decision about your reference images. CineStack H3 Director Conditioning squashes all three into a single node that hands you the two things a sampler actually wants: a positive CONDITIONING and an empty AV latent.

That's it. No timeline, no segments, no cache. If you've been using the big Director node and wondering what the small one is for, this is it.

Why you'd reach for it

Every H3 task - text to video, image to video, first/last-frame, reference-to-video, video edit, reference video edit - needs the same pair before you can sample. Doing it by hand means wiring the official MiniMaxH3ImageToVideo or MiniMaxH3ReferenceToVideo node, remembering that the reference variant wants vae and audio_vae as keyword arguments in a specific order, and carrying the latent out separately.

This node is a thin wrapper over exactly those official nodes and nothing else. It decides which one to call for you: if you connect any reference image, it routes through MiniMaxH3ReferenceToVideo; otherwise it goes the image-to-video path. Same weights, same math, less graph.

Reach for it when you're building your own sampler chain - custom scheduler, custom sigmas, a KSampler you control - and you don't want the Director's segment workbench in the way. It's also the node for a throwaway experiment graph, where you'd rather not have cache directories and per-shot seeds piling up on disk.

Inputs worth setting

Six required fields, and three of them are basically "what shape is this".

clip is your H3 text encoder - the qwen3vl file loaded in CLIPLoader with type minimax. vae is the video VAE. prompt is the prompt, pasted as-is into the official node, so reference tags like <Picture 1> go straight in here.

width / height default to 864×480 (0.4MP 16:9), which is the sensible first-test canvas for a 33B video model. length is frames, defaulting to 124, stepping by 17 - that's H3's 17k+5 grid, so 124 is your 5 seconds at 24fps. Ask for a number off the grid and you get the nearest valid one, not an error.

Then the optional sockets, which are the interesting part:

  • audio_vae - required the moment you touch r2v, v2v, rv2v or anything with reference audio. Leave it unwired on a pure t2v graph and the node simply doesn't need it; wire a reference image without it and you get a clear requires audio_vae error rather than a mystery.
  • first_frame and last_frame - first only gives you i2v, last only or both gives you fl2v. Official FL2VA does allow last-frame-only, which is a nice trick for nailing an end pose and letting the model invent the approach.
  • reference_image_0 through reference_image_8 - nine slots mapping to <Picture 1> … <Picture 9>. Leave them at native aspect; the sizing decision happens downstream.
  • ref_image_size - match or max. match downscales the reference to roughly the generation pixel area, which is the fast, sensible default. max is the official 2048 short-edge treatment and costs you accordingly.

Outputs

Two wires: positive into your sampler's positive input, latent into LatentUpscale-free sampler input as the starting noise image. Negative stays empty on H3 - CFG is 1.0 in the official template, so there's nothing for it to do.

If you also want a human-readable note about which task mode the node picked and how many references it saw, that's the Planner variant of this node - same inputs, one extra STRING output. For most graphs you don't need it.

Install

Same pack, same steps. The kit is Git-only for now (0.6.11, not on the Comfy Registry), so:

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

Then restart ComfyUI and look under CineStack/H3 - the node is called "CineStack H3 Director Conditioning". You need H3 weights in place to get anything out of it: the fl2va UNET for t2v/i2v/fl2v, the ref2va UNET for the reference modes, the minimax CLIP, and the video VAE (audio_vae too if you're using references). The pack ships no weights.

That requirements file also pulls opencv-python-headless, imageio-ffmpeg, scenedetect and ultralytics - the pack's shared set, none of it needed by this node, all of it installed anyway.

Common issues

"It says audio_vae is required." You connected a reference image, a reference video, or reference audio. The reference path in the official H3 node builds an AV latent and needs the audio VAE to do it. Add the fp32 audio VAE.

Your reference image gets resized and you didn't ask. That's ref_image_size working as designed - match downscales to the generation area so a 4K reference doesn't explode the encode. Need maximum fidelity and have the VRAM? Switch to max.

Frame count comes back wrong. Not wrong, snapped. H3 wants 17k+5; the step is 17 on the length widget for exactly that reason.

Nothing generates at all. This node only makes conditioning and an empty latent. It doesn't sample and has no IMAGE output - wire it to a KSampler, then through the H3 decode nodes. If you wanted the sampler included, you want the full Director node instead.

One thing this node inherits that's worth stating once: the H3 weights are under a community licence that excludes the US, EU, UK and South Korea from its territory. The node is Apache-2.0; the model isn't.

CategoryCineStack/H3

Inputs (19)

NameTypeDefaultDescription
clipCLIP—
vaeVAE—
promptSTRING—
widthINT86432–8192—
heightINT48032–8192—
lengthINT1245–3600—
audio_vaeoptVAERequired for r2v / v2v / rv2v / reference video+audio.
first_frameoptIMAGEOptional first keyframe (i2v / fl2v).
last_frameoptIMAGEOptional last keyframe (fl2v).
reference_image_0optIMAGEReference image for <Picture 1> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_1optIMAGEReference image for <Picture 2> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_2optIMAGEReference image for <Picture 3> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_3optIMAGEReference image for <Picture 4> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_4optIMAGEReference image for <Picture 5> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_5optIMAGEReference image for <Picture 6> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_6optIMAGEReference image for <Picture 7> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_7optIMAGEReference image for <Picture 8> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
reference_image_8optIMAGEReference image for <Picture 9> in prompt (r2v). Native aspect; H3 ref_image_size applies at encode time.
ref_image_sizeoptCOMBOmatchReference image sizing for MiniMaxH3ReferenceToVideo.

Outputs (2)

NameTypeDescription
positiveCONDITIONING—
latentLATENT—