Nodes/comfyui-fvmtools/SMP · Outfit Generator (dict) (legacy)
ComfyUI Node

SMP · Outfit Generator (dict) (legacy)

An outfit as structured data, not just a sentence

By ping1979ping·Created 7 months ago·Updated a day ago· 2
SMP · Outfit Generator (dict) (legacy)
    • outfit_raw
    • summary
    ◄outfit_set▾►
    ◄seed0►
    ◄style_presetgeneral►
    ◄formality0.50►
    ◄coverage0.50►
    ◄enable_headwearfalse►
    ◄enable_toptrue►
    ◄enable_bottomtrue►
    ◄enable_footweartrue►
    ◄enable_outerwearfalse►
    ◄enable_accessoriesfalse►
    ◄enable_bagfalse►
    ◄print_probability0.30►
    ◄text_modeauto►
    ◄overrides►
    ◄text_probability0.00►

    The pack's headline Outfit Generator produces a plain text prompt. This one - the "(dict)" variant - produces the same thing as structured data: an OUTFIT_DICT_RAW where every garment is its own record with a name, fabric, color_role, a region hint, and a prompt_fragment still full of #primary#-style color tokens. Same engine, same outfit_lists/ data as the non-dict version; the difference is the shape it hands downstream, which is what lets the SMP pipeline route each garment to a specific region of the image later.

    446 outfit sets at last count, scanned from the pack's outfit_lists/ directory - business, casual, sheer/layered, aerobic sub-themes, all the way to female_lingerie. And it's seed-controlled, so the same seed gives the same outfit every run. For reproducible character styling across a batch, that's the whole game.

    How it works

    It wraps core.outfit_engine.generate_outfit_records and adds per-slot color roles plus region hints - including a sam_class_hint, so a top knows it maps to SAM3's upper_clothes class downstream. Each garment slot is gated by an enable toggle and filtered by the formality and coverage sliders; print_probability and text_mode control whether garments get prints or text decorations.

    Inputs that matter

    • outfit_set - which of the ~446 sets to draw from.
    • seed - reproducible outfits.
    • formality / coverage - the style sliders (0.0–1.0).
    • The enable_* toggles - top, bottom, footwear default on; headwear, outerwear, accessories, bag default off.
    • overrides (optional) - a manual bypass string, same idea as the text generator's override.

    Outputs

    • outfit_raw - wire it into SMP · Outfit Combiner.
    • summary - a string describing what was generated.

    Install

    Zero extra dependencies. The SMP dict pipeline uses numpy and pydantic 2, both already in the ComfyUI venv:

    cd ComfyUI/custom_nodes
    git clone https://github.com/ping1979ping/comfyui-FVMtools
    

    Restart and you're live.

    Common issues

    An outfit that ignores your formality slider usually means the set you picked simply doesn't have garments in that range - some sets are single-tone. And the gotcha that trips everyone migrating from the text generator: this node does not resolve colors. The tokens stay in the fragments by design, and the Outfit Combiner after it is what spends them. Wire the combiner or you'll be feeding literal #primary# text to your encoder.

    CategoryFVM Tools/SMP/Generators

    Inputs (16)

    NameTypeDefaultDescription
    outfit_setCOMBO405 options: female/1940s_lingerie/general, female/1940s_lingerie/hollywood_starlet, female/1940s_lingerie/pinup_glamour, female/1940s_lingerie/wartime_practical, female/athleisure/general, female/athleisure/hot_pilates, +399
    seedINT00–18446744073709550000—
    style_presetCOMBOgeneral14 options: beach, casual_daywear, cyberpunk_neon, earthy_natural, evening_gala, festival, +8
    formalityFLOAT0.500–1—
    coverageFLOAT0.500–1—
    enable_headwearBOOLEANfalse—
    enable_topBOOLEANtrue—
    enable_bottomBOOLEANtrue—
    enable_footwearBOOLEANtrue—
    enable_outerwearBOOLEANfalse—
    enable_accessoriesBOOLEANfalse—
    enable_bagBOOLEANfalse—
    print_probabilityFLOAT0.300–1Chance of a decorative pattern per garment. Slogans are a separate roll — see text_probability.
    text_modeCOMBOautoWording of text decorations. How often they appear is text_probability (default 0.0 = never).
    overridesoptSTRING—
    text_probabilityoptFLOAT0.000–1Chance of a slogan per garment, independent of print_probability. Both add up to the total decoration chance and keep their ratio when the sum exceeds 1.0. Inert while text_mode is 'off' or the set has no texts.txt entries for the slot.

    Outputs (2)

    NameTypeDescription
    outfit_rawOUTFIT_DICT_RAW—
    summarySTRING—