Nodes/ComfyUI_IPAdapter_plus_V2/IPAdapter Regional Conditioning V2
ComfyUI Node

IPAdapter Regional Conditioning V2

The node behind the 'face and clothing consistent' workflows

By chflame163·Created 2 years ago·Updated 2 years ago· 55
IPAdapter Regional Conditioning V2
  • image
  • mask
  • positive
  • negative
  • IPADAPTER_PARAMS
  • POSITIVE
  • NEGATIVE
image_weight1.00
prompt_weight1.00
weight_type
start_at0.000
end_at1.000

Back in 2023, the workflow that made IP-Adapter famous was "Face and Clothing Consistent Control" - reference image on the face region, prompt everywhere else, so a character stayed recognizable without the reference flattening the whole frame. This node is the engine of that workflow. IPAdapterRegionalConditioningV2 takes an image, a mask, and your text conditioning, and produces the pieces that let an apply node condition only inside the mask.

It does two things at once, and both outputs matter. First, it builds an IPADAPTER_PARAMS bundle - a small struct holding the image, mask, weight, weight type, and step range - that a params-aware apply node consumes to run IP-Adapter strictly within the masked region. Second, it takes your optional positive and negative CONDITIONING and attaches the mask to them with mask_strength set to prompt_weight, so the text prompt is likewise localized to the region. Feed those into a conditioning combine and your prompt stops fighting the reference in the areas it shouldn't touch.

The inputs that matter:

  • image + mask - the reference and where it applies. The mask is the whole show; a good mask is worth more than any weight tuning.
  • image_weight (default 1.0) - how hard the image conditioning pushes inside the region.
  • prompt_weight (default 1.0, up to 10) - how hard the text prompt pushes inside the region. Cranking this is how you let the prompt dominate a region while the reference owns another.
  • weight_type - the full 15-way curve menu, including style transfer and composition for region-specific jobs.
  • start_at / end_at - step range for the regional conditioning.

Outputs: IPADAPTER_PARAMS (into an apply node that accepts params, like the Advanced or FromParams node), plus POSITIVE and NEGATIVE conditioning to combine into your sampler's conditioning inputs.

The classic wiring

LoadImage ──image──→ RegionalConditioningV2 ──IPADAPTER_PARAMS──→ IPAdapterAdvancedV2
LoadMask  ──mask──→          │
TextEncode ──positive──→    ├──POSITIVE──→ ConditioningCombine → KSampler
                            └──NEGATIVE──→ ConditioningCombine

Multiple instances of this node can each produce params for a different region, and IPAdapterCombineParamsV2 merges them so you can condition face, hair, and clothing separately - one reference per region.

Honest limits

Regional prompting works best when regions are cleanly separated. Overlapping characters, touching subjects, and soft masks produce blending artifacts where one region bleeds into another - the KB's character-consistency notes call this the standing limitation of the whole approach. On SDXL-era anime models it's also a text-encoder limitation: attributes can't bind to a specific character when tags have no syntax for it. For a single character with a tight mask, though, this node is still the cleanest way to keep a face on-model without sacrificing the rest of the frame. And note the era: this is a legacy-SDXL tool. Nobody's building new regional character pipelines on it in 2026, but if your base model is SDXL and your workflow needs region control, this is the node.

Install

Part of chflame163/ComfyUI_IPAdapter_plus_V2, the V2 fork of cubiq's pack. Manager → search ComfyUI_IPAdapter_plus_V2, or:

cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2

Restart. No pip requirements.

Gotchas

The classic failure is a missing or wrong-size mask - the mask has to spatially match the image, or your region lands somewhere you didn't intend. And there's a subtlety in how this node differs from a plain attn_mask on an apply node: the attn_mask limits the image conditioning, while the positive/negative outputs here also localize the text conditioning. If your prompt is leaking into a region, that's the feature you forgot to wire up - feed this node's POSITIVE/NEGATIVE into your conditioning chain instead of the raw text encode.

Categoryipadapter/params

Inputs (9)

NameTypeDefaultDescription
imageIMAGE
image_weightFLOAT1.00-1–3
prompt_weightFLOAT1.000–10
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
maskoptMASK
positiveoptCONDITIONING
negativeoptCONDITIONING

Outputs (3)

NameTypeDescription
IPADAPTER_PARAMSIPADAPTER_PARAMS
POSITIVECONDITIONING
NEGATIVECONDITIONING