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

OC Character Outfit Block

Stitch outfit parts into one coordinated OC block

By Zhuozhuo-219·Created 3 months ago·Updated 2 months ago· 0
OC Character Outfit Block
  • base_style_part
  • upper_part
  • outer_part
  • lower_part
  • legwear_part
  • footwear_part
  • neckwear_part
  • handwear_part
  • waist_part
  • headwear_part
  • facewear_part
  • jewelry_part
  • decoration_part
  • palette
  • oc_block
  • prompt_preview
  • debug_text
separator,
dedupetrue

This is the middle-management node of ComfyUI-OC-Generator. The outfit part nodes - one per clothing slot, like upper, pants, footwear, jewelry - each produce a typed OC_PART fragment. OC Character Outfit Block is where those fragments get gathered into a single OC_BLOCK of category "Outfit," ready to feed OC Generator alongside your body, face, and hair blocks.

It exists for the same reason nobody writes a character sheet as one blob of text: you think of a character as a stack of decisions - style, then top, then bottoms, then the jewelry. This node keeps those decisions separate while still presenting the sampler with one tidy outfit phrase.

The slots

The node exposes 13 optional slot inputs, each taking one specific part type: base_style_part, upper_part, outer_part, lower_part, legwear_part, footwear_part, neckwear_part, handwear_part, waist_part, headwear_part, facewear_part, jewelry_part, and decoration_part. Leave a slot unconnected and it's simply skipped - an outfit built from just a style, a top, and boots works fine. The parts are assembled in a fixed slot order, not in the order you wire them, so your output stays predictable.

Two required controls on top:

  • separator - how slot fragments get joined, default ", ".
  • dedupe - on by default. When the same fragment shows up twice (you'll see this with overlapping catalogs), the duplicate is dropped.

The palette twist

There's also an optional palette input (OC_PALETTE), and it's the cleverest thing in the pack. If you connect an OC Palette Block, each part can consume a color role - primary, secondary, accent, neutral - and the outfit block prefixes the matching palette color onto that part's prompt, so a "red dress" becomes coordinated rather than accidental. Every part carries a color_role (default auto), and auto assigns a sensible default per slot: upper and outer are primary, lower is secondary, legwear and footwear are neutral, neckwear and jewelry are accent. Set color_role to none on a part and the palette leaves it alone. It's a small system, but it's the difference between an outfit that reads as designed and one that reads as random tags.

The outputs

Same trio as the rest of the pack:

  • oc_block - the composed Outfit block; wire it into OC Generator.
  • prompt_preview - the assembled outfit phrase, so you can eyeball it without tracing wires.
  • debug_text - a slot-by-slot summary showing mode, resolved color role, and applied color. When a part silently contributes nothing, this is where you find out why (spoiler: it's usually because the part node is still in unset mode - see below).

Installing it

One pack, one install:

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

Restart ComfyUI, or use ComfyUI Manager and search ComfyUI-OC-Generator. No PyPI dependencies, no model downloads - all data ships in-repo.

The trap to watch for

The #1 failure mode with this node is silent outfits. Every part node defaults to mode: unset, which emits nothing. You wire up a full wardrobe, hit run, and the outfit block reports "Outfit: no active parts" because every part is still unset. Set each part's mode to fixed (or randomize) or it won't contribute a single tag. Relatedly: Pants and Skirt both output the OC_PART_OUTFIT_LOWER type, so they fight over the same lower_part socket - pick one, or use a switch. This pack is new and quiet, so keep the debug output handy; it's the fastest path to understanding what your outfit is actually doing.

CategoryOC Generator/Character

Inputs (16)

NameTypeDefaultDescription
separatorSTRING, String used to join outfit slot prompts.
dedupeBOOLEANtrueRemove duplicated outfit fragments during composition.
base_style_partoptOC_PART_OUTFIT_STYLEOutfit style input.
upper_partoptOC_PART_OUTFIT_UPPERUpper clothing input such as tops and shirts.
outer_partoptOC_PART_OUTFIT_OUTEROuterwear input such as coats and jackets.
lower_partoptOC_PART_OUTFIT_LOWERLower clothing input such as pants or skirts.
legwear_partoptOC_PART_OUTFIT_LEGWEARLegwear input such as socks or stockings.
footwear_partoptOC_PART_OUTFIT_FOOTWEARFootwear input such as shoes or boots.
neckwear_partoptOC_PART_OUTFIT_NECKWEARNeckwear input such as scarves and collar accessories.
handwear_partoptOC_PART_OUTFIT_HANDWEARHandwear input such as gloves, wristwear, and arm decorations.
waist_partoptOC_PART_OUTFIT_WAISTWaistwear input such as belts and waist accessories.
headwear_partoptOC_PART_OUTFIT_HEADWEARHeadwear input such as hats or hair decorations.
facewear_partoptOC_PART_OUTFIT_FACEWEARFacewear input such as glasses or masks.
jewelry_partoptOC_PART_OUTFIT_JEWELRYJewelry input such as earrings and necklaces.
decoration_partoptOC_PART_OUTFIT_DECORATIONDecorative accessory input.
paletteoptOC_PALETTEOptional coordinated outfit palette. When connected, each part can consume a palette role such as primary or accent.

Outputs (3)

NameTypeDescription
oc_blockOC_BLOCKStructured Outfit block composed from connected outfit parts.
prompt_previewSTRINGThe final outfit prompt fragment assembled from slot inputs.
debug_textSTRINGReadable slot-by-slot summary for the composed outfit.