JB · Outfit Block
One node for outfit + colors, resolved straight to JSON — the JB one-shot block
- outfit_json
- outfit_string
- palette_summary
In the JB pipeline, an outfit used to be three nodes: Outfit Generator produces garments with color tags, Color Generator makes the palette, and a combiner merges them and substitutes the colors. JB · Outfit Block collapses all of that into a single node. Pick an outfit set, twist the sliders, and out the other side comes a fully resolved JSON outfit - colors already baked in as real color names, structured so it drops straight into a JB · Stitcher under your character's title.
It's the "one-shot combo" pattern the JB suite is built around, and it exists to kill the most annoying part of structured prompting: assembling a coherent outfit and keeping the colors consistent across every garment. With the block, "coherent" is a property of the pipeline, not a thing you hope for.
What you get
There are 446 outfit sets in the dropdown - business, casual, aerobic, athleisure, beach, and on down, many split female//male/ and by activity. The node reuses the exact same outfit_lists/ text-file data as the standalone FVM_OutfitGenerator, and the Edit List modal edits those source files directly from the node - same instant-apply behavior, no restart. You get the same garment toggles (enable_top, enable_bottom, enable_footwear, enable_headwear, enable_outerwear, enable_accessories, enable_bag), the formality and coverage sliders, print_probability and text_mode for prints/typography, and the overrides string for hand-fixing a single slot (bottom: exclude skips it entirely).
The color section is Color Generator folded in: num_colors (2–8), harmony_type, palette_style, vibrancy, contrast, warmth. Where the standalone outfit node emits #primary#-style tags waiting for a separate replace step, this block resolves them itself - the JSON comes out with actual color names already in place.
The outputs
outfit_json- the structured outfit, colors resolved. Feed this to a Stitcher'sinput_N.outfit_string- the same content as a flat string, for encoders that prefer a sentence.palette_summary- a human-readable rundown of the palette and what each role color was.
Because colors are baked in, the outfit block is deterministic per seed the way the generator is - same seed, same set, same sliders, same outfit and palette every run.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools
Zero extra dependencies. Restart ComfyUI; it lives under FVM Tools/JB.
When to use it vs. the standalone nodes
Use the block when you're building a JB character document and want one node per character slice - outfit, face, location - each producing JSON. Use the standalone FVM_OutfitGenerator when you want the tagged prompt flow (with Prompt Color Replace downstream) or when you need to mix a fixed palette across multiple characters, so every character shares the same wardrobe colors. The block gives each character its own palette; the standalone flow gives them all one. That's the whole decision, and it's worth making deliberately.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| outfit_set | COMBO | 395 options: business_female2, female/athleisure/general, female/athleisure/hot_pilates, female/athleisure/hybrid_athflow, female/athleisure/low_intensity_walk, female/athleisure/outdoor_trail, +389 | |
| seed | INT | 00–18446744073709550000 | — |
| style_preset | COMBO | general | 14 options: beach, casual_daywear, cyberpunk_neon, earthy_natural, evening_gala, festival, +8 |
| formality | FLOAT | 0.500–1 | — |
| coverage | FLOAT | 0.500–1 | — |
| enable_headwear | BOOLEAN | false | — |
| enable_top | BOOLEAN | true | — |
| enable_bottom | BOOLEAN | true | — |
| enable_footwear | BOOLEAN | true | — |
| enable_outerwear | BOOLEAN | false | — |
| enable_accessories | BOOLEAN | false | — |
| enable_bag | BOOLEAN | false | — |
| print_probability | FLOAT | 0.300–1 | Chance of a pattern per garment. 'solid color' entries are never written into the prompt — they say nothing. |
| text_mode | COMBO | off | Slogans printed on the garment. Krea 2 renders quoted text literally onto the clothing, so 'off' is the default; 'quoted' is for Ideogram-style text rendering. |
| color_mood | COMBO | everyday_muted | Picks the colour scheme with one setting instead of six sliders. auto: Keep the classic harmony engine and the six sliders. Unchanged behaviour for existing workflows. everyday_muted: What people actually wear: mostly neutrals with a few desaturated colours. Best default for casual sets. neutral_basics: White, grey, navy, beige, black only — plain basics, nothing that draws attention. one_accent: Neutral outfit plus exactly one saturated piece (the top). denim_casual: Denim bottoms and jacket with neutral tops and shoes. warm_earth: Cream, camel, rust, olive — warm and earthy. cool_muted: Grey, navy, slate, sage — cool and restrained. monochrome: One base colour in several shades. bold: Saturated and high contrast — designed, not everyday. pastel: Soft, light, low contrast. The six classic sliders (num_colors, harmony_type, palette_style, vibrancy, contrast, warmth) stay available as optional inputs and are used when the mood is 'auto' — or to override single values. |
| output_format | COMBO | loose_keys | natural: plain prose, no keys and no metadata — use this for Krea 2 / Qwen text encoders. loose_keys / pretty_json / compact_json: structured, for Ideogram 4 style JSON prompting. |
| overridesopt | STRING | Per-slot overrides plus palette colour forcing. One directive per line — use the Edit Overrides button for a guided editor. Slot lines (slots: headwear, top, outerwear, bottom, footwear, accessories, bag): top: silk blouse force garment (first word = fabric when two+ words) top: silk blouse | accent ...and force its colour role top: silk blouse | accent | floral print ...and force a decoration ('none' = plain) bag: exclude drop the slot even if enabled top: auto explicit default (same as omitting the line) Wildcards pick randomly: top: {silk|satin} blouse Palette line — force the colours behind the roles instead of the mood/harmony pick: palette: primary=navy blue, secondary=cream, accent=burnt orange Roles: primary, secondary, accent, neutral, metallic, tertiary, ambient_light, shadow_tone. Unlisted roles keep their generated colour. Lines starting with # are comments. | |
| num_colorsopt | INT | 52–8 | How many colours the outfit draws from. |
| harmony_typeopt | COMBO | auto | Harmony engine only (color_mood = auto). |
| palette_styleopt | COMBO | general | Harmony engine only (color_mood = auto). |
| vibrancyopt | FLOAT | 0.500–1 | Harmony engine only (color_mood = auto). |
| contrastopt | FLOAT | 0.500–1 | Harmony engine only (color_mood = auto). |
| warmthopt | FLOAT | 0.500–1 | Warm/cool bias. Also tints the ambient light and shadow phrases in every mood. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| outfit_json | STRING | — |
| outfit_string | STRING | — |
| palette_summary | STRING | — |