WanImageMotionPro Plus
WanImageMotionPro Plus — motion boost plus a locked end frame, for real transitions
- positive
- negative
- anchor_samples
- prev_samples
- end_samples
- clip_vision_start_image
- clip_vision_end_image
- positive
- negative
- latent
- trim_slots
Plain WanImageMotion fixes floaty SVI output. This is the Pro version: everything the plain node does, plus an end_samples end-lock so your clip converges onto a specific final frame - which is what turns a loop or a continuation into an actual A→B transition. The KB's SVI panel credits IAMCCS-nodes with adding exactly this first-frame/last-frame (FLF) support to the SVI ecosystem back in March 2026; this node is where that lives in its current form.
The core controls
The first ten or so inputs are shared with WanImageMotion - positive/negative, length, anchor_samples, motion (1.0–2.0), motion_mode, vram_profile, safety_preset. Then it diverges:
end_samples(optional LATENT) - encode your target final image and wire it here.use_end_framedefaults true; flip it false to safely bypass the end-frame encoder without unplugging, which prevents ping-pong artifacts.end_lock_slots(default 1) - how many final latent slots are hard-locked to the end frame. 1 ≈ the last ~4 video frames. Set 16 for 1:1 parity with the original FLF node.end_overshoot_slots(0–8, recommended 1) - extends the internal generation window so the clip converges toward the end frame instead of hard-freezing on it. If the end frame looks stamped-on, this is the dial. Known trap from the tooltip: with KJNodes WAN attention optimizations (FETA / wrapped attention) enabled, overshoot > 0 can crash with an einops shape mismatch - set it to 0 or disable that optimization.clip_vision_mode-autoconcatenates start+end tokens (correct only for true A→B);end_onlyis recommended for SVI Pro continuation where anchor=end=same image, because it stops crossfade bleed.latent_refresh/delta_max- the moment-stabilization pair for long chains. Startlatent_refreshat 0.5 for 3+ segments; cap over-correction withdelta_max0.5–1.0.continuity_profile- raw-like paths for SVI chains that keep FLF semantics without motion shaping. Most people can leave itoffand let the explicit controls do the work.
There's also a preset widget (default [custom]) with prebuilt combos like parity 1:1, flf overshoot, and the SVI continuity family - useful as starting points, then you tune individual widgets.
Outputs and where it goes
Out comes edited positive/negative, the latent to sample, and - new compared to the plain node - trim_slots. That's the number of latent slots the overshoot added, which you subtract after sampling so your visible clip lands on the intended length. Wire trim_slots into a trim/crop node and the math stays honest.
Honest note: this is a lot of dials, and end_transition_frames is explicitly deprecated - keep it at 0, because blending padding latents toward the end frame in latent space produces static/frozen output (VAE latent interpolation isn't linear). If you want the exact original FLF+SVI behavior to benchmark against, raw_mode gives you a 1:1 reconstruction of it.
Install
Part of IAMCCS-nodes:
- ComfyUI Manager → search "IAMCCS" → install → restart.
- Or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart ComfyUI. Requirements: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. Runs on top of your existing WAN 2.2 + SVI LoRA setup.
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 | — |