Nodes/IAMCCS-nodes/WanImageMotionPro Legacy
ComfyUI Node

WanImageMotionPro Legacy

The exact old behavior, frozen in amber

By IAMCCS·Created 11 months ago·Updated 7 days ago· 113
WanImageMotionPro Legacy
  • positive
  • negative
  • anchor_samples
  • prev_samples
  • end_samples
  • positive
  • negative
  • latent
  • trim_slots
length81
motion_latent_count1
motion1.15
motion_modemotion_only (prev_samples)
add_reference_latentsfalse
latent_precisionfp32
vram_profilenormal
include_padding_in_motionfalse
safety_presetsafe
use_end_frametrue
end_transition_frames0
end_lock_slots1
lock_start_slots1
diagnostic_logfalse
use_prev_samplestrue
end_overshoot_slots0

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.

CategoryIAMCCS/Wan

Inputs (21)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
lengthINT811–16384
anchor_samplesLATENT
motion_latent_countINT10–16
motionFLOAT1.151–2
motion_modeCOMBOmotion_only (prev_samples)2 options: motion_only (prev_samples), all_nonfirst (anchor+motion)
add_reference_latentsBOOLEANfalse
latent_precisionCOMBOfp324 options: auto, fp16, fp32, normal
vram_profileCOMBOnormal5 options: normal, chunked_blocks_2, chunked_blocks_4, loop_per_frame (lowest_vram), cpu_offload (slowest)
include_padding_in_motionBOOLEANfalse
safety_presetCOMBOsafebase : 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_frameBOOLEANtrueWhen 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_framesINT00–32DEPRECATED - 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_slotsINT11–16How 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_slotsINT10–16How 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_logBOOLEANfalseWhen enabled, prints compact diagnostics about concat_latent_image/mask and motion/end-lock ranges. Useful to debug 'static clip' or segment discontinuities.
use_prev_samplesBOOLEANtrueWhen 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_slotsINT00–8Extends 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_samplesoptLATENT
end_samplesoptLATENT

Outputs (4)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_slotsINT