Nodes/comfyui-kpu-utils/KPU Wailustrious Multi-Character Scene
ComfyUI Node

KPU Wailustrious Multi-Character Scene

The Node That Tries to Stop Two Characters From Becoming One Four-Armed Blob

By kpucha·Created 7 months ago·Updated 7 months ago· 0
KPU Wailustrious Multi-Character Scene
    • positive_prompt
    • negative_prompt
    character_1_descblack hair, long hair, straight hair, blue eyes, slim, school uniform, standing, looking at viewer, smiling
    character_1_typegirl
    locationbedroom
    lightingsoft lighting
    time_of_daydaytime
    camera_angleeye level
    art_styleanime
    quality_tagshigh quality, masterpiece, detailed
    character_2_desc
    character_2_type
    character_3_desc
    character_3_type
    character_4_desc
    character_4_type
    character_5_desc
    character_5_type
    composition
    scene_description
    negative_promptugly, deformed, blurry, lowres, watermark, text, extra fingers

    Here's the problem this node exists for, and it's a real one: anime SDXL checkpoints - especially WAI-illustrious, the most-loaded anime model around - are notoriously bad at multi-character scenes. Two characters in one prompt and the model starts loaning out body parts. The community workaround is regional prompting (Forge Couple, Regional Prompter, that family) plus a naming convention: prefix each character's tags with girl1_, boy1_, and so on, so the model can tell whose hair is whose. KPU Wailustrious Multi-Character Scene automates the prefix convention. It won't fix everything, but it's the single most interesting node in the comfyui-kpu-utils pack, because it encodes a real technique instead of just concatenating strings.

    How it works

    You feed it up to five character descriptions - the natural source is the pack's own WailustriousCharacterBuilder, whose character_description and character_type outputs plug straight into the character_N_desc / character_N_type slots. Then it does three things:

    1. Counts. It tallies girls and boys and emits the Danbooru count token at the front - 1girl, 2girls, 1boy, 2girls, whatever the roster adds up to. That count token is critical: these models were trained on Danbooru captions where the headcount comes first.
    2. Prefixes. Every feature of every character gets stamped with girl1_, girl2_, boy1_, etc. blue eyes from character 2 becomes girl2_blue eyes. This is the attribute-binding trick that keeps character A's dress from bleeding onto character B.
    3. Assembles the scene. Camera angle (15 options, from eye level to bird's eye view), location, lighting, time_of_day, optional composition and scene_description, art_style (anime/manga/illustration/pixelart) and quality_tags all get appended in that order. Out come positive_prompt and negative_prompt strings, ready for CLIP Text Encode.

    The inputs that matter

    • character_1_desc + character_1_type - required, and that's deliberate: you can't build a zero-character scene. Fill this from the Character Builder.
    • character_2 through character_5 desc/type - optional, and each desc slot defaults empty, so adding a character is as simple as filling the next pair.
    • camera_angle - the one setting that does real compositional work here. Eye level is the default and gets omitted from the prompt; anything else is emitted as e.g. high angle view.
    • negative_prompt - defaults to the usual ugly, deformed, blurry, lowres, watermark, text, extra fingers. That default is fine and short; don't stack much more on top, WAI explicitly warns long negatives degrade quality.

    Where it falls short

    Two honest caveats, both straight from the source code.

    Only girls and boys are counted. The character_type enums include elf, demon, maid, magical girl, nun, and witch - but the counting loop only checks for girl and boy. A character whose type is anything else is silently dropped from the prompt, description included. So a two-elf scene won't produce a count token and won't include either elf. If you're doing non-human casts, paste their descriptions into a character_1_desc slot with type girl/boy (the description text is what matters) or assemble the scene by hand.

    Prefixes are not regional conditioning. Writing girl1_red hair is a nudge the model can interpret, not a hard mask like Forge Couple gives you. For simple two-character scenes it genuinely helps; for two characters interacting, overlapping, or touching, the community consensus is that you still want actual regional prompting on top of this.

    Installing

    Pack is comfyui-kpu-utils by kpucha - young, hobby-scale, Spanish-authored, essentially zero community footprint, so glance at the repo before installing (it's benign: text assembly). Manager → search "comfyui-kpu-utils", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/kpucha/comfyui-kpu-utils
    

    Restart, look under KPU Utils. The comfyui>=0.9.0 line in requirements.txt isn't a real PyPI package - ignore the install error it causes; nothing else needs installing and there are no model downloads.

    Troubleshooting

    • A character is missing from the output → check its character_type. Non-girl/boy types are dropped by design (for now).
    • Attributes still cross over between characters → you're hitting WAI's known multi-char weakness; add regional prompting rather than more tags.
    • Weird counts → the count token comes from desc/type pairs where both are filled. An empty desc with a type selected doesn't count.

    Remember the family settings when you sample: CLIP skip 2, CFG 5–7, Euler a, no external VAE (it's baked in). And if you're chasing a genuinely great two-person scene, treat this node as the first pass - the input to a regional-prompting setup, not the end of the road.

    CategoryKPU Utils

    Inputs (19)

    NameTypeDefaultDescription
    character_1_descSTRINGblack hair, long hair, straight hair, blue eyes, slim, school uniform, standing, looking at viewer, smiling
    character_1_typeCOMBOgirl8 options: girl, boy, elf, demon, maid, magical girl, +2
    locationSTRINGbedroom
    lightingSTRINGsoft lighting
    time_of_daySTRINGdaytime
    camera_angleCOMBOeye level15 options: eye level, dutch angle, low angle, high angle, overhead, POV, +9
    art_styleCOMBOanime4 options: anime, manga, illustration, pixelart
    quality_tagsSTRINGhigh quality, masterpiece, detailed
    character_2_descoptSTRING
    character_2_typeoptCOMBO9 options: , girl, boy, elf, demon, maid, +3
    character_3_descoptSTRING
    character_3_typeoptCOMBO9 options: , girl, boy, elf, demon, maid, +3
    character_4_descoptSTRING
    character_4_typeoptCOMBO9 options: , girl, boy, elf, demon, maid, +3
    character_5_descoptSTRING
    character_5_typeoptCOMBO9 options: , girl, boy, elf, demon, maid, +3
    compositionoptSTRING
    scene_descriptionoptSTRING
    negative_promptoptSTRINGugly, deformed, blurry, lowres, watermark, text, extra fingers

    Outputs (2)

    NameTypeDescription
    positive_promptSTRING
    negative_promptSTRING