Outfit Generator
Seed-controlled outfit prompts with editable garment lists — the wardrobe node
- outfit_prompt
- outfit_details
- outfit_info
Describing a coherent outfit in a prompt is more finicky than it sounds - the model hears "red silk blouse, leather skirt, heels" and quietly decides which parts to actually render. Outfit Generator takes that guesswork out of your hands: it assembles an outfit piece by piece from a curated garment database and emits a properly ordered description, seeded so the same seed gives the same outfit every time. It's the piece of the FVMtools color/fashion pipeline that feeds Prompt Color Replace - it writes the garments with #color# placeholders, and Prompt Color Replace fills in the actual palette colors afterward.
How it works
The outfit "database" is not a database - it's a folder of plain-text files. Each outfit set lives in outfit_lists/<set>/ with up to ten .txt files (top, bottom, footwear, headwear, outerwear, accessories, bag, fabrics, plus optional prints and texts). Each line in a garment file follows a format like:
blouse | 0.65 | 0.3-0.7 | silk,chiffon,cotton,satin,lace
garment name, selection probability, a formality range, and candidate fabrics. The node rolls for each garment, filters by your formality slider (a blouse eligible for 0.3–0.7 only appears when your formality sits in that range), picks a fabric, and optionally adds a print or text based on print_probability.
The bundled set list is big - the dropdown alone exposes a few hundred entries, spanning business, casual, evening, aerobic, beach, streetwear, sheer/layered, lingerie, and more, organized into female//male/ and activity subfolders - and it's dynamically scanned from the folder. The killer feature is the Edit List button: it opens the source files in the browser, you edit them, and changes take effect on the next Queue run. No restart, no reinstall. You can drop a whole new custom set into outfit_lists/ and it appears in the dropdown instantly.
The inputs that matter
outfit_set- which collection to draw from.general_femaleis the default; the dropdown lists everything inoutfit_lists/.seed- same seed + same settings = same outfit. Change it for variety.formalityandcoverage- the two sliders that shape the result. Formality filters garments by their formality range (0 = casual, 1.0 = tuxedo). Coverage decides how many optional slots (headwear, outerwear, accessories, bag) get activated - top/bottom/footwear are always on when enabled.print_probability- chance each garment gets a print/pattern/text (0.3 default).text_mode- how text on clothing appears:quotedwrites exact text like"REBEL" text in gothic font(best for text-aware models like Z-Image Turbo and Flux2),descriptivewrites a generic "bold text graphic" (safe for SD/SDXL which can't render text),offskips text.
Three outputs: outfit_prompt (the tag-filled description for Prompt Color Replace), outfit_details (a structured breakdown of what was picked), and outfit_info (full generation metadata). There's also an override_string optional input - one line per slot, top: silk blouse | #primary# bypasses generation entirely for that slot, which is the precise way to fix one garment without regenerating.
Installing
Same pack, zero extra dependencies:
cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools
Restart ComfyUI. No models needed - this corner of the pack is pure text generation.
Where people get confused
Two things. First, formality must match your chosen set - a yoga set whose garments live in the 0.0–0.2 range will produce almost nothing at formality 0.5. The tooltip says it plainly: match the slider to the set. Second, remember the tags are placeholders - feeding the raw outfit_prompt straight into CLIPTextEncode gives you #primary# as literal text in your prompt, which the model will render as some kind of weird token. Always run it through Prompt Color Replace (or set text_mode appropriately and wire in your own colors) before it hits the encoder.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| outfit_set | COMBO | Outfit theme/collection to generate from. Each set is a folder in outfit_lists/ with .txt files defining garments per slot (top, bottom, footwear, etc.). Use the Edit List button below to customize items. | |
| seed | INT | 00–4294967295 | Random seed for deterministic outfit generation. Same seed + same settings = same outfit every time. Change seed to get a different outfit combination. |
| style_preset | COMBO | Style profile that influences garment selection. Each preset defines a formality range, preferred fabric families, and slot probabilities. E.g. 'formal' favors silk/wool and always includes outerwear, 'casual' prefers cotton/jersey. | |
| formality | FLOAT | 0.500–1 | Casual-to-formal spectrum for garment filtering. Each garment in the list files has a formality range (e.g. 0.0-0.3). Only garments whose range contains this value are eligible. 0.0 = very casual (tank tops, shorts, sandals) 0.3 = relaxed (jeans, sneakers) 0.5 = smart casual (default) 0.7 = semi-formal (blazers, dress shoes) 1.0 = very formal (gowns, tuxedos) Tip: Match to your outfit set. Yoga sets use 0.0-0.2, business sets work best at 0.5-0.8. |
| coverage | FLOAT | 0.500–1 | Controls how many optional slots get activated. Affects headwear, outerwear, accessories, bags — slots that aren't always worn. Top/bottom/footwear are always active. 0.0 = minimal (just top + bottom + shoes) 0.5 = moderate (some accessories, maybe outerwear) 1.0 = maximal (all enabled slots very likely to appear) |
| enable_headwear | BOOLEAN | false | Allow hats, caps, headbands in the outfit. Subject to probability roll based on coverage. |
| enable_top | BOOLEAN | true | Include a top garment (shirt, blouse, etc.). Always active when enabled — not subject to probability. |
| enable_outerwear | BOOLEAN | false | Allow jackets, coats, vests over the top. Subject to probability roll based on coverage. |
| enable_bottom | BOOLEAN | true | Include a bottom garment (pants, skirt, etc.). Always active when enabled — not subject to probability. |
| enable_footwear | BOOLEAN | true | Include shoes/boots. Always active when enabled — not subject to probability. |
| enable_accessories | BOOLEAN | false | Allow jewelry, watches, scarves, belts. Subject to probability roll based on coverage. |
| enable_bag | BOOLEAN | false | Allow bags, purses, backpacks. Subject to probability roll based on coverage. |
| print_probability | FLOAT | 0.300–1 | Chance of adding a decorative pattern or text to each garment. 0.0 = never add prints/text (solid colors only) 0.3 = occasional prints (default) 1.0 = every garment gets a print or text decoration Prints come from prints.txt, text from texts.txt in the outfit set. |
| text_mode | COMBO | How text decorations appear in prompts. auto/quoted — exact text in quotes, e.g. '"REBEL" text in gothic font' Best for ZImage Turbo, Flux2, and other text-aware models. descriptive — generic description, e.g. 'bold text graphic' Safe fallback for SD 1.5 / SDXL that can't render text. off — no text decorations, only visual prints/patterns. | |
| override_stringopt | STRING | Per-slot overrides. One line per slot. Format: slot_name: garment [| fabric] [| #color_tag#] [| decoration] Examples: top: silk blouse | #primary# bottom: exclude (skip this slot) footwear: red stiletto heels | leather | #accent# accessories: auto (use normal generation) Overrides bypass formality filtering and probability rolls. | |
| prefixopt | STRING | wearing | Text prepended to the outfit prompt. Default: 'wearing ' — produces 'wearing red silk blouse, ...' |
| separatoropt | STRING | , | Text between garment descriptions. Default: ', ' — produces 'blouse, pants, boots' |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| outfit_prompt | STRING | — |
| outfit_details | STRING | — |
| outfit_info | STRING | — |