FL MiniMax H3 Transition Prep
Make the tail of one clip become the head of another — H3 Transition Prep
- clip
- vae
- video_a
- video_b
- positive
- masked_latent
- transition_plan
- video_a
- video_b
Here's the job: you've rendered two H3 shots separately - say shot A ends on a subject walking frame-right, and shot B starts on the same subject in a different location. Cutting straight from one to the other is a hard cut. Making them feel like one continuous take means generating a short bridge that starts from A's exact last frames and lands on B's exact first frames. FL MiniMax H3 Transition Prep is the front half of that job: it takes the two clips, works out which frames are protected (A's tail, B's head), builds the exact prompt H3 expects for this kind of reference-frame animation, and hands you a conditioned, masked latent ready to sample - with a transition_plan that carries all the bookkeeping for the assembler that comes after.
The mechanism is worth understanding because it's H3-specific in a sneaky way. The node is built directly on ComfyUI's own MiniMax H3 image-to-video primitives (the same MiniMaxH3ImageToVideo and reference-guide machinery the stock nodes expose), and it writes the prompt in H3's FL2VA reference format: "Picture 1 aligns with the 0.00-second mark of the target video; Picture 2 aligns with the X.XX-second mark" - the prose format the model was trained on for aligning two reference frames across a generated span. On top of that framing it appends integrated_multimodal_description, overall_soundscape, and non_diegetic_music blocks, because H3 generates its audio jointly with the picture, so the transition gets a soundscape spec too.
Then it builds the actual control input. In the default empty bridge mode it takes the last reference_frames of video A and the first reference_frames of video B, fills the gap between them with flat gray frames at empty_frame_level (0.5), VAE-encodes that whole strip, and stamps a temporal noise mask so a sampler only regenerates the middle - the protected reference frames on either side stay locked. It also attaches A's tail and B's head as guide images at the right timeline positions, so H3 knows what it's supposed to be starting from and arriving at.
The inputs a beginner actually touches:
- clip and vae - the H3 text encoder and video VAE, straight from your model loaders.
- video_a / video_b - frame batches at 24 fps. A's tail becomes the opening guide; B's head the closing one.
- transition_description - the prose describing the continuous action from Picture 1 to Picture 2. It ships with a long, sensible default; edit it to describe your shot change.
- overall_soundscape / non_diegetic_music - the joint-audio spec. Leave
N/Awhere you don't need music. - length (default 90) - total bridge length in frames. H3 doesn't map frames to latent tokens 1:1, so this snaps to its
17k+5temporal grid. - reference_frames (default 22) - protected frames from each source, and it must follow that same grid (22, 39, 56…; it hard-rejects anything that isn't
5 mod 17). - control_mode - the interesting one. empty bridge invents the whole middle and makes the output longer than A+B. source seam repair instead fills the middle with real A/B frames and masks the join, so H3 only has to repair the seam where the clips meet - output duration stays A+B.
Outputs: positive (conditioning) and masked_latent (the latent to sample), plus video_a/video_b (center-cropped or stretched to the canvas) and the transition_plan that ties everything together.
Run the sampled latent through your H3 sampling path, decode the result with the H3 video VAE into an image batch - that's your bridge - and hand plan, both clips, and the bridge to FL MiniMax H3 Transition Assembler, which does the splice.
Where people get burned: feeding videos shorter than reference_frames (it errors - each side needs at least that many frames plus, in seam-repair mode, a few more to edit away); feeding non-24fps or non-H3-canvas sizes (width/height must be divisible by H3's canvas multiple and under its pixel cap); and setting reference_frames so high that no generated middle remains. Because the pack is young, the README doesn't document these Transition nodes yet - the tooltips in the UI and this two-node pairing are your documentation.
Install is the shared pack story: ComfyUI Manager → search FL MiniMax H3, or git clone https://github.com/filliptm/ComfyUI-FL-MiniMaxH3.git into custom_nodes, then restart. You need a current ComfyUI with H3 support and your own H3 model files - the pack (from filliptm, the Fill Nodes author) supplies none of the weights.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| video_a | IMAGE | Video A frames at 24 fps. Its tail becomes the opening guide. | |
| video_b | IMAGE | Video B frames at 24 fps. Its head becomes the closing guide. | |
| transition_description | STRING | [Shot 1] A single continuous shot begins exactly from the framing, lighting, color, subject appearance, environment, and ongoing motion established by Picture 1. The camera and subjects move continuously without a cut, reset, duplicated features, or sudden identity change. Across the middle, every visible change progresses naturally toward Picture 2 while preserving anatomy, wardrobe, object identity, scale, screen direction, texture, and color continuity. The final moment arrives exactly at Picture 2's composition, state, and continuing motion. | Describe the continuous action and camera motion from Picture 1 to Picture 2. |
| overall_soundscape | STRING | Natural production sound remains continuous across the transition, with room tone and movement sounds matching the visible action. | — |
| non_diegetic_music | STRING | N/A | — |
| width | INT | 134432–16384 | — |
| height | INT | 76832–16384 | — |
| length | INT | 9022–3600 | Total H3 bridge length. The node snaps it to the 17k+5 frame grid. |
| reference_frames | INT | 225–362 | Protected frames from each source. Valid values follow H3's 17k+5 grid. |
| crop_mode | COMBO | center | Center crops both videos to the H3 canvas or stretches them to fit. |
| empty_frame_level | FLOAT | 0.500–1 | — |
| control_mode | COMBO | empty bridge | Source seam repair fills the edit with real tail/head frames and keeps output duration unchanged. |
| mask_feather_tokens | INT | 20–64 | Softens each temporal mask edge over this many H3 latent tokens. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| masked_latent | LATENT | — |
| transition_plan | FL_H3_TRANSITION_PLAN | — |
| video_a | IMAGE | — |
| video_b | IMAGE | — |