PainterI2V for KJ
Your Wan 2.2 clips move like molasses — this node is the fix
- vae
- clip_embeds
- start_image
- end_image
- control_embeds
- temporal_mask
- extra_latents
- add_cond_latents
- image_embeds
If you've run Wan 2.2 with a 4-step lightx2v LoRA, you know the drill: the generation is fast, the quality holds up, and everything moves like it's underwater. It's one of the most complained-about quirks of speed-distilled Wan - people were posting workarounds within weeks of 2.2's release. PainterI2V for KJ is a single-node fix for exactly that. It's a drop-in replacement for Kijai's WanImageToVideo encode node, and its entire job is to make the motion actually move again.
What it actually does
The node was written by princepainter as a modified fork of Kijai's Wan 2.2 I2V encode node - the README credits KJ right at the top, and the whole pack is one file. The pitch: +15-50% motion amplitude, better camera-prompt obedience, no brightness shift, and no quality loss at 1.0 (the "off" setting). Community testing backs it up - the thread that put it on people's radar was literally titled "Wan 2.2 Lightx + PainterI2V_for_Kijai" with the verdict "much more motions and speed."
The trick is a latent-space hack, not a new model. After your start image is VAE-encoded, the node separates the first-frame latent from the rest, computes the per-frame difference (the latent-space "motion vector"), strips the mean out of that difference so luminance stays put, scales it by motion_amplitude, clamps to [-6, 6], and recombines. You're literally amplifying how far each later frame drifts from frame one - which is exactly what reads as speed. The mean-preservation step is what keeps it from washing out or flickering into a brightness mess.
The inputs that matter
motion_amplitude- the whole point.1.0= stock behavior,1.15default = general use,1.25–1.35for running/jumping, up to1.5for extreme motion. Tune in 0.05 steps.start_image- your I2V reference, required (it errors if you wire an image without avae).vae,clip_embeds- feed the same WANVAE and CLIP vision embeddings your KJ workflow already uses.width/height/num_frames- output video geometry (defaults 832×480, 81 frames), matching the sampler.
Everything else - noise_aug_strength, start/end_latent_strength, temporal_mask, tiled_vae, the Fun/FLF2V toggles - is advanced or workflow-specific. Leave them alone on your first pass. The single output, image_embeds (type WANVIDIMAGE_EMBEDS), plugs straight into WanVideoSampler.
Installing it
No dependencies, no model downloads, no requirements.txt - it reuses the Wan 2.2 models and VAE you already have. ComfyUI Manager: search PainterI2VforKJ. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/princepainter/ComfyUI-PainterI2VforKJ.git
Restart ComfyUI. Here's the gotcha the README is quiet about: you still need Kijai's ComfyUI-WanVideoWrapper installed, because the model loader, VAE loader, sampler, and decode nodes in any working workflow are all wrapper nodes. This pack only replaces the encode step - it doesn't replace the stack around it.
Troubleshooting
- Motion still slow? Nudge
motion_amplitudeup in 0.05 steps, and make sure your prompt describes the movement ("running forward quickly"), not a vague "moves around." The README is right that prompting is half the battle. - Too fast or jittery? Back it off. Pushing toward the 2.0 max is where you invite wobble and ping-pong-style artifacts - 1.4 is the author's own practical ceiling.
- VAE error on load? You wired a
start_imagebut novaeinput. Connect a WANVAE loader. - Quality changed at 1.0? It shouldn't have - at 1.0 the node is a passthrough. If your baseline differs, the workflow, not this node, is the difference.
It's a niche tool for one specific annoyance, but if you live in 4-step Wan I2V workflows, it's a genuinely useful one - and it costs you nothing to try.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| motion_amplitude | FLOAT | 1.151–2 | 核心参数:动态幅度增强系数,>1.0增强运动减少慢动作,1.0=禁用 |
| width | INT | 83264–8096 | 输出视频宽度 |
| height | INT | 48064–8096 | 输出视频高度 |
| num_frames | INT | 811–10000 | 总帧数 |
| noise_aug_strength | FLOAT | 0.0000–10 | 起始帧噪声增强强度 |
| start_latent_strength | FLOAT | 1.0000–10 | 起始帧latent强度 |
| end_latent_strength | FLOAT | 1.0000–10 | 结束帧latent强度 |
| force_offload | BOOLEAN | true | 处理完成后卸载VAE到CPU |
| vaeopt | WANVAE | WanVideo VAE模型 | |
| clip_embedsopt | WANVIDIMAGE_CLIPEMBEDS | CLIP视觉嵌入(来自ClipVisionEncode) | |
| start_imageopt | IMAGE | 起始帧图像,I2V必需 | |
| end_imageopt | IMAGE | 结束帧图像(可选) | |
| control_embedsopt | WANVIDIMAGE_EMBEDS | 控制信号嵌入(Fun模型) | |
| fun_or_fl2v_modelopt | BOOLEAN | true | 使用官方FLF2V或Fun模型时启用 |
| temporal_maskopt | MASK | 时间掩码,控制每帧权重 | |
| extra_latentsopt | LATENT | 额外latent(如Skyreels A2参考图) | |
| tiled_vaeopt | BOOLEAN | false | 使用分块VAE编码(省显存) |
| add_cond_latentsopt | ADD_COND_LATENTS | WanVideo额外条件latent |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_embeds | WANVIDIMAGE_EMBEDS | — |