Nodes/ComfyUI-PainterNodes/PainterI2VAdvanced
ComfyUI Node

PainterI2VAdvanced

More motion out of Wan 2.2 I2V — without the green cast

By princepainter·Created 7 months ago·Updated 3 days ago· 191
PainterI2VAdvanced
  • positive
  • negative
  • vae
  • clip_vision
  • start_image
  • high_positive
  • high_negative
  • low_positive
  • low_negative
  • latent
width832
height480
length81
batch_size1
motion_amplitude1.30
color_protecttrue
correct_strength0.01

Wan 2.2 I2V looks great until it doesn't move. That's the exact problem this node attacks. PainterI2VAdvanced is a motion booster for the Wan 2.2 image-to-video pipeline - it cranks up how much your subject actually moves - and it's the fixed version of an earlier node, because cranking up motion has a nasty habit of turning your colors gray and green. It's a conditioning helper, not a model: no API call, no key, no model download. It edits latents before sampling and hands the sampler a shot of adrenaline.

It's from princepainter, a Chinese Douyin (TikTok) blogger - 绘画小子 - and it's the "Advanced" pass on his original PainterI2V. That original got a noisy launch on Reddit with a promo post the community instantly smelled ("Is this an AD?" is the top comment), but the reception to the actual output was real: people using Wan 2.2 + Lightx2v speed LoRAs were complaining about "underwater" slow motion, and PainterI2V genuinely addressed it. This version is the fix for what that fix broke.

How it actually works

The whole trick lives in the start_image. Feed it a single image and the node builds the standard Wan I2V "concat" latent - frame 0 is your image, the rest are gray - then encodes the lot through your VAE. Motion enhancement is then a one-liner in latent space: it takes the difference between the gray frames and the base frame, subtracts the channel mean, multiplies the centered difference by motion_amplitude, and adds it back. More deviation from the base frame = more motion. No sampling has happened yet; you're just editing the conditioning.

The color protection runs after that, and this is the part worth the "Advanced" in the name. High motion_amplitude pushes channel means around, which is why boosted Wan clips drift green and dim. The node compares each channel's mean before and after enhancement, and only for channels whose mean actually drifted does it pull the values back - and only on positive values, so the negative "detail" region is left alone. There's also a dark-area lift if the whole latent got dimmer. The result: motion you asked for, color you didn't lose.

The inputs that matter

Only three, really:

  • start_image - the image to animate. It's marked optional, but here's the trap: without it, the motion branch never runs. You'll get conditioning back untouched. Don't skip it.
  • motion_amplitude (1.0–2.0, default 1.3) - how hard to push the motion. The author's guide: 1.0–1.1 for talking/blinking, 1.1–1.3 for walking/gestures, 1.3–1.6 for running/jumping. Past ~1.6 things get weird.
  • correct_strength (0–0.3, default 0.01) - how hard to fight color drift. Start at 0.01–0.05; if you see green/dim, push toward 0.1–0.15. It only touches color, never motion.

The rest - positive/negative conditioning, vae, width, height, length (default 81 frames), batch_size, and the optional clip_vision - are the standard Wan I2V plumbing. clip_vision just attaches a CLIP vision output to the conditioning if you have one.

Wiring it into the dual-sampler workflow

This is the node's party trick: it outputs two full sets of conditioning - high_positive/high_negative (motion-boosted) and low_positive/low_negative (untouched originals). That's because Wan 2.2 is a two-expert MoE: a high-noise model for motion and composition, and a low-noise model for detail. Run them as separate samplers and feed the high set to the high-noise pass and the low set to the low-noise pass. Same idea as the community's speed-LoRA trick (fast LoRA on the low-noise pass only) - you amplify motion where it belongs and leave detail alone. The latent output is your empty latent, which goes into the KSampler's latent input.

Install

Dead simple - pure Python, no requirements.txt, nothing to download beyond the node:

cd ComfyUI/custom_nodes && git clone https://github.com/princepainter/ComfyUI-PainterI2Vadvanced

Then restart ComfyUI and find PainterI2VAdvanced under conditioning/video_models. Or skip the terminal and search "ComfyUI-PainterI2Vadvanced" in ComfyUI Manager - it's registered there. You'll still need a Wan 2.2 I2V model (the A14B), its two experts, and a VAE to actually generate; this node just rides on top.

Where people get burned

The start_image gotcha above is #1 - the node silently does nothing without it. #2 is blaming the node for quality when the real culprit is a speed LoRA on the high-noise pass, which kills motion regardless. If your clip is still static, raise motion_amplitude before you touch anything else. And if colors start to green-shift, that's exactly what correct_strength exists for - the original PainterI2V didn't have it, which is the entire reason this version exists. It's a niche tool for a specific itch, but when "underwater motion" is your problem, it's the one to reach for.

Categoryconditioning/video_models

Inputs (12)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–4096
heightINT48016–4096
lengthINT811–4096
batch_sizeINT11–4096
motion_amplitudeFLOAT1.301–2
color_protectBOOLEANtrue
correct_strengthFLOAT0.010–0.3
clip_visionoptCLIP_VISION_OUTPUT
start_imageoptIMAGE

Outputs (5)

NameTypeDescription
high_positiveCONDITIONING
high_negativeCONDITIONING
low_positiveCONDITIONING
low_negativeCONDITIONING
latentLATENT