Nodes/ComfyUI-OOP/OOP Clothing 🥼
ComfyUI Node

OOP Clothing 🥼

Top, bottom and two colors — dress your character without tag surgery

By 0xRavenBlack·Created 2 years ago·Updated about a year ago· 15
OOP Clothing 🥼
    • OOP_CLOTHING
    upper_typeSweater
    lower_typeJeans
    upper_color
    lower_color
    randomizefalse

    Outfit prompts are a formatting nightmare. "Red sweater, gray sweatpants" is easy until you try to make the model keep the color attached to the right garment - then it's a game of "why is the sweater gray." OOP Clothing 🥼 from the ComfyUI-OOP pack handles the two big slots for you: a top, a bottom, and a color each, emitted as a clean structured label.

    What it builds

    Same DNA as every node in this pack: it assembles a labeled string and outputs it as a custom OOP_CLOTHING type. It never touches pixels, never calls a model - it's pure prompt construction.

    The required inputs:

    • upper_type - 19 options: Nude, TShirt, Sweater, Jacket, Shirt, Blouse, Hoodie, Coat, TankTop, Vest, Cardigan, Poncho, and more. Default Sweater.
    • lower_type - 19 options: Nude, Jeans, Shorts, Skirt, Trousers, Leggings, Sweatpants, Cargo Pants, Chinos, Dress, Short Skirt, Overalls, and more. Default Jeans.

    Optional, but you'll usually set them:

    • upper_color and lower_color - 13 colors each (Black through Beige, plus a couple more). Default " " means "no color specified," which the node treats as "don't add a color tag."

    Pick Sweater + Red and Sweatpants + Gray, and the node emits:

    Top::Garment:Sweater, color:Red, Bottom::Garment:Sweatpants, color:Gray
    

    The Top::Garment: prefix is the pack's way of keeping each garment scoped - it's the same structure you see in the README's example scene. There's also randomize, which on each queue rolls a random top, bottom and two colors. The IS_CHANGED method re-rolls on every run, so keep it off when you want a specific outfit to stick.

    Where it goes

    OOP_CLOTHING plugs into the clothing input on OOP Person 👤, which bundles it with hair, eyes, mouth and poses. The final prompt assembly and CLIP encoding happen in the OOP Node 💫, whose STRING output shows you the actual text. If the model ever misreads an outfit, read that string and hand-edit.

    One detail the code gets right: if you pick Nude for a slot, the node deliberately omits that garment's color - a red nude would be nonsense, and the author accounted for it.

    Install

    It ships with the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/0xRavenBlack/ComfyUI-OOP
    

    Restart ComfyUI. Manager works too - search ComfyUI-OOP in the Custom Nodes Manager. No requirements.txt, no model files, no dependency hell. This is one of the least fiddly installs in the ecosystem.

    Gotchas

    • SDXL-first. The pack's aggregator hardcodes CLIP skip −2 and 1024×1024 sizing; the demo workflow runs an SDXL empty latent (euler/karras, cfg 8, 20 steps). Garment tags like Cardigan and Cargo Pants behave on SDXL and booru-trained models; on Flux or 2026 LLM-encoder checkpoints they're weaker signal.
    • The lists are fixed. No "kimono," no "puffer jacket," no custom slot. Pick the closest and edit the output string when the list doesn't have it - the STRING output is there precisely so you can.
    • Blank color = no color tag. Leave upper_color at " " and the node just won't write a color, which is sometimes exactly what you want (the model picks).

    Small, quiet pack (built early 2025, ~15 stars, dormant since). It's not a fashion studio - it's a consistent way to keep outfits out of the typo pile, and it does that fine.

    CategoryObject-Oriented Prompting

    Inputs (5)

    NameTypeDefaultDescription
    upper_typeCOMBOSweater19 options: Nude, TShirt, Sweater, Jacket, Shirt, Blouse, +13
    lower_typeCOMBOJeans19 options: Nude, Jeans, Shorts, Skirt, Trousers, Leggings, +13
    upper_coloroptCOMBO 13 options: , Black, White, Gray, Red, Blue, +7
    lower_coloroptCOMBO 13 options: , Black, White, Gray, Red, Blue, +7
    randomizeoptBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    OOP_CLOTHINGOOP_CLOTHING