ProportionChanger Pose Render
Turning keypoints back into the OpenPose image your ControlNet wants
- pose_keypoint
- IMAGE
Here's the pipeline's little secret: all the proportion editing in this pack happens on numbers, but the models you feed at the end mostly want a picture. DWPose, OpenPose, VACE conditioning - they all expect an image with a stick figure drawn on it, not a JSON blob of joints. ProportionChanger Pose Render is what turns your edited POSE_KEYPOINT back into that renderable OpenPose-style image.
So the shape of a typical workflow is: detect a pose → change its proportions in keypoint space → render it back to an image → feed that image to your pose-ControlNet or VACE control-video step. The render node is the return trip. It's compatible with the openpose-render parameter style that ControlNet preprocessors speak, but with one important upgrade baked in: it renders the full 25-point skeleton including the toe keypoints, so the feet you went to the trouble of proportion-editing actually show up in the condition.
The inputs that matter
- pose_keypoint - required; the pose to render.
- show_body / show_hands / show_feet (defaults on) and show_face (default off) - toggle which keypoint groups get drawn. Face is off by default, which is usually right: for pose control you want body motion, and a cluttered face point cloud can confuse the conditioner.
- resolution_x (default -1) - output width; -1 keeps the pose's native canvas size. Set a specific value if you need a fixed resolution regardless of source.
- pose_marker_size / face_marker_size / hand_marker_size - dot sizes for each group. Bump
pose_marker_sizeif the skeleton looks too thin to register.
Output is an IMAGE tensor - preview it, or wire it into a ControlNet preprocessor chain / VACE control input.
The workflow context
This is the node that closes the loop on the pack's whole bet. You detect a human pose, reshape the body to a chibi or a long-legs style with Reference/Params, render the result here, and the downstream VACE or ControlNet step drives the actual generation from your edited skeleton - character identity handled by your reference image, motion geometry handled by your proportions. If you're just getting oriented, run detector → render → preview first: that's the fastest way to see whether your pose detection is even good before you start changing proportions.
Install
Shared pack install - ComfyUI Manager search "ComfyUI-ProportionChanger", or clone + pip install -r requirements.txt + restart. Pure torch/numpy rendering, no models. The one thing to check when your preview looks wrong is upstream, not this node: a pose rendered from bad keypoints looks bad faithfully, so verify the detection (and the canvas size) before you blame the renderer.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_keypoint | POSE_KEYPOINT | POSE_KEYPOINT data to render | |
| show_bodyopt | BOOLEAN | true | Draw body keypoints |
| show_faceopt | BOOLEAN | false | Draw face keypoints |
| show_handsopt | BOOLEAN | true | Draw hand keypoints |
| show_feetopt | BOOLEAN | true | Draw toe keypoints |
| resolution_xopt | INT | -1-1–12800 | Output width (-1 for original) |
| pose_marker_sizeopt | INT | 40–100 | Body keypoint marker size |
| face_marker_sizeopt | INT | 30–100 | Face keypoint marker size |
| hand_marker_sizeopt | INT | 20–100 | Hand keypoint marker size |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |