Nodes/ComfyUI Inspire Pack/Regional IPAdapter By Color Mask (Inspire)
ComfyUI Node Runs on cloud

Regional IPAdapter By Color Mask (Inspire)

Different reference images per region, painted by color

By ltdrdata·Created 3 years ago·Updated 9 months ago· 805
Regional IPAdapter By Color Mask (Inspire)
  • color_mask
  • image
  • neg_image
  • REGIONAL_IPADAPTER
  • MASK
mask_color#FFFFFF
weight0.70
noise0.50
weight_type
start_at0.000
end_at1.000
unfold_batchfalse
faceid_v2false
weight_v21.00
combine_embeds

Here's the problem this solves: you want one character on the left styled after reference image A, and another on the right styled after reference image B, in a single generation. A normal IP-Adapter applies its reference to the whole canvas, so you can't do that directly. Regional IP-Adapter fixes it by masking the adapter's influence to a region - and this particular node defines that region using a color mask, which is a genuinely nice way to work.

Instead of drawing a separate black-and-white mask per region, you paint one image with flat colors: red where reference A goes, blue where B goes, and so on. Each Regional IPAdapter node grabs its color out of that shared map. It's the same trick Inspire uses for regional prompting by color mask, applied to image prompting. When you've got several regions, one color-coded image beats juggling a stack of separate masks.

This is squarely SD1.5/SDXL territory. Per the knowledge base, IP-Adapter never got a Flux-era successor in adapter form, so regional IP-Adapter is an SD1.5/SDXL move - and it's one of the strongest character-consistency workflows those models have.

How it works

You feed in the color map and tell the node which color marks its region (mask_color). It derives a mask from that color, then binds your reference image as an IP-Adapter conditioning applied only inside that mask. The output is a REGIONAL_IPADAPTER handle. You chain several of these (one per region, each with its own color and reference), combine them, and feed the result into the regional apply step so the sampler honors each region's reference where it belongs.

The inputs and outputs that matter

The ones you actually set:

  • color_mask and mask_color - the shared color-coded image, and the hex color (default #FFFFFF) that picks out this node's region from it.
  • image - the reference image whose style/identity gets applied inside that region.
  • weight (default 0.7) - how hard the reference pushes. The KB's rule of thumb: ~0.6–0.8 for style, drop toward 0.3–0.5 if the prompt stops mattering, and past ~0.8 the reference starts overriding everything.
  • start_at / end_at (0 to 1) - the slice of denoising the adapter is active over. Ending early preserves detail, which matters because IP-Adapter run across all steps measurably softens the image.

Then there's noise (an adapter-side setting affecting how the reference is injected), weight_type, unfold_batch, and optional FaceID controls (faceid_v2, weight_v2, combine_embeds, neg_image) for when your reference is a face.

Outputs: REGIONAL_IPADAPTER (chain/combine these across regions, then apply) and MASK (the mask it derived from your color - handy for sanity-checking that it grabbed the right area).

How to install it

ComfyUI Manager: search ComfyUI Inspire Pack, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Inspire-Pack

then restart. Dr.Lt.Data's pack (ComfyUI-Manager, Impact Pack).

Common issues & troubleshooting

weight_type only shows "IPAdapterPlus is not installed." This is the big one, and it's not a made-up warning - it's literally what the dropdown says when the dependency is missing. These Regional IPAdapter nodes are built on cubiq's ComfyUI_IPAdapter_plus. Install it via Manager, restart, and the real weight-type options come back. Without it the node can't function.

The mask grabs the wrong area or nothing. Your mask_color has to match the color in the map exactly. Anti-aliased edges and JPEG compression shift colors, so paint the color map with hard-edged flat fills and save it lossless (PNG). Check the MASK output to see what it actually selected.

Regions bleed into each other. That's the standing limitation of regional conditioning, not a defect. The KB's fix is to end the masking early (lower end_at) so hard bounds only shape composition, then let the base take over - holding hard masks the whole way is what produces that collaged, seamy look.

Face reference isn't holding identity. For faces you want the FaceID path - turn on faceid_v2 and use a FaceID-capable IP-Adapter setup upstream. And keep it on SD1.5; FaceID on SDXL is reported as weak.

CategoryInspirePack/Regional

Inputs (13)

NameTypeDefaultDescription
color_maskIMAGE
mask_colorSTRING#FFFFFF
imageIMAGE
weightFLOAT0.70-1–3
noiseFLOAT0.500–1
weight_typeCOMBO1 options: IPAdapterPlus is not installed
start_atFLOAT0.0000–1
end_atFLOAT1.0000–1
unfold_batchBOOLEANfalse
faceid_v2optBOOLEANfalse
weight_v2optFLOAT1.00-1–3
combine_embedsoptCOMBO5 options: concat, add, subtract, average, norm average
neg_imageoptIMAGE

Outputs (2)

NameTypeDescription
REGIONAL_IPADAPTERREGIONAL_IPADAPTER
MASKMASK