ConditioningSetMaskAndCombine3
The same regional-prompting node, three regions deep
- positive_1
- negative_1
- positive_2
- negative_2
- positive_3
- negative_3
- mask_1
- mask_2
- mask_3
- combined_positive
- combined_negative
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(default1, range0–10) - 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.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| positive_1 | CONDITIONING | — | |
| negative_1 | CONDITIONING | — | |
| positive_2 | CONDITIONING | — | |
| negative_2 | CONDITIONING | — | |
| positive_3 | CONDITIONING | — | |
| negative_3 | CONDITIONING | — | |
| mask_1 | MASK | — | |
| mask_2 | MASK | — | |
| mask_3 | MASK | — | |
| mask_1_strength | FLOAT | 1.000–10 | — |
| mask_2_strength | FLOAT | 1.000–10 | — |
| mask_3_strength | FLOAT | 1.000–10 | — |
| set_cond_area | COMBO | 2 options: default, mask bounds |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| combined_positive | CONDITIONING | — |
| combined_negative | CONDITIONING | — |