Nodes/Pond Nodes/🐳Pose Selector (Multi-Select)
ComfyUI Node

🐳Pose Selector (Multi-Select)

16 poses in a dropdown, zero dependencies

By Pondowner857·Created about a year ago·Updated 2 months ago· 45
🐳Pose Selector (Multi-Select)
    • english_tags
    • chinese_tags
    • combined_tags
    ◄separatorcomma►
    ◄select_综合_1无►
    ◄select_综合_2无►
    ◄select_综合_3无►
    ◄select_姿态_1无►
    ◄select_姿态_2无►
    ◄select_姿态_3无►
    ◄select_手势_1无►
    ◄select_手势_2无►
    ◄select_手势_3无►
    ◄select_视线_1无►
    ◄select_视线_2无►
    ◄select_视线_3无►
    ◄select_整体_1无►
    ◄select_整体_2无►
    ◄select_整体_3无►
    ◄select_上半身_1无►
    ◄select_上半身_2无►
    ◄select_上半身_3无►
    ◄custom_tags►

    Pose Selector is a single dropdown that turns into a finished prompt clause. You pick a pose - standing, arms crossed, contrapposto, whatever - and it hands you back the string Change pose to arms crossed, ready to feed straight into a CLIPTextEncode. No APIs, no models to download, no Python packages to fight. It's just string building, and that's exactly why it's useful.

    The name of the pack gives the game away: comfyui-klein9b-multi-angle. It was built alongside Flux 2 Klein 9B, Black Forest Labs' size-distilled editing model, which is happiest when you talk to it in short natural-language instructions ("change the pose to X"). That phrasing works fine on ordinary text encoders too - models have been trained on this kind of direct instruction for years - but if you're running a Klein editing workflow, this node is speaking its language natively.

    How it works

    The mechanism is almost comically simple, and it's worth knowing because it sets your expectations. When you hit Queue, the node takes your chosen pose, wraps it in the prefix Change pose to , and spits out one STRING. There's no model inference, no random walk, no hidden conditioning. The only moving part is the seed.

    Here's the part people miss: the dropdown includes a random option, and the node samples from its 16 poses using Python's random.Random(seed). Same seed, same pose, every time - so you can fix a seed and get reproducible random poses, then bump the seed to explore. Toggle the seed widget's control_after_generate to randomize and every queue gives you a fresh pose for free. That's the classic "batch 32 and get variety" trick from the prompt tooling world, just wrapped in a dropdown instead of {standing|sitting|kneeling} bracket syntax.

    Inputs and outputs that matter

    • pose - the dropdown. 16 presets plus random. Default standing.
    • seed - only does anything when pose is set to random. Otherwise it's decoration.
    • previous_prompt (optional) - connect another selector's output here to daisy-chain.
    • prefix and separator - editable, but you'll rarely touch them. The defaults (Change pose to and , ) do the right thing.
    • Output: a single STRING named prompt. Wire it into CLIPTextEncode's text, or into another selector's previous_prompt.

    The chaining is where this earns its keep. Feed previous_prompt from, say, a Camera Angle Selector, and you get Change camera angle to front view eye-level shot medium shot, Change pose to arms crossed - two nodes, one coherent instruction sentence, no manual comma wrangling. Disconnect the upstream link and this node becomes the chain head automatically, with no stray leading separator.

    Install

    The easiest path is ComfyUI Manager - search for "Multi-Angle Camera Selector" and click install. Or go manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/saluzafa/comfyui-klein9b-multi-angle
    

    Restart ComfyUI. That's the whole install: the pack has zero dependencies (the code imports only Python's standard library), so there's no requirements.txt drama and no model files to fetch. It appears under prompt/character in the node menu.

    Gotchas

    • Don't expect the pose to be perfect. This node writes the words; the model still has to obey them, and no prompt tool fixes a model that ignores pose instructions. If Klein isn't following, that's a sampler/settings conversation, not this node's fault.
    • The pack is MIT and pure text output - no network calls, nothing to audit beyond a few dozen lines of obvious string building.
    • If you set random and keep getting the same pose, check your seed widget: with control_after_generate on fixed, the seed doesn't change, so the "random" is deterministic. That's a feature, but it surprises people.
    Category🐳Pond/text

    Inputs (20)

    NameTypeDefaultDescription
    separatorCOMBOcomma3 options: comma, space, newline
    select_综合_1optCOMBO无选择综合相关的姿势标签 #1
    select_综合_2optCOMBO无选择综合相关的姿势标签 #2
    select_综合_3optCOMBO无选择综合相关的姿势标签 #3
    select_姿态_1optCOMBO无选择姿态相关的姿势标签 #1
    select_姿态_2optCOMBO无选择姿态相关的姿势标签 #2
    select_姿态_3optCOMBO无选择姿态相关的姿势标签 #3
    select_手势_1optCOMBO无选择手势相关的姿势标签 #1
    select_手势_2optCOMBO无选择手势相关的姿势标签 #2
    select_手势_3optCOMBO无选择手势相关的姿势标签 #3
    select_视线_1optCOMBO无选择视线相关的姿势标签 #1
    select_视线_2optCOMBO无选择视线相关的姿势标签 #2
    select_视线_3optCOMBO无选择视线相关的姿势标签 #3
    select_整体_1optCOMBO无选择整体相关的姿势标签 #1
    select_整体_2optCOMBO无选择整体相关的姿势标签 #2
    select_整体_3optCOMBO无选择整体相关的姿势标签 #3
    select_上半身_1optCOMBO无选择上半身相关的姿势标签 #1
    select_上半身_2optCOMBO无选择上半身相关的姿势标签 #2
    select_上半身_3optCOMBO无选择上半身相关的姿势标签 #3
    custom_tagsoptSTRING—

    Outputs (3)

    NameTypeDescription
    english_tagsSTRING—
    chinese_tagsSTRING—
    combined_tagsSTRING—