Nodes/comfyui-fvmtools/Outfit Generator
ComfyUI Node

Outfit Generator

Seed-controlled outfit prompts with editable garment lists — the wardrobe node

By ping1979ping·Created 5 months ago·Updated about a month ago· 0
Outfit Generator
    • outfit_prompt
    • outfit_details
    • outfit_info
    outfit_set
    seed0
    style_preset
    formality0.50
    coverage0.50
    enable_headwearfalse
    enable_toptrue
    enable_outerwearfalse
    enable_bottomtrue
    enable_footweartrue
    enable_accessoriesfalse
    enable_bagfalse
    print_probability0.30
    text_mode
    override_string
    prefixwearing
    separator,

    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_female is the default; the dropdown lists everything in outfit_lists/.
    • seed - same seed + same settings = same outfit. Change it for variety.
    • formality and coverage - 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: quoted writes exact text like "REBEL" text in gothic font (best for text-aware models like Z-Image Turbo and Flux2), descriptive writes a generic "bold text graphic" (safe for SD/SDXL which can't render text), off skips 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.

    CategoryFVM Tools/Fashion

    Inputs (17)

    NameTypeDefaultDescription
    outfit_setCOMBOOutfit 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.
    seedINT00–4294967295Random seed for deterministic outfit generation. Same seed + same settings = same outfit every time. Change seed to get a different outfit combination.
    style_presetCOMBOStyle 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.
    formalityFLOAT0.500–1Casual-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.
    coverageFLOAT0.500–1Controls 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_headwearBOOLEANfalseAllow hats, caps, headbands in the outfit. Subject to probability roll based on coverage.
    enable_topBOOLEANtrueInclude a top garment (shirt, blouse, etc.). Always active when enabled — not subject to probability.
    enable_outerwearBOOLEANfalseAllow jackets, coats, vests over the top. Subject to probability roll based on coverage.
    enable_bottomBOOLEANtrueInclude a bottom garment (pants, skirt, etc.). Always active when enabled — not subject to probability.
    enable_footwearBOOLEANtrueInclude shoes/boots. Always active when enabled — not subject to probability.
    enable_accessoriesBOOLEANfalseAllow jewelry, watches, scarves, belts. Subject to probability roll based on coverage.
    enable_bagBOOLEANfalseAllow bags, purses, backpacks. Subject to probability roll based on coverage.
    print_probabilityFLOAT0.300–1Chance 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_modeCOMBOHow 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_stringoptSTRINGPer-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.
    prefixoptSTRINGwearing Text prepended to the outfit prompt. Default: 'wearing ' — produces 'wearing red silk blouse, ...'
    separatoroptSTRING, Text between garment descriptions. Default: ', ' — produces 'blouse, pants, boots'

    Outputs (3)

    NameTypeDescription
    outfit_promptSTRING
    outfit_detailsSTRING
    outfit_infoSTRING