+ Make Region (Illustrious)
Mask, prompt, weight, and a time window, one region at a time
- mask
- region
This is where the actual craft of regional prompting happens in this pack. IllustriousEmptyRegions just starts a list, and IllustriousRegionalConditioning applies the finished list - this node is the one you'll actually be configuring per region, and it's got the field that most implementations of this technique skip: a time window.
Why start/end matters more than it looks like it should
The standard failure mode for masked regional prompting is regions that look pasted together, with visible seams where one ends and another begins. The fix the wider community has converged on isn't just softer masks - it's ending hard masking early, once the composition has settled, and letting the base conditioning blend back in for the rest of the run. start and end (both 0–1, default 0 and 1) are exactly that control, per region. A region set to start=0, end=0.6 shapes the image while structure is being decided and then steps back, letting the base prompt and other regions carry the remaining steps. A region set to start=0.8, end=1.0 only ever touches the last fifth of sampling - fine for fine detail, useless for anything structural, since by that point in most samplers the composition is already locked in.
weight (0–4, default 1) controls how strongly the region's masked prompt competes against the base conditioning and other regions - note the range goes well past 1, so a small but important region (a face tucked in the corner of a wide shot, say) can be told to dominate its area rather than getting diluted by the base prompt bleeding in around its edges.
mask follows the pack-wide convention: white is the area the region's prompt applies to. It can come from a hand-painted mask, a segmentation node, or anything else in your graph that outputs a MASK.
The inputs and outputs that matter
mask,prompt,weight,start,end- all required. There's no optional section on this node; every region needs all five defined.promptis a plain multiline string, encoded the normal way downstream - write it like any other positive prompt segment.
Output is a single region of type ILLUSTRIOUS_REGION - this is the singular type, meant to be chained into a growing ILLUSTRIOUS_REGIONS list via Append Region, starting from IllustriousEmptyRegions. It doesn't plug directly into IllustriousRegionalConditioning on its own.
Installing it
ComfyUI Manager: search "EasyIllustrious," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/regiellis/ComfyUI-EasyIllustrious
pip install -r ComfyUI-EasyIllustrious/requirements.txt
Nothing to download beyond the pack itself - masks come from elsewhere in your graph.
Common issues
A region isn't affecting the output at all. Check start/end before anything else - a narrow late window is the single most common reason a region seems to do nothing, and it's easy to leave those defaults untouched while assuming they're "always on."
Hard seams between regions. That's a downstream fix, not this node's job - mask_blur and mask_dilate live on IllustriousRegionalConditioning and apply to every region at once, so raise those rather than looking for feathering controls here.
One region overwhelming the whole image. weight goes up to 4, well past what most regions need. If a small region is dominating more than its mask area, bring weight back toward 1 before assuming the mask itself is wrong.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| mask | MASK | Region mask (white = apply). | |
| prompt | STRING | — | |
| weight | FLOAT | 1.000–4 | — |
| start | FLOAT | 0.000–1 | — |
| end | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| region | ILLUSTRIOUS_REGION | — |