Nodes/MKRShift_Nodes/Pose Studio
ComfyUI Node

Pose Studio

A real 3D pose blockout node that speaks numbers, not vague words

By criskb·Created 7 months ago·Updated 5 months ago· 0
Pose Studio
    • pose_json
    • pose_guide
    • pose_prompt
    • summary_json
    settings_json{}
    pose_name
    pose_presetfrom_settings
    mirror_modefrom_settings
    character_state_json

    MKRPoseStudio is the character branch's pose-layout node, and it's the one that surprises people - because it's a genuine 3D skeleton editor hiding inside ComfyUI. You don't describe a pose with adjectives; you push sliders for arm raise, knee bend, spine twist, and it renders a 3D skeleton guide image and exports the pose as structured JSON. If you've ever spent ten prompts trying to get "contrapposto with a slight torso twist" right, this is the node that makes the answer a set of numbers instead of a prayer.

    Under the hood it's refreshingly self-contained. There's no model download, no ControlNet, no external renderer. The pack computes a 3D pose from rotation math (per-joint yaw/pitch/roll, forward kinematics on a skeleton), projects the joints to 2D, and draws the guide with PIL. The output pose_json carries the full state: controls, view, world joints, and bone links - reusable anywhere in the pack's character lane.

    The node also launches a separate Pose Studio workspace (it's on the pack's list of custom WEB_DIRECTORY frontend extensions), so the actual editing UI - orbit camera, slider groups, presets - lives in a proper workspace rather than being crammed into the node body. The node on your canvas is the compact launcher that consumes settings and emits results.

    The inputs (all optional)

    • pose_preset - the quick-start menu: from_settings, neutral, heroic, contrapposto, run_start, power_stance, reach_up, kneel_pose, hands_behind_back, pinup_sway, crouch_ready. Pick one and start from there. Contrapposto and power_stance are the workhorses for character work.
    • mirror_mode - flip a pose left-to-right or right-to-left (from_settings, off, and both mirror directions). Handy when a pose reads better mirrored for the comp.
    • settings_json - persisted pose + viewport state from the workspace. This is how you keep a pose between sessions.
    • pose_name - label the pose so it's identifiable in the JSON and the guide.
    • character_state_json - optional character record; the node reads the character name for the guide branding.

    The outputs

    • pose_json - the full pose payload (schema mkr_pose_studio_v1). This is the data. Keep it if you want to reapply the exact pose later.
    • pose_guide (IMAGE) - the rendered skeleton guide. The classic use: feed it into a ControlNet pose preprocessor lane, or use it as a visual reference in a collage/compare workflow.
    • pose_prompt - a short readable descriptor ("contrapposto, torso twist, raised arm read, view yaw 18") you can drop into your prompt encode as a hint.
    • summary_json - schema, pose name, preset, joints, bone count.

    Installing

    Same single-pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/criskb/MKRShift_Nodes
    

    restart, or Manager → "MKRShift". No dependencies beyond what ComfyUI already ships, and no model files to hunt down - which is the whole appeal. Full restart (browser too) if the workspace frontend doesn't show up; WEB_DIRECTORY extensions need the UI reloaded.

    Gotchas

    Pose Studio gives you a pose, not control over how the model obeys it. The pose_guide is a raster image - to actually drive generation you need to route it through your pose conditioning stack (ControlNet OpenPose or similar), and no node in this pack does that for you. Also, the pose lives in the JSON: if you don't save pose_json or keep settings_json flowing, your carefully tuned pose evaporates when you close the workspace. And it's worth being honest that a numerical skeleton won't fix anatomy on its own - it constrains the pose; the model still has to draw a body you like.

    CategoryMKRShift Nodes/Core/Character

    Inputs (5)

    NameTypeDefaultDescription
    settings_jsonoptSTRING{}
    pose_nameoptSTRING
    pose_presetoptCOMBOfrom_settings11 options: from_settings, neutral, heroic, contrapposto, run_start, power_stance, +5
    mirror_modeoptCOMBOfrom_settings4 options: from_settings, off, left_to_right, right_to_left
    character_state_jsonoptSTRING

    Outputs (4)

    NameTypeDescription
    pose_jsonSTRING
    pose_guideIMAGE
    pose_promptSTRING
    summary_jsonSTRING