Nodes/IAMCCS-nodes/WanImageMotionPro Plus
ComfyUI Node

WanImageMotionPro Plus

The node that got people back on Wan 2.2

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]

When IAMCCS shipped the SVI Pro v2 motion nodes in March 2026, one r/comfyui thread put it better than any README could: "Wan 2.2 is still incredible - huge thanks to IAMCCS-Nodes for SVI Pro v2," with the author running native 1728x960 on a 16GB RTX 5070 Ti. WanImageMotionPro is the node from that post - the thing that made long, planned Wan 2.2 takes practical, and the one node in this pack I'd reach for first.

What it is

It's a conditioning-and-latent builder, not a sampler and not a model: feed it the pieces of an I2V segment and it hands back conditioning plus an empty latent ready for a Wan sampler. Over stock WanImageToVideo-style nodes it adds three things bolted together:

  1. Motion amplitude control - a motion boost (default 1.15) applied to the carried-over motion tail, fixing the slow-motion/stiff feel people hit in SVI Pro pipelines.
  2. FLF start lock - lock_start_slots (1) hard-locks the first latent slots to anchor_samples via a concat mask, so the clip genuinely starts from your reference image.
  3. FLF end lock - end_lock_slots (1) hard-locks the last latent slots to end_samples, so the clip lands on your chosen end frame.

That start-and-end anchoring is the "first/last frame" thing SVI alone couldn't do, and it's what turns an emergent 20-second drift into a shot you can actually plan.

The inputs that matter

  • positive / negative - your conditioning, typically from a WAN text encoder.
  • anchor_samples - the encoded start image(s); length (81) is visible frames (Wan latents run 4 frames per slot).
  • motion (1.15) and motion_mode - motion_only (prev_samples) boosts just the carried tail; all_nonfirst boosts everything after the first slot. Default is fine to start.
  • safety_preset - safe (default) does per-channel stabilization + a tanh limiter + a 2-frame ramp at any motion value. safer tightens it above ~1.5; base is 1:1 with the original SVI Pro FLF node; legacy mirrors PainterI2V. Start on safe.
  • use_end_frame + end_samples - flip the toggle true and connect an end-frame latent for the end lock; leave it false and end_samples is ignored even if wired (the documented way to dodge ping-pong artifacts).
  • end_lock_slots (1) - final slots locked to the end frame (1 ≈ the last ~4 video frames; 16 = 1:1 parity with the original FLF node). lock_start_slots (1) does the same for the start; 0 lets motion start at frame one.
  • end_overshoot_slots (0) - extends the generation window past the visible clip so the clip converges toward the end frame instead of hard-freezing on it. Recommended for clean FLF endings; trim_slots output says how much to cut afterward.
  • latent_refresh (0) - per-channel mean/contrast matching between the motion tail and the anchor, fighting SVI's drift and color shift. Start at 0.5 for chains of 3+ segments.
  • clip_vision_mode (auto) - how start/end CLIP-Vision embeddings merge: auto (concat) suits true A→B transitions; end_only suits SVI continuation where anchor and end are the same image but prev_samples came from another scene.
  • vram_profile - normal through loop_per_frame (lowest_vram) and cpu_offload (slowest); your 16GB-and-below lever. Optional prev_samples (previous generation's latents) and clip_vision_start_image/clip_vision_end_image.

Outputs: positive, negative, the built latent, and trim_slots - wire that into WanMotionProTrimmer after sampling.

How it works

It concatenates the anchor and motion-tail latents and sets a 4-channel concat mask marking which slots are locked and which are generation targets; the end lock overwrites the final slots with end_samples and masks them the same way. The motion stage scales the tail before conditioning, and the safety presets wrap that with limiters and ramps so a big motion value doesn't blow out colors or melt seams. All latent-space math, no new weights - which is why the node itself has nothing to download.

Installing it

Ships in IAMCCS-nodes - ComfyUI Manager (search "IAMCCS"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git

Restart after. The node carries no weights, but the pipeline it feeds needs the SVI Pro LoRAs (the HIGH/LOW pair from Kijai's WanVideo_comfy) on a Wan 2.2 I2V model. Keep the pack updated - CCS ships constantly and this node has been through several behavior revisions.

Common issues

  • end_transition_frames is deprecated - leave it at 0. Values above 0 blend padding latents toward the end frame in latent space, and VAE latent interpolation isn't linear, so you get static/frozen output. 0 is the hard cut matching the original FLF behavior.
  • Overshoot + KJNodes crash. end_overshoot_slots > 0 has been reported to crash with an einops shape mismatch when KJNodes WAN attention optimizations (FETA / wrapped_attention) are enabled. Set overshoot to 0 or update/disable that KJNodes option.
  • "Static clip" or segment jumps. Flip diagnostic_log on - it prints the concat-latent/mask and motion/end-lock ranges so you can see what the node actually built.
  • Color shift near the end of a stage was the top community complaint on the release thread. That's what latent_refresh plus end_only clip-vision routing fix; 0.5 refresh with end_only on continuation segments is a solid starting point.
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