Nodes/ComfyUI-OOP/OOP Poses 🧍
ComfyUI Node

OOP Poses 🧍

Stop typing pose prompts β€” pick body, hands and legs from dropdowns

By 0xRavenBlackΒ·Created 2 years agoΒ·Updated about a year agoΒ· 15
OOP Poses 🧍
    • OOP_POSE
    β—„base_poseStandβ–Ί
    β—„hand_poseStretchβ–Ί
    β—„leg_poseAgainstWallβ–Ί
    β—„randomizefalseβ–Ί

    The pose line is where prompts go to die. You type "squatting, hand to mouth, legs spread" and the sampler gives you a standing statue with noodle arms, because free-text poses are a gamble on every checkpoint. OOP Poses 🧍 from the ComfyUI-OOP pack turns that into three dropdowns: pick a body pose, a hand pose and a leg pose, and it hands the rest of the pack a clean, labeled string it can slot into a bigger scene description.

    What it actually does

    Like every node in this pack, OOP Poses is a prompt-builder in disguise. It doesn't touch the image or call any model - it assembles a short text and outputs it as a custom OOP_POSE type. That string looks like body:Stand, hands:Stretch, legs:AgainstWall (the default), which you'll recognize as the structured, label-prefixed style the pack's README example pushes for. The author built these to keep scenes organized the same way you'd organize a character sheet, not to do anything clever at the pixel level.

    The three dropdowns are the whole node, and the choice lists are genuinely long:

    • base_pose - 23 options, from Stand and Sitting through Squat, Grovel, Fly and some very specific ones (Selfie, BreastsRestOnTable). Default Stand.
    • hand_pose - 25 options like HandToMouth, ArmsCrossed, PeaceSymbol, MiddleFinger. Default Stretch.
    • leg_pose - 20 options from SpreadLegs to Seiza and WarizaWSitting. Default AgainstWall.

    Then there's the randomize boolean. Flip it and every queue picks a fresh random body/hand/leg combination. The node's IS_CHANGED method returns random bits whenever randomize is on, which is ComfyUI's way of saying "re-run me every time" - so it re-rolls on every queue, not just when you change something. If you want a stable pose, leave it off.

    Where the output goes

    The only output is OOP_POSE, which wires into the poses input on OOP Person πŸ‘€ (the pack's character assembler) and, through it, into the OOP Node πŸ’« that does the final text encoding. You can't drag OOP_POSE into a plain text box - it's a custom type only this pack understands. If you want to see what it actually rendered, run the graph and read the STRING output of the OOP Node.

    One honest caveat: these labels are the weak spot. They read like Danbooru-style pose tags, so they hit hard on SDXL anime/illustrious-style checkpoints and get mushy on photorealistic ones. The good news is you can always read the assembled string and edit the pose by hand when a pick lands wrong.

    Installing it

    The whole pack installs together, and it's the easiest kind:

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

    Then restart ComfyUI. Or use Manager (Custom Nodes Manager β†’ search ComfyUI-OOP β†’ Install). There's no requirements.txt and no model files - it's pure Python that rides on ComfyUI's built-in CLIP, so there are no dependencies to fight and nothing to download.

    Troubleshooting

    • "It renders nothing useful" - remember this is an SDXL-era pack. The aggregator node hardcodes CLIP skip βˆ’2 and 1024Γ—1024 conditioning, and the demo workflow uses an SDXL empty latent with euler/karras, cfg 8, 20 steps. Feed it an SDXL checkpoint and these tags behave; on Flux or SD1.5 you're outside what the author tested.
    • Pose re-randomizes when you didn't ask - check that randomize is off; the re-roll happens on every queue run.
    • OOP_POSE won't connect - you need OOP Person and/or OOP Node in the path; the custom type has no meaning outside the pack.

    The pack is small (15-ish stars, built over a week in early 2025, dormant since). It's not the most maintained tool you'll install, but as a way to stop hand-typing pose prompts and get a repeatable scene structure, it does the job.

    CategoryObject-Oriented Prompting

    Inputs (4)

    NameTypeDefaultDescription
    base_poseCOMBOStand23 options: Sitting, Stand, Squat, Grovel, Lie, Jump, +17
    hand_poseCOMBOStretch25 options: HandToMouth, ArmAtSide, ArmsBehindHead, ArmsBehindBack, HandOnOwnChest, ArmsCrossed, +19
    leg_poseCOMBOAgainstWall20 options: SpreadLegs, CrossedLegs, FetalPosition, LegLift, LegsUp, LeaningForward, +14
    randomizeoptBOOLEANfalseβ€”

    Outputs (1)

    NameTypeDescription
    OOP_POSEOOP_POSEβ€”