A test-time fix for MiniMax H3 smearing fast motion ("roping"). The clip regenerates as slow motion seeded from your own render, a jerk oracle picks where, and exact frame selection recovers realtime. No training. Every number below comes from a measured comparison.
github.com/matlowai/ComfyUI-MAINodesBaseline smears the aerial spin into a blob; both regenerated settings render it clean and keep the choreography. New scene, no per-clip tuning.
A lateral tracking shot with a parasol burst mid-pan. Baseline left, pipeline right: the parasol grows ribs and the hands articulate through the burst. Detailed backgrounds can re-roll during dilated spans (watch the laundry line); that limitation and its dials are documented in TUNING.md.
Every quality/speed rung from a one-minute turbo scout to the full pipeline. Times in the header, ws-normalized, 5 s 1024² clip. The three paths to know: pipeline at inject 0.70 (~19 min incl. its baseline, the default), inject 0.50 (~15 min, sharper, closer motion tracking), and probe + expert turbo (~8.5 min, no full baseline). Start with a 2 to 3 second clip and scale up; cost follows the burst spans, not the runtime.
Left smears through the backflip, right doesn't.
Heat pools where motion runs too hot; the strip lights up as the burst arrives. This map is what decides where the timeline dilates.
Already good, and slightly better: uniform dilation, then the adaptive map without and with bridge. Same seed all three.
The whole pipeline on the smallest community models (w4a8 DiT, int8 VAE, nvfp4 text encoder, ComfyUI 0.31+). This one is Ref2VA: the courier girl is defined from two reference stills and dropped into a scene she has never been in, then de-roped. Baseline, recovered, and the oracle map that steered it. A 5 s, 1.0 MP de-rope fits a 32 GB card; measured numbers in TUNING.md.
First-and-last-frame conditioning through the same pipeline. The end anchor names a timestamp that lands mid-clip on the dilated regeneration's clock, and it simply does not fight: the injected trajectory owns the timing and the clip still lands on the anchor pose. Image-to-video works the same way (clip).
One honest caveat: int8 and w4a8 render different takes from the same seed, because quantization bends the trajectory. Both coherent, both de-rope cleanly. Compare quality, not pixels.
Temporal insertion, the task it was trained on: a window of a fight is refilled on a slowed clock. Source plate; the full-clip de-rope on the base model (140 s); the windowed pass without the adapter at inject 0.45 (64 s); the windowed pass with the adapter at 0.75 and inject 0.30 (50 s), which won on both alternation and rate. Blind picks on unseen clips went 7 to 0 for the adapter.
A rank-16 LoRA trained on our own de-rope task, applied to the de-rope pass only. Why the anchors and the adapter both matter: source plate; the windowed de-rope at denoise 0.70 with nothing anchoring the window, which lands off the plate and jumps at both splices; the same graph with the window's first and last frames pinned, which removes the jump for free; and pins plus the adapter at 0.75. Same seed throughout. The card at the end lists every setting and the wall time per tile (10m41s, 10m41s, 11m20s at 1024 px). Numbers on the model card.
Which graph. Two are in the repo, both API format,
loadable through the API or the frontend's API import. For a clip you
already have, the graph behind this exhibit is
examples/experimental/motion_window_pinned_adapter_api.json:
load the plate, the window is regenerated at denoise 0.70 with its first
and last frames pinned, the adapter sits on the pass-2 model. To generate
from text and de-rope in one go, use
examples/experimental/motion_pipeline_adapter_api.json:
the standard Motion Lab pipeline with one LoraLoaderModelOnly
on the pass-2 model at strength 1.0, inject 0.45. Put the weights in
models/loras/minimax_h3/; the LoRA node's file name already
matches the Hugging Face file.
A windowed de-rope on a chaotic burst: first generation, the de-rope, the de-rope with the adapter. The creature keeps its colour and its sparkle here; what the adapter changes is the motion, which stops alternating between advance and snap.
The shipped graphs, end to end, on a scene the adapter never saw: the fight choreography moved to a rain-soaked neon rooftop, same seed for both arms. Stage 1 plate; the standard de-rope at inject 0.70; the de-rope with the adapter at inject 0.45. The adapter pass is smoother (alternation 0.24 to 0.19, jitter 0.09 to 0.04) and keeps the plate's signage where the 0.70 pass rewrote it. Wall times are in the headers, with the GPU each arm ran on; the card at the end has every setting. Each graph is at its own shipped inject, so this is a smoke test rather than an inject-matched study.
Where it is not great, one. The adapter transfers to the Ref2VA checkpoint and keeps its motion wins there, but it mutes colour: the prismatic creature comes back as a plain calico, at both denoise 0.40 and 0.70 (saturation 46 to 38 and 54 to 40).
Where it is not great, two. The same muting on the fl2va checkpoint when the whole clip is de-roped at 3x: first generation, full 3x de-rope, full 3x with the adapter. The creature loses its colour and the particle trail thins out even though the motion itself is smoother. So the rule is about content, not checkpoint: strong colour and particle effects are at risk, worst on Ref2VA and on full-clip passes. It also over-corrects calm chains and costs about a decibel of anchor fidelity on native keyframes. Keep it off calm content; on strong-colour subjects lower it or accept the trade. This is a pilot released as an intermediate option while we try something considerably more ambitious that may not work.
| featherweight run | wall time | peak VRAM you'd see |
|---|---|---|
| 3 s at 0.4 MP | 4 min | ~19 GB |
| 3 s at 0.7 MP | 6.5 min | ~20 GB |
| 5 s at 1.0 MP | 29 min | ~28 GB brief peak, ~20 GB sustained |
Full pipeline including its own baseline render, w4a8 stack on ComfyUI 0.31+, text encoder offloaded after encoding (the default). These are one clip's numbers, not a promise: the oracle decides how much of your clip gets time-dilated, and the dilated span is what costs. A calm clip with one short burst runs well under these figures; wall-to-wall action runs at them. Resolution barely moves the peak. Full table, the dials, and the exact known-good environment (torch nightly cu132, CUDA 13.2, ComfyUI 0.31.1, measured on Blackwell) in TUNING.md.
Docs: TUNING.md · workflows in examples/ · MIT
Same-seed A/B pages: NVFP4 / FP8 activation arms and real NVFP4 checkpoints next to their pixel, flow and audio rulers, with synced head-to-head playback. Open the review pages.