Rikan I2V Painter
Anchor your image, exaggerate the motion, and hand the sampler ready-made conditioning
- positive
- negative
- vae
- clip_vision
- start_image
- high_positive
- high_negative
- low_positive
- low_negative
- latent
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_amplitudemath).
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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–4096 | — |
| height | INT | 48016–4096 | — |
| length | INT | 811–4096 | — |
| batch_size | INT | 11–4096 | — |
| motion_amplitude | FLOAT | 1.301–2 | — |
| color_protect | BOOLEAN | true | — |
| correct_strength | FLOAT | 0.010–0.3 | — |
| clip_visionopt | CLIP_VISION_OUTPUT | — | |
| start_imageopt | IMAGE | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| high_positive | CONDITIONING | — |
| high_negative | CONDITIONING | — |
| low_positive | CONDITIONING | — |
| low_negative | CONDITIONING | — |
| latent | LATENT | — |