Nodes/Rikannodes/Rikan I2V Painter
ComfyUI Node

Rikan I2V Painter

Anchor your image, exaggerate the motion, and hand the sampler ready-made conditioning

By rikanrino·Created 4 months ago·Updated 4 months ago· 1
Rikan I2V Painter
  • 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

Image-to-video on Wan has a specific shape: you want your start image locked into the first frame, then the rest of the clip animated away from it - with more motion than the model wants to give you by default. Rikan I2V Painter is the prep node that sets that up in one shot. Feed it your start image, your positive and negative conditioning, and a VAE, and it builds the empty latent video, encodes your image into the first frame, and hands back the conditioning bundles and latent the sampler needs. It's the "paint the first frame across the clip" trick, packaged.

Where it shines is the motion_amplitude control. Wan has a well-known habit of producing near-static clips - great if you want a gentle pan, maddening if you asked for action. This node encodes your first frame, then scales the difference between the first frame's latent and the rest of the (gray) frames in latent space, exaggerating whatever motion is already implied before the sampler ever runs. Crank motion_amplitude from 1.0 to 1.3 and you get visibly livelier results without touching CFG or steps.

The latent it builds

The node creates a [batch, 16, frames, height/8, width/8] latent - the Wan shape: 16 channels, 8× spatial compression, 4× temporal compression. length (default 81, the Wan native context) becomes ((length-1)//4)+1 latent frames. width and height default to 832×480, Wan's 16:9-ish working resolution; keep them multiples of 16.

If you give it a start_image, it resizes it to your canvas, places it in frame 0, fills the rest with neutral gray, encodes the whole thing, and marks the mask so only frame 0 acts as the anchor (concat_mask freezes everything else). That anchor plus the image's reference_latents (and an optional clip_vision output, which Wan's I2V path uses for first-frame guidance) get stamped into the conditioning.

The four conditioning outputs

This is the part that confuses people. The node emits high_positive, high_negative and low_positive, low_negative - not because it's doing Wan 2.2's high-noise/low-noise expert split, but because it gives you two sets:

  • high_* - the conditioning anchored on the original first frame.
  • low_* - conditioning anchored on the motion-amplified latent (the motion_amplitude math).

Try low_* wired to your sampler when the default feels static, high_* when you want the anchor held tight. Both are fully formed conditioning with the concat latent, mask, references, and clip vision already attached - you just pick one pair and sample. color_protect (on by default) corrects the color and brightness drift that latent-space amplification can introduce; correct_strength (default 0.01) tunes how aggressively.

Wiring and troubleshooting

The natural chain: CLIP text encode → this node (positive/negative/vae/start_image in) → KSampler (low_positive/low_negative/latent in) → VAE decode → save. If decoding a long or high-res clip OOMs, reach for the pack's Wan Spatio-Temporal Tiled VAE Decode, or use the tiled variant of this node instead.

Two gotchas. First, this latent shape is Wan-specific - it will not make sense for LTX or other architectures. Second, motion_amplitude above ~1.5 starts to look pushed and can warp the first frame; 1.3 is a sensible default, and if a clip is too static even at 2.0, the fix is usually a better motion prompt, not more amplitude. Install via ComfyUI Manager (search Rikannodes) or git clone https://github.com/rikanrino/Rikannodes into custom_nodes; restart, and it's under the Rikannodes category.

CategoryRikannodes

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