WanImageMotionPro Plus
Same engine as WanImageMotionPro — this is just its full name
- positive
- negative
- anchor_samples
- prev_samples
- end_samples
- clip_vision_start_image
- clip_vision_end_image
- positive
- negative
- latent
- trim_slots
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 → _AdaIN → WanImageMotionPro → WanImageMotionProPlus - 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_presettosafer. - end_overshoot_slots - set to 1 for clean FLF endings and trim the extras with
WanMotionProTrimmervia the trim_slots output. - vram_profile - your low-VRAM lever;
loop_per_frameandcpu_offloadexist 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.
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 | — |