Nodes/ComfyUI-ProportionChanger/ProportionChanger Params
ComfyUI Node

ProportionChanger Params

The slider farm that stretches your character's limbs

By grmchn·Created about a year ago·Updated 3 months ago· 102
ProportionChanger Params
  • pose_keypoint
  • changed_pose_keypoint
head_scale1.00
neck_scale1.00
shoulder_scale1.00
arm_scale1.00
upper_arm_scale1.00
lower_arm_scale1.00
torso_scale1.00
pelvis_scale1.00
leg_scale1.00
thigh_scale1.00
lower_leg_scale1.00
feet_scale1.00
face_shape_scale1.00
eyebrow_height0.0
left_eyebrow_scale1.00
right_eyebrow_scale1.00
eye_distance_scale1.00
eye_height0.0
left_eye_scale1.00
right_eye_scale1.00
nose_scale_face1.00
mouth_scale1.00
hands_scale1.00
overall_scale1.00
rotate_angle0.0
translate_x0.0
translate_y0.0

This is the node that gives the pack its name. ProportionChanger Params is a direct keypoint editor: you give it a pose and it lets you stretch, squash, rotate, and shift individual body parts by pushing sliders - no image rendering, no re-detection, just pure arithmetic on the skeleton. Want a chibi with a giant head and stubby legs? A long-legged model whose torso stays put? This is where you do it.

The reason this works at all is that the pack operates on pose keypoints rather than on rendered OpenPose images. DWPose-style skeletons are just numbered joints with coordinates, and the pack's whole design bet is that you can edit those numbers directly and hand the result to a ControlNet-style conditioning step downstream. This node is the manual editing surface for that bet - the ported heart of toyxyz's ComfyUI-ultimate-openpose-editor, reworked to touch keypoint data instead of pixels.

What you actually set

There are around two dozen sliders, which sounds like a lot until you realize they group cleanly:

  • Body part scales - head_scale, neck_scale, shoulder_scale, torso_scale, pelvis_scale, and the arms/legs broken out into upper_arm_scale/lower_arm_scale and thigh_scale/lower_leg_scale, plus feet_scale. 1.0 is untouched; 1.5 is 50% longer.
  • Face - face_shape_scale, eye_distance_scale, eye_height, eyebrow_height, and per-side eye/eyebrow scales. Handy for the slightly-too-big-face problem.
  • Global transform - overall_scale (everything at once), rotate_angle, and translate_x/translate_y to move or tilt the whole figure.

The pose_keypoint input is optional, which is the one real surprise: the node will happily run with nothing connected, so wire it to a detector, a Reference node, or a PoseData to pose_keypoint output. The output is changed_pose_keypoint, ready for the Pose Render node or straight into your video conditioning.

One small detail worth knowing: the node has a cache-busting IS_CHANGED that forces ComfyUI to re-run it whenever you touch a slider, so your preview updates live instead of silently reusing a stale result. That's the right call for an editor, even if it means it always recomputes.

Install and gotchas

Part of the one-pack install - ComfyUI Manager search "ComfyUI-ProportionChanger", or:

cd ComfyUI/custom_nodes
git clone https://github.com/grmchn/ComfyUI-ProportionChanger.git
cd ComfyUI-ProportionChanger
pip install -r requirements.txt

Restart after. The usual failure mode isn't the node itself, it's what feeds it: if the upstream pose detection was weak, you'll be stretching a skeleton that was already wrong, and no amount of leg_scale fixes a missed knee. Check the detected pose in the Pose Render node before you edit. And remember the max ranges are wide (legs go to 10×) but the defaults are all 1.0 - small steps, because a 2× head looks intentional and a 4× head looks cursed.

CategoryProportionChanger

Inputs (28)

NameTypeDefaultDescription
pose_keypointoptPOSE_KEYPOINT
head_scaleoptFLOAT1.000–5
neck_scaleoptFLOAT1.000–10
shoulder_scaleoptFLOAT1.000–10
arm_scaleoptFLOAT1.000–10
upper_arm_scaleoptFLOAT1.000–10
lower_arm_scaleoptFLOAT1.000–10
torso_scaleoptFLOAT1.000–10
pelvis_scaleoptFLOAT1.000–10
leg_scaleoptFLOAT1.000–10
thigh_scaleoptFLOAT1.000–10
lower_leg_scaleoptFLOAT1.000–10
feet_scaleoptFLOAT1.000–10
face_shape_scaleoptFLOAT1.000–5
eyebrow_heightoptFLOAT0.0-100–100
left_eyebrow_scaleoptFLOAT1.000–5
right_eyebrow_scaleoptFLOAT1.000–5
eye_distance_scaleoptFLOAT1.000–5
eye_heightoptFLOAT0.0-100–100
left_eye_scaleoptFLOAT1.000–5
right_eye_scaleoptFLOAT1.000–5
nose_scale_faceoptFLOAT1.000–5
mouth_scaleoptFLOAT1.000–5
hands_scaleoptFLOAT1.000–10
overall_scaleoptFLOAT1.000–10
rotate_angleoptFLOAT0.0-360–360
translate_xoptFLOAT0.0-10000–10000
translate_yoptFLOAT0.0-10000–10000

Outputs (1)

NameTypeDescription
changed_pose_keypointPOSE_KEYPOINT