WanImageMotionPro Plus
The node that got people back on Wan 2.2
- positive
- negative
- anchor_samples
- prev_samples
- end_samples
- clip_vision_start_image
- clip_vision_end_image
- positive
- negative
- latent
- trim_slots
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:
- Motion amplitude control - a
motionboost (default 1.15) applied to the carried-over motion tail, fixing the slow-motion/stiff feel people hit in SVI Pro pipelines. - FLF start lock -
lock_start_slots(1) hard-locks the first latent slots toanchor_samplesvia a concat mask, so the clip genuinely starts from your reference image. - FLF end lock -
end_lock_slots(1) hard-locks the last latent slots toend_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_nonfirstboosts 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.safertightens it above ~1.5;baseis 1:1 with the original SVI Pro FLF node;legacymirrors PainterI2V. Start onsafe. - 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_onlysuits SVI continuation where anchor and end are the same image butprev_samplescame from another scene. - vram_profile -
normalthroughloop_per_frame (lowest_vram)andcpu_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_framesis 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 > 0has 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_logon - 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_refreshplusend_onlyclip-vision routing fix; 0.5 refresh withend_onlyon continuation segments is a solid starting point.
Inputs (33)
| 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 | Output latent dtype for the empty Wan sampler latent. Kept here for backward compatibility with older WanImageMotionPro workflows. |
| 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. |
| latent_refresh | FLOAT | 0.000–1 | Latent 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_max | FLOAT | 0.00–5 | Soft-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_mode | COMBO | auto | Controls 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_mode | BOOLEAN | false | Strict 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_profile | COMBO | direct | High-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_slots | INT | 00–16 | Ignore 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_mode | COMBO | latest | How 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_blend | FLOAT | 0.000–1 | Blend 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_profile | COMBO | off | Raw-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. |
| preset | COMBO | [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_samplesopt | LATENT | — | |
| end_samplesopt | LATENT | — | |
| clip_vision_start_imageopt | CLIP_VISION_OUTPUT | — | |
| clip_vision_end_imageopt | CLIP_VISION_OUTPUT | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| trim_slots | INT | — |