Nodes/comfyui-common-util/Layer Images IPAdapter Advanced
ComfyUI Node

Layer Images IPAdapter Advanced

Every product gets its own image conditioning

By longgui0318·Created 2 years ago·Updated about a year ago· 1
Layer Images IPAdapter Advanced
  • layer_images
  • layer_canvas
  • model
  • ipadapter
  • image_negative
  • clip_vision
  • MODEL
  • layerImages
  • extendedMASK
layer_filter_type
layer_need_fusetrue
weight1.00
weight_type
combine_embeds
start_at0.000
end_at1.000
embeds_scaling

"Layer Images IPAdapter Advanced" is the fanciest node in this pack, and the one with the most moving parts. It applies IP-Adapter image prompting per layer: for each layer of the type you select, it uses that layer's image as the reference and that layer's mask as the conditioning mask, so a product, a prop, and a hand each pull the model toward their own look independently - rather than one reference fighting to control the whole canvas.

That's the whole point of the layer system this pack builds toward. You describe an e-commerce scene (product, prop, hand, model), fuse it, and then instead of a single image-prompt reference you get targeted conditioning: the product region is guided by the product's reference, the hand region by the hand's reference, and so on. It's a neat trick, and it's built directly on cubiq's reference IP-Adapter implementation - the class is an adapted copy of IPAdapterAdvanced from ComfyUI_IPAdapter_plus.

The hard dependency - read this first

This node imports IPAdapterAdvanced from custom_nodes.ComfyUI_IPAdapter_plus.IPAdapterPlus, so you must have cubiq's ComfyUI_IPAdapter_plus installed or the node throws ComfyUI_IPAdapter_plus.IPAdapterPlus not found, you should install it first. That's a second pack on top of this one, and it's non-negotiable. Related quirk: the weight_type dropdown is populated from that pack's WEIGHT_TYPES - until ComfyUI_IPAdapter_plus is installed, it's an empty list, which is your clue something's missing.

How it works

It filters the layer list by layer_filter_type (same Product/Prop/Human-* choices as the rest of the family). Then, if layer_need_fuse is on, it composites the selected layers into one image, derives one mask, and runs IPAdapterAdvanced once with that fused reference + mask. If it's off, it runs IPAdapterAdvanced sequentially per layer, chaining the model through each call. Either way, layers you didn't select pass through untouched on the layerImages output, and an extendedMASK gives you the combined mask of everything that was conditioned.

Inputs that matter

  • model, ipadapter - your diffusion model and an IPAdapter model (from an IPAdapter loader).
  • layer_images, layer_filter_type, layer_need_fuse, layer_canvas - the layer-system plumbing, same as "Layer Image Seleted".
  • weight (FLOAT, default 1, -1 to 5) - IP-Adapter strength. The community default for style-ish transfer tends to sit lower - 0.6–0.8 - and if it's too high the reference overrides the prompt entirely.
  • weight_type, combine_embeds, embeds_scaling - advanced IP-Adapter controls passed straight through from IPAdapter_plus; leave them unless you know what they do.
  • start_at / end_at (defaults 0/1) - which denoising steps the adapter affects.
  • image_negative, clip_vision (optional) - negative reference and a custom CLIP vision model.

Outputs

  • MODEL - your model, now conditioned.
  • layerImages - the non-selected layers, untouched.
  • extendedMASK - combined mask of the processed layers.

The honest take

This is a powerful node and a fiddly one. It's aimed at product-photography workflows where per-region identity matters; for a single-image style transfer you don't need it - plain IP-Adapter_plus is simpler. And treat the weight default of 1.0 with suspicion: that's often too hot for this kind of conditioning. Start lower, and remember IP-Adapter shines inside SD 1.5/SDXL workflows (nothing here loads on Flux-era models).

Installing it

Two packs, not one:

cd ComfyUI/custom_nodes
git clone https://github.com/longgui0318/comfyui-common-util
cd comfyui-common-util && pip install -r requirements.txt
# plus the required IP-Adapter pack (cubiq's ComfyUI_IPAdapter_plus via Manager or GitHub)

Restart after. requirements.txt lists only opencv-python, but this pack also imports scipy, scikit-image, and PyWavelets at load - if it won't load, pip install scipy scikit-image PyWavelets. And without ComfyUI_IPAdapter_plus, this node will refuse to run.

Categoryipadapter

Inputs (14)

NameTypeDefaultDescription
layer_imagesLAYER_IMAGES
layer_filter_typeCOMBO6 options: all, Product, Prop, Human-Hand, Human-Male, Human-Female
layer_need_fuseBOOLEANtrue
layer_canvasIMAGE
modelMODEL
ipadapterIPADAPTER
weightFLOAT1.00-1–5
weight_typeCOMBO0 options:
combine_embedsCOMBO5 options: concat, add, subtract, average, norm average
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
image_negativeoptIMAGE
clip_visionoptCLIP_VISION

Outputs (3)

NameTypeDescription
MODELMODEL
layerImagesLAYER_IMAGES
extendedMASKMASK