Nodes/ComfyUI_IPAdapter_plus_V2/IPAdapter Batch (Adv.) V2
ComfyUI Node

IPAdapter Batch (Adv.) V2

Per-frame image prompting for animation

By chflame163·Created 2 years ago·Updated 2 years ago· 55
IPAdapter Batch (Adv.) V2
  • model
  • ipadapter
  • image
  • image_negative
  • attn_mask
  • clip_vision
  • MODEL
weight1.00
weight_type
start_at0.000
end_at1.000
embeds_scaling
encode_batch_size0

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.

Categoryipadapter

Inputs (12)

NameTypeDefaultDescription
modelMODEL
ipadapterIPADAPTER
imageIMAGE
weightFLOAT1.00-1–5
weight_typeCOMBO15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9
start_atFLOAT0.0000–1
end_atFLOAT1.0000–1
embeds_scalingCOMBO4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty
encode_batch_sizeINT00–4096
image_negativeoptIMAGE
attn_maskoptMASK
clip_visionoptCLIP_VISION

Outputs (1)

NameTypeDescription
MODELMODEL