Nodes/ComfyUI-UtilsCollection/Adv MiniMax H3 Image to Video (Temporal Fusion)
ComfyUI Node

Adv MiniMax H3 Image to Video (Temporal Fusion)

More motion fidelity from MiniMax H3 video — without spending extra tokens on it

By silveroxides·Created 3 months ago·Updated 2 days ago· 35
Adv MiniMax H3 Image to Video (Temporal Fusion)
  • clip
  • vae
  • first_frame
  • last_frame
  • visual_fusion_config
  • reference_images
  • media_config
  • video
  • audio
  • audio_vae
  • text_blend_config
  • positive
  • LATENT
prompt
width1344
height768
length124
multiplier1.0
ref_image_sizematch
vlm_resolution384
vlm_video_resolution384

If you've pushed MiniMax H3 image-to-video on a shot with real motion - a car pulling away, a hand waving, a punch landing - you've probably watched the result smear through the in-between states. H3's encoder is a VLM, and like every video diffusion encoder it doesn't read every frame of your source. It samples a handful, and whatever happens between the samples is where motion gets invented rather than followed. This node is silveroxides' experimental answer: sample more of the video, then fuse all that extra motion back into exactly the same conditioning budget the ordinary encoder would have used. More motion signal, no bigger conditioning, no bigger latent.

What it actually does. The mechanism is temporal density. You set temporal_density on the companion MiniMax H3 Media Configurator (UC_MiniMaxH3MediaConfig) node - leave it at 1 and this node behaves like the plain Advanced MiniMax H3 encoder, which is your baseline to compare against. Turn it up, say to 4, and the encoder also samples "lanes" of offset frames: between each pair of canonically-sampled frames it grabs progressively shifted in-between frames at finer and finer intervals. Every lane is encoded separately by Qwen3-VL, and then only the corresponding video visual-token blocks across lanes get merged - by consensus weighting (default) or spatial fusion - back into the original token slots. That's the trick and the point: the final conditioning occupies the ordinary video token budget, so the sampler sees a sequence no longer than stock H3, but each video block now encodes several moments of motion instead of one.

Where the lanes are fused determines the "Fusion" vs "TokenFusion" naming - this node is the post-encode variant: each lane gets its own full Qwen encode, then blocks are stitched together in the finished conditioning. (Its sibling, Temporal TokenFusion, fuses token features before a single encode, which is the cheaper-on-VRAM path.) Pick the consensus-vs-spatial method and feed the matching config node through media_config; density-1 runs skip the extra encodes entirely.

Inputs that matter. Most of the schema is shared with the stock advanced encoder, and only a few knobs are yours:

  • clip - must be the MiniMax H3 text encoder, the Qwen3-VL 32B (qwen3vl_32b), loaded via Core's Load CLIP with type minimax. Feed anything else and the node raises.
  • length - frame count at 24 fps, snapped upward to H3's 17k+5 temporal grid.
  • media_config - where the whole experiment lives: temporal density, fusion method, Picture timestamp formatting.
  • video - a complete 24 fps frame batch. If you want a native reference video rather than frame anchors, this is the input that the temporal sampling runs on.
  • text_blend_config - consensus settings for the temporal merge; leave disconnected and it uses a sensible default.

Frames go in either as first_frame/last_frame VAE anchors (also the first two numbered Qwen pictures) or as ordered reference_images - not both. vlm_video_resolution controls how many visual tokens your Video frames consume; higher means more detail but a longer encode.

Outputs. Two: positive CONDITIONING into the sampler's positive input, and LATENT (the joint video latent) into the KSampler. From there it's ordinary H3: sample, decode, save.

Install. ComfyUI Manager → search ComfyUI-UtilsCollection, or:

cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection

then restart ComfyUI. The pack's real Python deps are just opencv-python, typing-extensions, and unifiedefficientloader - the heavy lifting is the model, which the pack does not download for you. You need the MiniMax H3 checkpoint (~42.5 GB), the Qwen3-VL 32B text encoder, and the H3 VAE. And check the licence before you start: the MiniMax H3 Community License excludes the EU, UK, South Korea and the US from its applicable territory, so "open weights" here is a conditional grant, not a free one.

Where people get burned. This is an experiment - the pack flags it experimental, it's aimed at people who've already got stock H3 I2V working, and the whole pack has almost no community footprint yet, so you're the beta tester. Start with density 1 to confirm your baseline reproduces, then step density up and watch both quality and encode time (each lane is a full Qwen pass, so this is not free). Expect the README's own honesty to apply: the results are stochastic and timeline control stays approximate. If you just want ordinary MiniMax H3 image-to-video, Core's native nodes are the stable path - reach for this only when the motion fidelity is actually your bottleneck.

Categoryadvanced/conditioning

Inputs (19)

NameTypeDefaultDescription
clipCLIPMiniMax H3 Qwen3-VL 32B text encoder (qwen3vl_32b).
promptSTRINGRaw MiniMax H3 prompt. Picture labels are supplied by Core from the connected image roles.
widthINT134432–16384
heightINT76832–16384
lengthINT1245–3600Frame count at 24 fps, snapped upward to MiniMax H3's 17k+5 temporal grid.
multiplierFLOAT1.0-1000–1000Scales the final Qwen conditioning and pooled output; does not alter VAE keyframes or the H3 latent.
ref_image_sizeCOMBOmatchMatch limits each native reference to the generation pixel area; max limits its short edge to 2048 pixels. None keeps frame, reference, and Video inputs available to the text encoder but does not VAE-encode them. All image sizing preserves aspect ratio; final 32-pixel alignment can marginally enlarge a dimension.
vlm_resolutionINT3840–4096Equivalent-square Qwen3-VL target from 256 to 3584. Values outside that range preserve the original image resolution. This is independent of VAE frame and reference sizing.
vlm_video_resolutionINT3840–4096Qwen3-VL resolution for Video frames. Higher values use more visual tokens. Values outside 256 to 3584 preserve the input resolution.
vaeoptVAEEncodes first/last frames, reference images, and a complete Video. Not required when reference image size is none.
first_frameoptIMAGEOptional frame-zero VAE anchor and the first numbered Qwen picture.
last_frameoptIMAGEOptional final-frame VAE anchor and the next numbered Qwen picture.
visual_fusion_configoptVISUAL_FUSION_CONFIGOptional spatial method. With frame inputs, fusion_image_1 targets Picture 1 and fusion_image_2 targets Picture 2; disconnected or off keeps fusion images as separate numbered Qwen pictures outside native-reference mode. See fusion_images for the complete routing contract.
reference_imagesoptCOMFY_AUTOGROW_V3Ordered native H3 references and numbered Qwen pictures. This mode cannot be combined with explicit first/last frame inputs. See fusion_images for supported reference-picture fusion.
media_configoptMINIMAX_H3_MEDIA_CONFIGOptionally formats Picture timestamps, sets Qwen Video sampling, and controls Video motion guidance. Its default Picture constructor matches Core handling.
videooptIMAGEComplete Video frame batch at 24 fps. The configurator controls Qwen sampling and full, spaced, or disabled VAE motion guidance.
audiooptAUDIOOptional H3 reference audio. Missing audio from a video is ignored.
audio_vaeoptVAERequired only when audio is present. Skipped when audio is absent; otherwise resamples and encodes the reference audio.
text_blend_configoptTEXT_BLEND_CONFIGTemporal consensus settings. Disconnected uses custom index consensus with norm rescaling.

Outputs (2)

NameTypeDescription
positiveCONDITIONING
LATENTLATENT