IAMCCS Motion Guide Bridge
Turn a motion sketch into a real LTX-2 guide, one node
- cine_linx
- cine_linx
- motion_guide_data
- motion_render_plan_json
- report
LTX-2's motion control has a vocabulary problem: the model understands motion via guide frames and attention, but the plans you write - camera pushes, subject paths, shot timing - live in JSON. IAMCCS_MotionGuideBridge is the translator. You feed it a motion-sketch JSON and it produces the MOTION_GUIDE_DATA plus a render plan that the rest of the Shotboard V4 chain (renderer, IC-LoRA apply) actually consumes.
It's one of the Cine/Shotboard V4 nodes from IAMCCS-nodes, the production-video tooling by IAMCCS. These nodes form a chain - sketch → bridge → renderer → apply - and this is the node where the human-readable plan becomes machine-readable guidance.
How it works
The motion_sketch_json describes the intended motion: what moves, when, over how many frames. The bridge parses it and emits two things. First, motion_guide_data - the typed guide object that carries per-shot motion intent downstream. Second, motion_render_plan_json - a concrete render plan the MotionSketchRenderer can turn into control frames.
Two default strengths get applied across the board: default_video_strength (0.75) for how strongly the guide drives the video content, and default_attention_strength (0.65) for the attention-side control. When a shot in the sketch doesn't specify its own values, these are the fallbacks - so they're the dials you tune first.
The bridge also carries the cine_linx (the pack's IAMCCS_SUPERNODE_LINX data contract) through, so it can slot into a supernode chain and pass context along. control_video_path is the interesting optional: if you've already rendered a control video (say from the sketch renderer), you point the bridge at it and it activates an actual video segment; leave it empty and the bridge emits a render plan with no active segment yet - a planning-only run.
Inputs and outputs
motion_sketch_json(STRING, default{}) - the motion sketch plan.default_video_strength(FLOAT, 0.75) /default_attention_strength(FLOAT, 0.65) - fallback strengths.resample_mode(nearest/linear) andresize_method(crop/pad/stretch to fit/maintain aspect ratio) - how guide frames get matched to the target resolution.cine_linx(optional) - chain context in, chain context out.control_video_path(STRING, optional) - pre-rendered control video to activate.
Outputs: cine_linx, motion_guide_data, motion_render_plan_json, report (STRING).
How to install
Part of IAMCCS-nodes. ComfyUI Manager search "IAMCCS", or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart. No model downloads - the LTX-2 model, VAE, and IC-LoRAs are separate. Pack floors: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.
Gotchas
This is a coordinator node, not a magic wand: feed it {} and it produces an empty plan - the report output is how you tell whether the sketch parsed into real guidance. The strength defaults are sane but generic; per-shot values in the sketch override them, so tune the sketch first. And the resize settings (crop vs stretch to fit) change what the renderer actually draws - "stretch to fit" will distort the guide motion, which is usually not what you want for a shot you bothered to sketch.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| motion_sketch_json | STRING | {} | — |
| default_video_strength | FLOAT | 0.750–1 | — |
| default_attention_strength | FLOAT | 0.650–1 | — |
| resample_mode | COMBO | nearest | 2 options: nearest, linear |
| resize_method | COMBO | crop | 4 options: crop, pad, stretch to fit, maintain aspect ratio |
| cine_linxopt | IAMCCS_SUPERNODE_LINX | — | |
| control_video_pathopt | STRING | Optional rendered control video path. When empty, the bridge emits a render plan but no active video segment. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — |
| motion_guide_data | MOTION_GUIDE_DATA | — |
| motion_render_plan_json | STRING | — |
| report | STRING | — |