Nodes/IAMCCS-nodes/WanImageMotion
ComfyUI Node

WanImageMotion

Your WAN SVI clip came out slow and floaty — this node is the motion fix

By IAMCCS·Created 11 months ago·Updated 8 days ago· 113
WanImageMotion
  • positive
  • negative
  • anchor_samples
  • prev_samples
  • clip_vision_output
  • positive
  • negative
  • latent
length81
motion_latent_count1
motion1.15
motion_modemotion_only (prev_samples)
add_reference_latentsfalse
latent_precisionfp32
vram_profilenormal
include_padding_in_motionfalse
safety_presetsafe
lock_start_slots1
diagnostic_logfalse
use_prev_samplestrue
latent_refresh0.00
delta_max0.0

Slow-motion is the classic SVI complaint: you chain a Wan continuation and the output drifts along at half speed, all floaty and listless. IAMCCS_WanImageMotion is a drop-in replacement for the common WAN SVI Pro image-to-video nodes that adds a motion amplitude control - crank it and your clip actually moves. It's the pack's motion-control workhorse, and its CTR on the site suggests it's one of the nodes people actually keep finding.

How it works

This is a conditioning node, not a sampler. You feed it positive/negative conditioning plus anchor_samples (the encoded start image latents), and optionally prev_samples (the previous segment's output latents for continuation). It then edits the conditioning's latent image in latent space: it takes the difference between each latent frame and the anchor, scales that difference by your motion gain, and writes it back - so frames that were barely deviating from the start image now deviate more, and the sampler produces a clip with real movement. A safety_preset guards the result: safe (default) applies per-channel stabilization, a tanh limiter, and a 2-frame ramp so you don't blow out colors at high motion; safer tightens that for motion > 1.5; base is 1:1 with the original FLF/SVI node; legacy mirrors the PainterI2V hard-clamp approach.

The settings a beginner actually touches:

  • motion (1.0–2.0, default 1.15) - the amplitude. 1.15 is the gentle boost; 1.5+ is where you get obvious movement and should reach for safer.
  • motion_mode - motion_only (prev_samples) boosts just the continuation tail; all_nonfirst (anchor+motion) boosts every frame after the first.
  • vram_profile - normal, chunked_blocks_2/4, loop_per_frame, or cpu_offload for tight VRAM.
  • latent_refresh (0–1) - matches per-channel mean/contrast of the motion tail to the anchor. Start at 0.5 for chains of 3+ segments; it fights the drift that makes long SVI clips wander.

Outputs are the edited positive, negative, and an empty latent ready for sampling. Wire the conditioning and latent into your Wan sampler and it works like the node it replaces.

The honest tradeoffs

More motion isn't free. Push motion high on a 14B offloaded model and you're paying for extra compute on every frame plus risking seam degradation - that's what the safety presets are for. And prev_samples is lazy and loop-friendly: on the first segment of a chain it may ask ComfyUI for a second pass, which is normal, not a hang. There's also a use_prev_samples toggle so you can keep the wire connected (autolink forces it sometimes) while telling the node to ignore 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. It rides on your existing WAN 2.2 + SVI setup - the pack's docs (docs/WanImageMotion.md) cover the full chain if you want the reference workflow.

CategoryIAMCCS/Wan

Inputs (19)

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_precisionCOMBOfp324 options: auto, fp16, fp32, normal
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.
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 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.
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.
prev_samplesoptLATENT
clip_vision_outputoptCLIP_VISION_OUTPUT

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT