Nodes/IAMCCS-nodes/WanImageMotionPro Plus
ComfyUI Node

WanImageMotionPro Plus

Same engine as WanImageMotionPro — this is just its full name

By IAMCCS·Created 11 months ago·Updated 7 days ago· 113
WanImageMotionPro Plus
  • positive
  • negative
  • anchor_samples
  • prev_samples
  • end_samples
  • clip_vision_start_image
  • clip_vision_end_image
  • 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
latent_refresh0.00
delta_max0.0
clip_vision_modeauto
raw_modefalse
prev_samples_profiledirect
prev_skip_last_slots0
prev_tail_pick_modelatest
prev_anchor_blend0.00
continuity_profileoff
preset[custom]

Here's a ComfyUI naming quirk you'll hit sooner or later: WanImageMotionProPlus and WanImageMotionPro are the same node. The pack registers both names to one class, and both display as "WanImageMotionPro Plus" in the menu. If a workflow you downloaded uses one name and you searched for the other, you're not missing anything - they load identically.

So the full article for this node is the one on WanImageMotionPro. Read that for the mechanism, the inputs, and the gotchas. What's worth saying here is the practical stuff:

Why the double name exists

The "Plus" name is the current engine, and WanImageMotionPro is kept as a backward-compat alias so older saved workflows (which referenced it as plain WanImageMotionPro, or as IAMCCS_WanImageMotionPro_AdaIN) keep loading without a JSON rewrite. The pack is versioned aggressively - this node alone has been through IAMCCS_WanImageMotion_AdaINWanImageMotionProWanImageMotionProPlus - and the aliases are the glue that stops every update from breaking every old graph.

What it does, in one line

It's the SVI Pro v2 first/last-frame + motion node: start anchored to anchor_samples, motion boost on the carried tail via motion, end hard-locked to end_samples, with overshoot, latent refresh, clip-vision routing, and VRAM profiles. If you came here from an SVI long-video workflow, this is the node doing the "FLF" part that SVI alone never handled.

The three knobs to actually touch

  • motion (1.15) - amplitude boost; raise it if segments come out stiff, but stay under ~1.5 unless you switch safety_preset to safer.
  • end_overshoot_slots - set to 1 for clean FLF endings and trim the extras with WanMotionProTrimmer via the trim_slots output.
  • vram_profile - your low-VRAM lever; loop_per_frame and cpu_offload exist for 12GB-and-under rigs.

Installing it

It's 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 for the node itself; the SVI Pro LoRAs (Kijai's WanVideo_comfy) are still required for the pipeline it feeds.

Common issues

The end_transition_frames widget is deprecated - leave it at 0, or you'll get frozen output (latent interpolation isn't linear). And if end_overshoot_slots > 0 crashes with an einops shape mismatch, that's the known KJNodes FETA/wrapped_attention conflict; drop overshoot to 0 or update KJNodes. Both are documented on the tooltips, and both are the kind of thing that makes you glad you updated the pack first.

CategoryIAMCCS/Wan

Inputs (33)

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_precisionCOMBOfp32Output latent dtype for the empty Wan sampler latent. Kept here for backward compatibility with older WanImageMotionPro workflows.
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–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_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.
latent_refreshFLOAT0.000–1Latent moment stabilization strength (0=disabled, 1=full correction). Matches per-channel mean and contrast of the motion tail to the anchor latent. Spatial residuals and motion are preserved. Start with 0.5 for chains of 3+ segments.
delta_maxFLOAT0.00–5Soft-clamp on latent mean drift magnitude (0=disabled). Caps how much mean correction can be applied per channel. Use 0.5-1.0 to prevent over-correction on large motion segments.
clip_vision_modeCOMBOautoControls how clip_vision_start_image / clip_vision_end_image are merged. auto : concatenate start+end tokens (original FLF behavior). Correct ONLY when anchor=A and end=B (true A→B transition). end_only : use only clip_vision_end embedding. RECOMMENDED for SVI Pro continuation where anchor=end=same image but prev_samples comes from a different scene — prevents crossfade bleed. start_only : use only clip_vision_start embedding. none : skip clip_vision injection entirely (bypass).
raw_modeBOOLEANfalseStrict compatibility mode for the original WanImageToVideoSVIProFLF behavior. When enabled, WanImageMotionPro bypasses advanced features (motion amplitude, latent moment stabilization, overshoot, clip vision routing, reference latents, slot caps) and builds conditioning 1:1 like the original FLF+SVI node. Use this to benchmark or to get the baseline first/last frame behavior back.
prev_samples_profileCOMBOdirectHigh-level handling profile for prev_samples. direct: use the explicit prev tail controls exactly as set. mixed_svi_safe: intended for SVI-to-Pro chains; ignores the last prev slot and still uses the latest usable tail. mixed_svi_aggressive: intended for harder SVI-to-Pro chains; ignores the last prev slot and takes the earliest usable tail segment instead of the latest.
prev_skip_last_slotsINT00–16Ignore the last N temporal latent slots from prev_samples before extracting the motion tail. Useful when prev_samples comes from a non-FLF generator and you want FLF-like continuation from a slightly earlier motion state.
prev_tail_pick_modeCOMBOlatestHow to pick the motion tail from prev_samples after any tail trimming. latest: use the last usable slots (default, original behavior). first_usable: use the earliest usable slots after trimming, which can behave more like an FLF chain when SVI tails become unstable near the end.
prev_anchor_blendFLOAT0.000–1Blend the extracted prev motion tail toward the first anchor slot before conditioning. Helps when prev_samples comes from SVI and needs to behave more like a FLF-aligned predecessor.
continuity_profileCOMBOoffRaw-like continuity path for SVI chains. SVI_CONTINUITY keeps FLF+SVI raw semantics while still enabling overshoot and trim_slots. The other continuity profiles stay raw-like and selectively add only safe options: prev tail handling or end_only clip vision when anchor=end. These profiles intentionally bypass motion shaping, latent moment stabilization, start-slot normalization, and the 4-channel mask.
presetCOMBO[custom]Server-side preset for WanImageMotionPro Plus. Visible even if the frontend preset widget is not loaded. Use [custom] to keep manual widget values unchanged.
prev_samplesoptLATENT
end_samplesoptLATENT
clip_vision_start_imageoptCLIP_VISION_OUTPUT
clip_vision_end_imageoptCLIP_VISION_OUTPUT

Outputs (4)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_slotsINT