IPAdapter Batch (Adv.) V2
Per-frame image prompting for animation
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- MODEL
IPAdapter Batch (Adv.) V2 is what you switch to when your reference image stops being one image and becomes a sequence. It's the Advanced node with batch support bolted on: give it a stack of frames and a matching weight schedule, and the image influence can ramp, crossfade, or hold across your animation instead of slamming the same strength into every frame. This is the node behind a lot of "one face morphs into another" and "reference style drifts over time" clips.
What changes versus the Advanced node
Same decoupled cross-attention machinery, same weight, weight_type, start_at/end_at, embeds_scaling inputs - the difference is two things. First, unfold_batch is on internally, which means the node treats your batch as separate images to be conditioned individually rather than one big image. Second, there's an encode_batch_size input (default 0, up to 4096): 0 means "encode everything in one go," and a nonzero value chunks the encoding so you don't blow your VRAM when the batch is huge. If you're encoding 200 frames of a video, this is the knob that keeps you out of OOM territory.
How it fits in a workflow
The standard shape is: IPAdapter Weights V2 generates a weight list (say 1.0, 0.5, 0.0 - a fade-out) and hands it to this node alongside the batch of reference images. The weights FLOAT output from the weights node plugs in where you'd expect, and the node applies weight i to frame i. Crossfading between two faces works the same way: feed image A and image B, let the weights slide from 1→0 and 0→1, and the adapter eases from one identity to the other.
A couple of practical notes from people who run this a lot. The weight schedule has to line up with your frame count - a mismatch produces a hard cut instead of a fade, because the node just clamps to whatever weights exist. And weight_type still matters per-frame: ease in/ease out will smooth the transitions further. For a straight morph, linear with a manually written list is usually the cleanest.
Inputs worth knowing
The essentials are the same as Advanced: model, ipadapter, image, weight (default 1.0, up to 5), start_at/end_at for the denoising window, and weight_type for the curve. Optional image_negative, attn_mask, and clip_vision all carry over. The output is a single MODEL - wire it to your sampler and you're done.
Installing it
ComfyUI Manager: search "ComfyUI_IPAdapter_plus_V2". Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2
Restart ComfyUI. Adapter weights go in ComfyUI/models/ipadapter, CLIP vision in ComfyUI/models/clip_vision.
Gotchas
Because this pack is a renamed snapshot of cubiq's V2 codebase, don't expect it to track upstream updates - you're on a fixed version until chflame163 syncs it. And remember this is a conditional node, not an image generator: the batch is only as coherent as the schedule feeding it. If your animation jumps, the first place to look is the weights list, not the node itself.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–5 | — |
| weight_type | COMBO | 15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9 | |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| encode_batch_size | INT | 00–4096 | — |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |