MiniMax H3 Trajectory Control Render / 轨迹控制视频 (Advanced)
Turn your trajectory plan into conditioning H3 Fun Control can actually eat
- trajectory_plan
- reference_images
- reference_masks
- control_video
- trajectory_masks
- preview
- report_json
The Plan node thinks in numbers; this one thinks in pixels. Give it a trajectory_plan and it renders an actual IMAGE batch - one frame per frame of your clip - that shows where every object's box is at every moment. That video is what you feed into H3 Fun Control, the ControlNet-style conditioning H3 ships with, and it's how a bunch of keyframes become a "this object drifts from the left edge to the right over two seconds" instruction the model can see.
Two honest caveats baked into the design: the Render node creates no audio and owns no H3 attention. It produces a conditioning video; the Fun Control Apply node (or your own canny/depth/pose preprocess) does the actual steering. It's a drawing tool, and it knows it.
How it works
It walks the plan's tracks and, for every frame, draws each object's interpolated bbox onto a canvas filled with background_level (0 = black). Three render_modes:
- reference_sprite (default) - pastes your actual reference images into each box, resized to fit and masked by an optional alpha, with per-keyframe
strengthcontrolling opacity. This is "the subject travels the path" - the sprite moves frame to frame. Requiresreference_imagesconnected or it errors immediately. - soft_region - fills each box with a solid per-object color (a palette, one color per track), feathered by feather (a 0..0.2 sigmoid softness, 0 = hard edge). Good for "this region should contain the thing" conditioning.
- box_outline - like soft_region but hollow: the outline width is line_width (in canvas pixels). The lightest touch; the model just knows where the box is.
Optional reference_masks let you cut sprites to their true silhouette instead of a rectangle - one mask per object or a single shared one.
Outputs that matter:
- control_video - the IMAGE batch, one frame per plan frame. Wire it into
MiniMaxH3FunControlApplyT8Advanced'scontrol_videoinput (start withcontrol_kind=custom), or preprocess it (canny/depth/pose) for the classic control route. - trajectory_masks - a MASK batch of the union coverage; handy if you want to composite the path onto something else.
- preview - a 12-frame sample so you can eyeball the motion without previewing the whole clip.
- report_json - status, mode, frame count, plan hash, and the recommended connection.
Install
Same pack as everything else here: Manager → search "MiniMax H3 Audio T8" → install → restart, or
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
No pip installs - requirements.txt is intentionally empty; ComfyUI supplies the stack. To actually use the output you also need the H3 Fun Control model from Kijai/MiniMax-H3-experimental (recent weights in models/model_patches, older ones in models/controlnet - the pack accepts both contracts). And the usual requirement: a current ComfyUI, updated alongside the pack, or all T8 nodes show red.
Gotchas
reference_spritewith noreference_imagesis an instant error - connect them first. One image shared by all objects, or one per object in order.- Keep
width/heightmultiples of 32 and the frame count on H3's 17n+5 grid (22, 39, 56…) or the Plan node upstream refuses to build. - The README's general H3 advice applies: don't stack multiple attention/sampler-takeover nodes on top of Fun Control, and if you OOM, drop resolution/frames before blaming the conditioning.
- Realistically this is an EXP experiment. The sprite mode is the one that feels magical (an image physically walking your path); soft_region is the safest if H3 ignores the boxes. A/B a couple of modes on a fixed seed before you commit to a shot.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| trajectory_plan | H3_T8_TRAJECTORY_CONTROL_PLAN | — | |
| render_mode | COMBO | reference_sprite | 3 options: soft_region, box_outline, reference_sprite |
| feather | FLOAT | 0.0100–0.2 | — |
| line_width | INT | 61–128 | — |
| background_level | FLOAT | 0.000–1 | — |
| reference_imagesopt | IMAGE | — | |
| reference_masksopt | MASK | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| control_video | IMAGE | — |
| trajectory_masks | MASK | — |
| preview | IMAGE | — |
| report_json | STRING | — |