Nougan Regional Character LoRA π₯
Two Krea 2 characters in one image without the blend β this is how
- model
- clip
- MODEL
- CONDITIONING
- NEGATIVE
You know the drill: you stack character A's LoRA on character B's LoRA, and the model hands you a person who is somehow neither of them. Blended identities are the classic multi-character failure - the KB calls the "two specific characters, same image" problem largely unsolved without spatial scaffolding. This node is the scaffolding. Krea2RegionalCharacterLoRA is the Krea 2/Flux 2-flavored name for Nougan's regional character trick: two character LoRAs, each locked to its own spatial region, in one diffusion pass, with no compositing and no inpainting.
It's part of Winnougan's Nougan_Nodes suite - the same pack that ships the Diffusers Loader and the Krea 2 uncensor loader, so it's built to sit right between them and the sampler. The author is a one-person r/StableDiffusion poster who grew a personal node collection into a public suite, and this is the most technically interesting node in it.
How it works
A normal LoRA load merges W' = W + ΞA + ΞB into every weight, so both identities reach every pixel. This node never merges. It loads each LoRA's low-rank deltas, matches them to the live model's Linear layers by normalised key names, and registers forward hooks that add the delta gated by a region mask at inference time:
tokens in A: out += mask_A Γ ΞA
tokens in B: out += mask_B Γ ΞB
text tokens: mask = 0 β prompt conditioning untouched
The base model weights are never modified, and the hooks are removed after each forward call. The masks are built on the token grid (each token covers a 16Γ16 pixel patch at Krea 2's patchify factor), not on pixels - that's why placement stays crisp no matter what resolution you generate at.
The inputs that matter
modelandclip- the loaded model and its text encoder, straight from your loader.lora_a/lora_b- the two character LoRAs, picked frommodels/loras.strength_a/strength_b- per-LoRA strength, defaults at 1.0 and range from β4 to 4. Negative strengths are legitimate here; they invert the delta.feather- softness of the seam between regions (0β0.3, default 0.06). Too high and the characters bleed into each other again; 0 gives a hard visible line.regions- a JSON string the on-node visual editor writes for you. You draw two boxes (one per character); you do not hand-edit this.
The outputs are MODEL (the patched model - this is what feeds your sampler), plus CONDITIONING and NEGATIVE for the Krea 2 pipeline.
Installing
It's a suite install, not a solo node:
cd ComfyUI/custom_nodes
git clone https://github.com/Winnougan/Nougan_Nodes
# restart ComfyUI
Or just search Nougan in ComfyUI Manager. Zero pip dependencies - the pack's pyproject.toml is empty on deps, and each family loads in its own try/except so one broken file can't take out the rest. You need a ComfyUI version that runs Krea 2/Flux 2 at all, which you already have if you can load the base.
Where people get burned
The console printout is your friend here. Watch for matched N layers - if you see !! 0 layers matched, the LoRA's keys don't normalise-match your model, which usually means the LoRA was trained for a different architecture. Krea 2 has a quirk worth knowing: some LoRAs target the txtfusion conditioning pathway rather than the image transformer blocks, and those get regional masking too but land on the conditioning rather than the image tokens - less spatially precise. And if characters look subtly wrong rather than blended, that's bf16 delta noise; there's no precision toggle in this alias, so lean on the feather and strength instead. Small files, two characters, no blend - that's the whole sell.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| clip | CLIP | β | |
| lora_a | COMBO | 0 options: | |
| strength_a | FLOAT | 1.00-4β4 | β |
| lora_b | COMBO | 0 options: | |
| strength_b | FLOAT | 1.00-4β4 | β |
| feather | FLOAT | 0.060β0.3 | β |
| regions | STRING | {} | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | β |
| CONDITIONING | CONDITIONING | β |
| NEGATIVE | CONDITIONING | β |