WanImageMotionPro Legacy
The exact old behavior, frozen in amber
- positive
- negative
- anchor_samples
- prev_samples
- end_samples
- positive
- negative
- latent
- trim_slots
WanImageMotionProLegacy is what the pack keeps around so that workflows built against the old behavior of the motion node keep working, forever. The Plus version gained latent refresh, delta clamping, clip-vision routing, raw mode, prev-tail handling profiles, and the preset dropdown. This one deliberately has none of that. It's the pre-Plus behavior kept 1:1, on purpose.
Who this is for
Two kinds of people. First, anyone with a saved workflow from early 2026 that references WanImageMotionProLegacy (or IAMCCS_WanImageMotionProLegacy) - it loads, and it produces the same output it always did, because the class is pinned to the old implementation rather than inheriting the current one. Second, anyone mid-project who tuned a chain of segments against the old behavior and doesn't want a node update to silently change their results mid-shoot. Version drift is real; this is the insurance policy against it.
What you get
The core FLF/motion feature set, without the newer stabilizers:
- positive / negative, anchor_samples, length (81), motion (1.15), motion_mode, motion_latent_count.
- safety_preset -
base/safe/safer/legacy, same definitions as the Plus node. - use_end_frame, end_lock_slots, lock_start_slots, end_overshoot_slots - the full start/end lock machinery, including the overshoot + trim workflow.
- vram_profile, latent_precision, include_padding_in_motion, diagnostic_log, use_prev_samples.
- Optional prev_samples and end_samples LATENT inputs.
What's missing vs the Plus engine: no latent_refresh or delta_max (moment stabilization), no clip_vision_mode, no raw_mode, no prev-tail profiles (prev_samples_profile, prev_tail_pick_mode, prev_anchor_blend), no continuity_profile, no preset dropdown, and no CLIP-Vision input sockets. If you need any of those, the Plus node is the one to use - this one is for staying put.
Outputs are the same positive, negative, latent, and trim_slots.
How it works
Under the hood it shares the same latent-manipulation toolkit as the main node (motion amplitude scaling, concat-mask start/end locking, the safety limiter), but wired exactly the way the earlier release was. "1:1 with the old D: implementation" is the class docstring's claim, and the whole point is that it doesn't drift when upstream changes.
Installing it
Part of IAMCCS-nodes. ComfyUI Manager (search "IAMCCS") or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart after. No weights to download; the SVI Pro LoRAs on a Wan 2.2 I2V model are still the pipeline underneath.
Common issues
Same two caveats as the Plus node, both on tooltips: keep end_transition_frames at 0 (deprecated, causes frozen output), and if end_overshoot_slots > 0 crashes with an einops shape mismatch, that's the KJNodes FETA/wrapped_attention conflict - set overshoot to 0 or update KJNodes. If you hit a bug that only reproduces here, check whether the Plus engine already fixed it; if so, consider migrating rather than reporting a legacy-only issue.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| length | INT | 811–16384 | — |
| anchor_samples | LATENT | — | |
| motion_latent_count | INT | 10–16 | — |
| motion | FLOAT | 1.151–2 | — |
| motion_mode | COMBO | motion_only (prev_samples) | 2 options: motion_only (prev_samples), all_nonfirst (anchor+motion) |
| add_reference_latents | BOOLEAN | false | — |
| latent_precision | COMBO | fp32 | 4 options: auto, fp16, fp32, normal |
| vram_profile | COMBO | normal | 5 options: normal, chunked_blocks_2, chunked_blocks_4, loop_per_frame (lowest_vram), cpu_offload (slowest) |
| include_padding_in_motion | BOOLEAN | false | — |
| safety_preset | COMBO | safe | base : 1:1 with WanImageToVideoSVIProFLF - no amplitude processing at all. safe : per-channel stabilisation + tanh limiter + 2-frame ramp (active at any motion value, recommended default). safer : same as safe but tighter limiter + longer ramp (best above motion=1.5). legacy : hard clamp +/-6 + frame-scalar diff centering, mirrors PainterI2V algorithm. |
| use_end_frame | BOOLEAN | true | When False, end_samples is ignored even if the wire is connected. Use this to safely bypass the end-frame encoder without disconnecting the node, preventing ping-pong artifacts. |
| end_transition_frames | INT | 00–32 | DEPRECATED - keep at 0. Values > 0 blend padding latents toward the end frame in latent space, which produces static/frozen output because VAE latent interpolation is not linear. 0 = hard cut, identical to the original FLF node behavior. |
| end_lock_slots | INT | 11–16 | How many final latent slots to hard-lock to end_samples. Default 1 = only the very last slot (~last 4 video frames) is locked, so the end frame appears exactly at the last frame defined by 'length'. Increase only if a single locked slot is not enough for convergence. Set 16 for 1:1 parity with the original FLF node (locks min(T_end, total_latents)). |
| lock_start_slots | INT | 10–16 | How many initial latent slots to hard-lock to the start image via concat_mask. Default 1 (~ first 4 video frames) matches FLF-style start anchoring. Set 0 to allow motion immediately from the first video frame. |
| diagnostic_log | BOOLEAN | false | When enabled, prints compact diagnostics about concat_latent_image/mask and motion/end-lock ranges. Useful to debug 'static clip' or segment discontinuities. |
| use_prev_samples | BOOLEAN | true | When False, prev_samples is ignored even if the wire is connected. Use this on the first segment when autolink forces prev_samples to be connected. |
| end_overshoot_slots | INT | 00–8 | Extends the internal generation window by this many latent slots when the end lock is active (use_end_frame=True + end_samples connected). The end image is locked at the tail of the EXTENDED range, so the visible clip converges toward the end frame without hard-freezing on it. Use the trim_slots output to cut the overshoot frames after sampling. 0 = disabled, original behavior. 1 = +4 video frames (recommended). 2 = +8 video frames (looser convergence). NOTE: If you have KJNodes WAN attention optimizations (FETA / wrapped_attention) enabled, some versions may crash with an einops shape mismatch when overshoot > 0. Workaround: set end_overshoot_slots=0 or disable/update that KJNodes optimization. |
| prev_samplesopt | LATENT | — | |
| end_samplesopt | LATENT | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| trim_slots | INT | — |