Nodes/KJNodes for ComfyUI/ConditioningSetMaskAndCombine3
ComfyUI Node Runs on cloud

ConditioningSetMaskAndCombine3

The same regional-prompting node, three regions deep

By kijai·Created 3 years ago·Updated about 20 hours ago· 2,930
ConditioningSetMaskAndCombine3
  • positive_1
  • negative_1
  • positive_2
  • negative_2
  • positive_3
  • negative_3
  • mask_1
  • mask_2
  • mask_3
  • combined_positive
  • combined_negative
mask_1_strength1.00
mask_2_strength1.00
mask_3_strength1.00
set_cond_area

Same node as ConditioningSetMaskAndCombine, one more region slot. This is the pack's regional-prompting bundle for three independent subjects or areas in one image - a three-character group shot, or a foreground/midground/background split where each layer gets its own prompt. The node's own description states the intent plainly: "Bundles multiple conditioning mask and combine nodes into one, functionality is identical to ComfyUI native nodes." It's exactly the native ConditioningSetMask + ConditioningCombine chain, just pre-wired for three regions instead of you connecting six-plus nodes by hand.

The inputs that matter

  • positive_1/negative_1, positive_2/negative_2, positive_3/negative_3 (CONDITIONING, required) - three independent conditioning pairs, one per region.
  • mask_1, mask_2, mask_3 (MASK, required) - the area each pair applies to.
  • mask_1_strength, mask_2_strength, mask_3_strength (default 1, range 010) - per-region weighting.
  • set_cond_area (default / mask bounds) - same choice as the two-region version: apply conditioning canvas-wide but mask-weighted (default), or restrict its area of effect to the mask's bounding rectangle (mask bounds).

Outputs: combined_positive and combined_negative - feed straight into your KSampler exactly where a single CLIP Text Encode's output would normally go.

Three regions is a genuinely different planning problem than two. With two masks you're usually splitting a canvas roughly in half; with three, you're deciding whether they tile side by side, nest (a subject in the foreground with two flanking background elements), or overlap at controlled strength. Sketch the rough mask layout before you start wiring text encode nodes - it's much cheaper to fix in a mask editor than after you've built three conditioning branches around the wrong split.

How to install it

Via ComfyUI Manager: search KJNodes for ComfyUI, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-KJNodes
pip install -r ComfyUI-KJNodes/requirements.txt

Then restart. No models, no extra dependencies.

Common issues & troubleshooting

Three prompts start bleeding into each other. With three masks in play instead of two, gaps and overlaps between them get harder to manage by eye. Make sure your masks together roughly cover the canvas - anywhere none of the three masks reach falls back on whatever your base prompt describes, which can look like an unintended fourth region if you're not accounting for it.

One subject dominates the composition unintentionally. Check mask_N_strength across all three - it's easy to leave one at a much higher relative weight than the others without noticing, especially if you copied settings over from a two-region setup and only added the third region's mask and conditioning.

Only need two subjects, not three. Drop down to plain ConditioningSetMaskAndCombine - this node isn't slower or worse with an unused slot, but there's no reason to route three region inputs through a graph that only needs two.

Need more than three. This pack goes up to ConditioningSetMaskAndCombine4 and ConditioningSetMaskAndCombine5 for larger scenes - same pattern, more slots.

CategoryKJNodes/masking/conditioning

Inputs (13)

NameTypeDefaultDescription
positive_1CONDITIONING
negative_1CONDITIONING
positive_2CONDITIONING
negative_2CONDITIONING
positive_3CONDITIONING
negative_3CONDITIONING
mask_1MASK
mask_2MASK
mask_3MASK
mask_1_strengthFLOAT1.000–10
mask_2_strengthFLOAT1.000–10
mask_3_strengthFLOAT1.000–10
set_cond_areaCOMBO2 options: default, mask bounds

Outputs (2)

NameTypeDescription
combined_positiveCONDITIONING
combined_negativeCONDITIONING