Nodes/comfyui_bmad_nodes/Conditioning Grid (cond)
ComfyUI Node Runs on cloud

Conditioning Grid (cond)

Regional prompting as a grid, without the spaghetti

By bmad4ever·Created 3 years ago·Updated 9 months ago· 70
Conditioning Grid (cond)
  • base
  • CONDITIONING
columns3
rows3
width256
height256
strength3.00

You know the core-area-conditioning dance: a ConditioningSetArea per region, each with its own width/height/x/y, all fed into a ConditioningCombine chain that grows a new wire every time you add a region. It works, and it's miserable to edit. Conditioning Grid (cond) collapses that into one node: you define a grid of cells, drop a conditioning into each, and it stacks them into a single conditioning where each prompt only steers its own cell.

This is the multi-character / multi-scene workhorse: "person A on the left, person B on the right, both in a cafe" stops being four overlapping area nodes and becomes a 2×1 grid.

How it works

Under the hood it does exactly what you'd do by hand - it just automates it. For each cell, it calls the core ConditioningSetArea with the cell's width×height at position (col*width, row*height), then folds every result into ConditioningCombine along with the base conditioning. You get one CONDITIONING output that's ready for your KSampler.

Inputs that matter:

  • columns / rows - grid dimensions (1–8 each, default 3×3).
  • width / height - the pixel size of each cell (16–2048, default 256).
  • strength - conditioning strength applied to every cell. The default of 3 is on the aggressive side; if cells bleed into each other, dial it down.
  • base - a CONDITIONING that covers everything outside and between the cells. The author's tip: an empty-string CLIPTextEncode for a clean base, or put shared elements in here (and lower strength) if you want common ground across cells.
  • The cell inputs - named r1_c1, r1_c2, ... r{rows}_c{columns}. These don't exist until you right-click → "update inputs", the pack's ❔ convention. Each takes a CONDITIONING (wire from a CLIPTextEncode or CLIPEncodeMultiple).

The trap: forgot to update inputs

Same gotcha as every multi-input node in this pack: set columns/rows, then right-click and hit "update inputs" to generate the matching cell sockets. Change the grid size and re-run it. If you see a r1_c1 input missing, that's why. You can leave a cell unconnected in some ComfyUI builds, but the intended flow is to feed every cell.

strength is per-cell but shared across all of them, so you can't give the left cell 1.0 and the right cell 0.7 with this node - that's a limitation to know before you commit. If you need per-cell strengths, hand-build with the core nodes.

Install

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

or install "comfyui_bmad_nodes" via ComfyUI Manager and restart. It's pure core-API plumbing - no models, no extra downloads. If you're building grid-based regional prompts more than once, this saves you a genuinely silly amount of wiring.

CategoryBmad/conditioning

Inputs (6)

NameTypeDefaultDescription
columnsINT31–8
rowsINT31–8
widthINT25616–2048
heightINT25616–2048
strengthFLOAT3.00
baseCONDITIONING

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING