π BV Regional Anima Conditioning
One attention patch, nine sliders
- model
- clip
- regional
- lora_registry
- lora_bindings
- patched_model
- positive
- negative
Anima is the anime model that finally beats Illustrious at prompt comprehension - a 2B DiT on Cosmos-Predict2 with a Qwen3 text encoder that just gets natural language. But even a model that understands you can struggle to keep two characters in the right halves of a frame, and that's the gap this node fills. BV Regional Anima Conditioning compiles your BV regional document and applies the pack's built-in Anima attention patch, producing sampler-ready conditioning. It's the packed-in answer to Anima's one big weakness: layout control.
How it works
The patch is derived from Sen-sou's ComfyUI-Anima-Regional-Conditioning (MIT-licensed, attributed in the pack's third-party notices) - the community's standard regional-attention approach for Anima. The node compiles your document's regions, then applies the patch to the model so regional text contexts are masked through the model's own attention. Outputs are patched_model, positive, and negative, ready for a standard KSampler.
Where this node differs from every other attention backend in the pack is the sheer number of controls. This is the one with real tuning depth, and it's worth understanding before you touch them:
base_mode(defaultdisabled) - how the uncovered-background context behaves: off, limited to uncovered pixels (uncovered_only), or applied globally.base_strength(0.2),base_ratio(0.1) - how strongly that base context is weighted.cross_mask_strength(1.0) andself_mask_strength(0.2) - how hard the patch applies to cross-attention vs. self-attention. The asymmetric defaults are deliberate: regional routing lives mostly in cross-attention.cross_inject_every_n_blocksandself_inject_every_n_blocks(both 1) - how often the mask is injected across the block stack; every block by default.start_percent(0) /end_percent(0.35) - the sampling interval where the patch is active. Note the default end is 0.35, tighter than the 0.5 used by the other attention backends.
The short version for beginners: leave almost everything alone, start with cross_mask_strength, and use end_percent to decide how long routing stays on. The defaults are the author's tested values, and the pack's Anima examples run on them.
The one caveat baked into the model
Anima's ControlNet/LLLite ecosystem is still thin - the KB's Anima guide calls the LLLite line "moving, promising, not yet load-bearing." So the regional attention patch is doing heavier lifting here than it would on a model with mature ControlNet. The pack's own docs repeat the standard caveat: regional conditioning guides composition, it doesn't enforce it. On Anima specifically, the strong text encoder makes prompt quality matter even more - clean per-region prompts beat cranking the sliders.
Install
Search BV Node Pack in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/BlackVortexAI/bv_nodepack.git
Restart, hard-refresh with Ctrl + F5. No extra pip deps. If the node errors at load with an ImportError about its backend, the fix is updating ComfyUI - the patch hooks into newer model-patcher internals.
The honest take
If you run Anima and want regional layout without dragging in the external Sen-sou node pack, this is the one - it's the built-in, no-extra-download version. The knob count looks intimidating, but it's mostly "set and forget." The trap is fiddling with self_mask_strength or block injection before you've touched the cross-attention strength that actually does the work. Start simple, then go deep.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| clip | CLIP | β | |
| regional | BV_REGIONAL | β | |
| base_mode | COMBO | disabled | 3 options: disabled, uncovered_only, global |
| base_strength | FLOAT | 0.200β10 | β |
| start_percent | FLOAT | 0.0000β1 | β |
| end_percent | FLOAT | 0.3500β1 | β |
| cross_mask_strength | FLOAT | 1.000β1 | β |
| self_mask_strength | FLOAT | 0.000β1 | β |
| base_ratio | FLOAT | 0.100β1 | β |
| cross_inject_every_n_blocks | INT | 11β100 | β |
| self_inject_every_n_blocks | INT | 11β100 | β |
| regional_lora_mode | COMBO | multipass_legacy | Legacy preserves published Anima results. Single-pass is an experimental token-gated model-LoRA path. |
| lora_registryopt | BV_LORA_STACK_REGISTRY | β | |
| lora_bindingsopt | BV_REGIONAL_LORA_BINDINGS | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| patched_model | MODEL | β |
| positive | CONDITIONING | β |
| negative | CONDITIONING | β |