Anima Regional Canvas
Stop hand-drawing Anima's regional mask in GIMP — paint it inside ComfyUI instead
- model
- clip
- IMAGE
- MODEL
- POSITIVE
- NEGATIVE
- LATENT
- METADATA
- MASK_PREVIEW
Anima's regional ControlNet genuinely works - the community's verdict on Sen-sou's LLLite regional model is "really adheres to the masks quite accurately for such a small model." But here's the thing nobody warns you about before you try it: that model doesn't take a prompt. It takes a color-coded image, where each color means "this area is governed by that color's prompt." Which means before this node existed, you were drawing a red/blue/yellow/green/magenta PNG in an external paint program, saving it, loading it into ComfyUI, and praying it stayed in sync with your workflow.
AnimaRegionalCanvas is the "stop doing that" node. Paint the regions directly on a canvas inside ComfyUI, type a prompt per color, and it hands you both the color mask the ControlNet wants and the per-region conditioning the sampler wants. No external editor, no exported PNGs, no manual resizing.
What it's for
Anima (CircleStone's 2B anime model on Cosmos-Predict2) is the first anime base in ages that handles two characters in plain language without them becoming a single blended blob. But hard placement - girl on the left with red hair, girl on the right with blue - is still exactly the job regional prompting exists for, and the 2026 Anima flavor of that is Sen-sou's regional ControlNet. This node is the paint studio for that model. It's niche, it's single-purpose, and for that one job it's genuinely the all-in-one: even the author of the regional ControlNet model points people at it as the turnkey option.
How it works
Paint, prompt, generate. Mechanically, it's simpler than it looks:
- The painted canvas becomes the
IMAGEoutput, which feedsApply Anima ControlNet-LLLite's image input. - Each color prompt that isn't empty is encoded as standard ComfyUI masked conditioning - the same mechanism core ComfyUI uses - with the mask strength set by
region_strength. - An empty latent at canvas size comes out the
LATENToutput, ready for the KSampler.
The model just passes through untouched. It's all masks and conditioning; the node's own source uses only basic tensor ops and imports nothing external.
The inputs that matter
You set most of these once. The ones worth knowing:
width/height- 1024×1024 default. Type a new value and hit Enter (or click away) to resize; it normalizes down to multiples of 8 to match the latent.brush_size- default 92. Windows:Alt + right-dragto resize live, drag up/down to change opacity. Mac:Control + Option + left-drag.region_strength- 0.95 default. Mask strength on each region's conditioning; nudge it down if a region over-adheres.- The prompts:
quality_prompt(quality/style tags, defaults tomasterpiece, absurdres, score_7, anime style),scene_prompt(count, characters, background, situation), one per color (red_prompt…magenta_prompt), andnegative_prompt. regional_enabled- flip this off and the node degrades to plain full-canvas conditioning, which is handy for an A/B sanity check.
Unpainted white areas use the quality+scene conditioning, so you can leave unused colors empty.
Wiring it up
The standard connection is short and boring, which is the point:
AnimaRegionalCanvas IMAGE -> Apply Anima ControlNet-LLLite image
Apply Anima ControlNet-LLLite MODEL -> KSampler model
AnimaRegionalCanvas POSITIVE -> KSampler positive
AnimaRegionalCanvas NEGATIVE -> KSampler negative
AnimaRegionalCanvas LATENT -> KSampler latent_image
KSampler LATENT -> VAE Decode -> Save Image
MODEL on the canvas node is just a passthrough so the chain stays tidy. MASK_PREVIEW is a preview-only overlay you can blend onto the output via core Blend Images if you want to eyeball where regions landed. METADATA carries the prompt JSON for Save WEBP Meta.
Install
From ComfyUI Manager, search "anima regional" and hit install. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ukr8b3g-cmyk/Anima_Regional_Canvas.git
Restart ComfyUI. That's the whole install - the pack has zero pip dependencies (its pyproject declares an empty dependency list; it only uses numpy/torch/Pillow, which ComfyUI already ships). What it doesn't bundle, and you must install separately, is the stack it feeds: kohya-ss/ComfyUI-Anima-LLLite, the Anima base model from circlestone-labs, and the anima-lllite-regional-exp-v3.safetensors regional model from Sen-sou/Anima-LLLite-Regional-Controlnet.
Issues worth knowing
Two real ones. First, the canvas is stored as a data URL inside the node, and an early bug could wipe your painting when you switched ComfyUI tabs or rebuilt the workflow - that was fixed, and the canvas now survives. Second, and this trips up more people: if your regions come out weak or colors bleed, that's not the node, that's the model. The regional ControlNet was trained on a tiny experimental dataset, so adherence is capped by it. Keep region_strength up, keep your Anima canvas reasonably large (Anima wants resolution), and consider stopping the ControlNet early (a 0.45 end-percent is the model author's own recommendation) once composition has formed.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| width | INT | 102416–16384 | — |
| height | INT | 102416–16384 | — |
| batch_size | INT | 11–4096 | — |
| brush_size | INT | 921–512 | — |
| region_strength | FLOAT | 0.950–10 | — |
| quality_prompt | STRING | masterpiece, absurdres, score_7, anime style | — |
| scene_prompt | STRING | — | |
| red_prompt | STRING | — | |
| blue_prompt | STRING | — | |
| yellow_prompt | STRING | — | |
| green_prompt | STRING | — | |
| magenta_prompt | STRING | — | |
| negative_prompt | STRING | worst quality, low quality, blurry, bad anatomy | — |
| canvas_data | STRING | — | |
| regional_enabled | BOOLEAN | true | — |
| quality_prompt_inopt | STRING | — | |
| scene_prompt_inopt | STRING | — | |
| red_prompt_inopt | STRING | — | |
| blue_prompt_inopt | STRING | — | |
| yellow_prompt_inopt | STRING | — | |
| green_prompt_inopt | STRING | — | |
| magenta_prompt_inopt | STRING | — | |
| negative_prompt_inopt | STRING | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MODEL | MODEL | — |
| POSITIVE | CONDITIONING | — |
| NEGATIVE | CONDITIONING | — |
| LATENT | LATENT | — |
| METADATA | STRING | — |
| MASK_PREVIEW | IMAGE | — |