Nodes/ComfyUI-vlo/MiniMax H3 Add Masked Guides from Video (experimental)
ComfyUI Node

MiniMax H3 Add Masked Guides from Video (experimental)

Drive an H3 video from a masked video — trust some moments, not all of them

By PxTicks·Created 3 months ago·Updated a day ago· 0
MiniMax H3 Add Masked Guides from Video (experimental)
  • positive
  • latent
  • vae
  • video
  • mask
  • positive
  • plan
frame_idx0
strength1.00
min_aug0.000
mask_gamma1.00
min_coverage0.000
time_poolingaverage
chunk_alignstart

A single still guide gets you one anchored image inside an H3 video. Sometimes you want to steer with footage - a clip of the subject in motion, or several distinct shots - and trust different parts of it at different times. vloMiniMaxH3AddMaskedGuidesFromVideo is the node that cuts a masked video into guide clips and anchors each one at the right place in your target video. It's the segmentation case this experimental family was really built for.

The flow: you supply guide frames (at your target video's frame rate, one mask per frame), and the node walks them. Frames whose mask is empty guide nothing and get dropped; each surviving contiguous run becomes one guide clip; and each run is rounded down to a length H3 actually accepts - the model's valid clip lengths are 1, 5, 22, 39, ... frames, not arbitrary counts, so a 7-frame run becomes a 5-frame guide. The mask means confidence again, not denoise: 1 keeps that part of the guide at full strength, 0 corrupts it to noise, in-between blends continuously, and mask_gamma/strength/min_aug shape that as in the rest of the family.

Inputs worth understanding

  • positive, latent, vae, video, mask - conditioning, target AV latent, video VAE, guide frames, and one mask per guide frame (a single mask is applied to all of them).
  • frame_idx - the target frame your guide video's first frame lines up with. Negative counts from the end. Guide frames that fall outside the target video are dropped.
  • min_coverage - a frame is dropped when its mask covers no more than this fraction of the canvas (measured after fitting the guide to the target's framing). 0.0 drops exactly the empty-mask frames; raise it to also drop frames where the subject is barely visible.
  • time_pooling - how the masks of the frames behind one latent token combine: average matches the spatial pooling, max takes their union - which is what a subject moving across those frames needs.
  • chunk_align - when rounding a run down to a valid clip length drops frames, start keeps the head of the run, center keeps its middle.

Outputs

positive - your conditioning extended with the masked guide clips - and a plan STRING describing what the node decided to do. The plan output is genuinely useful for the video case: with frame-dropping, clip-length rounding and anchoring all in play, you want to see which runs became guides and where they landed before you blame the model for a weird result.

Standing caveats

Two things gate all of this: the model needs Patch Masked Guides on it or the masks are ignored (clips behave like stock guides), and the patch is pinned to specific ComfyUI MiniMax-H3 internals with a source-fingerprint compatibility check - experimental code, new pack, expect to update ComfyUI or pin it. There's also the direct-node versus spec question: this node does everything inline; the newer Build Guide Spec from Video flow plans the same operation as a reusable spec so the Qwen semantic half can read it too. Install: clone https://github.com/PxTicks/ComfyUI-vlo.git into custom_nodes/, restart, no pip deps.

Categorymodel/conditioning/minimax

Inputs (12)

NameTypeDefaultDescription
positiveCONDITIONING
latentLATENT
vaeVAEVideo VAE.
videoIMAGEGuide frames, at the target video's frame rate.
maskMASKOne mask per guide frame (a single mask is applied to all of them). Guide confidence, not a denoise mask: 1 keeps the guide at full strength, 0 corrupts it to noise, values in between blend continuously. Must frame the same crop as the guide image.
frame_idxINT0-9999–9999Target frame the guide video's first frame lines up with. Negative values count from the end. Guide frames that fall outside the target video are dropped.
strengthFLOAT1.000–1Scales every mask. 1.0 leaves a fully open mask identical to a stock guide clip.
min_augFLOAT0.0000–1Condition noise-augmentation coefficient a mask value of 0 maps to. 0.0 replaces those guide tokens with pure noise; raise it to keep a floor of guidance.
mask_gammaFLOAT1.000.1–5Exponent applied to the mask before it becomes strength. >1 pushes mid-tones toward weak guidance, <1 toward strong.
min_coverageFLOAT0.0000–1A frame is dropped when its mask covers no more than this fraction of the canvas, measured after the crop that fits the guide to the target's framing. 0.0 drops exactly the frames whose mask is empty; raise it to also drop frames where the subject is barely visible.
time_poolingCOMBOaverageHow the masks of the frames behind one latent token are combined. 'average' matches the spatial pooling; 'max' takes their union, which is what a subject moving across those frames needs.
chunk_alignCOMBOstartRounding a run down to a valid clip length drops frames: 'start' keeps the head of the run, 'center' keeps its middle.

Outputs (2)

NameTypeDescription
positiveCONDITIONING
planSTRING