Nodes/ComfyUI-OC-Generator/OC Character Body Block
ComfyUI Node

OC Character Body Block

The block that says who your OC actually is

By Zhuozhuo-219·Created 3 months ago·Updated 2 months ago· 0
OC Character Body Block
    • oc_block
    • prompt_preview
    • debug_text
    group__all_groups__
    modefixed
    option对象 | 1男孩 -> 1boy
    enabledtrue
    seed0
    step1

    The name undersells it. OC Character Body Block isn't just about anatomy - it's the identity block. Its catalog covers the "who is this person" questions before you ever get to hair and clothes: subject (1boy, 1girl, multi-character counts), identity and role tags like ace_queen, age, skin, body build, plus the physical detail subcategories - shoulders, chest, waist, stomach, legs, feet, and wings. Roughly 275 options across 13 subcategories, all sourced from the pack's Danbooru-style tag dataset.

    It's one of the block nodes that make up the "OC" side of this pack: you pick a fragment from a dropdown, the block resolves it into a real prompt tag, and OC Generator eventually sorts it into the Body position of the final string. Since earlier keywords carry more weight on the SDXL-lineage models this pack targets, the body block tends to land right after theme and before face and hair - near the front, where identity matters.

    The controls that matter

    Every block node in the pack shares the same three-part selection system, and this one is the biggest demo of how it behaves:

    • group - narrows selection to one subcategory (对象 / identity / age / wings, and so on). Default is __all_groups__, meaning the whole catalog.
    • mode - fixed, randomize, increment, or decrement. fixed keeps your pick; randomize samples the pool; the step modes cycle through it (useful for batch variations with the step input).
    • option - the big static dropdown, all 275 entries. Entries read like 对象 | 1男孩 -> 1boy, i.e. subcategory | Chinese label -> English tag.

    That option dropdown is static - it does not shrink when you change group. The author is upfront about this in the code comments and the tooltips; there's no frontend magic to make the list filter live. What happens at execution is: if your chosen option isn't in the current group, the block silently falls back to the first valid item in that group and flags it in debug_text. So when randomize spits out something you didn't pick, the first suspect is a group/option mismatch.

    Under the hood, randomize isn't really random. It hashes the block key, group, option label, and your seed into a stable index, so the same seed always gives the same pick - reproducible variations, which is exactly what you want when you're generating an OC concept sheet across different seeds. There's an enabled boolean too, so you can leave a body block in the graph and switch it off without deleting it.

    The outputs

    All three matter in this pack's rhythm:

    • oc_block - the structured block; wire it into OC Generator.
    • prompt_preview - the resolved fragment (the 1boy, the ace_queen), so you can read your character without running anything.
    • debug_text - execution details: which group, which index in the pool, whether a fallback happened. This is your debugging lifeline.

    Installing it

    Same pack, same install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Zhuozhuo-219/ComfyUI-OC-Generator
    

    Restart ComfyUI, or use ComfyUI Manager (search ComfyUI-OC-Generator). No extra Python deps, no models - the tag catalog rides along inside the repo.

    A note on expectations

    This is a young, low-traffic pack; you won't find a mountain of community write-ups about it, and the catalog is a curated cut of Danbooru-style tags rather than a complete dump. The body block is one of the more capable nodes in the set, but it's still a dropdown over a fixed dataset - if your OC needs something the catalog doesn't cover, type it into OC Generator's prefix_prompt and move on.

    CategoryOC Generator/Blocks

    Inputs (6)

    NameTypeDefaultDescription
    groupCOMBO__all_groups__Limit selection to one subgroup. The option dropdown itself is static and will not visually shrink when group changes.
    modeCOMBOfixedfixed keeps the chosen option when valid for the current group. randomize / increment / decrement operate only within the selected group pool.
    optionCOMBO对象 | 1男孩 -> 1boyStatic dropdown for the whole catalog. If the chosen option does not belong to the current group, execution falls back to the first valid item in that group.
    enabledoptBOOLEANtrueDisable this block without deleting it from the workflow.
    seedoptINT00–4294967295Seed used by randomize mode to get reproducible results inside the current group pool.
    stepoptINT11–1024Step size for increment / decrement mode inside the current group pool.

    Outputs (3)

    NameTypeDescription
    oc_blockOC_BLOCKStructured OC block data for downstream aggregation in OC Generator.
    prompt_previewSTRINGThe prompt fragment resolved by this dimension node.
    debug_textSTRINGExecution details, including group filtering and selection behavior.