Nodes/ComfyUI-ProportionChanger/ProportionChanger Reference
ComfyUI Node

ProportionChanger Reference

The node that actually changes proportions

By grmchn·Created about a year ago·Updated 3 months ago· 102
ProportionChanger Reference
  • pose_keypoint
  • reference_pose_keypoint
  • changed_pose_keypoint
auto_resize_referencetrue

Every other node in this pack is scaffolding. ProportionChanger Reference is the reason the pack exists. It takes one pose, compares it to a reference pose, and transforms the first one's proportions to match the second - so you can take a normal human pose video and push the whole body toward a chibi, a long-legs style, or any body type a pose detector could never estimate on its own.

That last bit is the whole trick, and it's worth sitting with for a second. Pose detectors can only find what's already in the image. If your character is a giant-headed mascot or a stylized model, the detector has no training data for that body, so you get garbage or an empty skeleton. The pack's answer: detect a real human pose, then use this node to rewrite the proportions in keypoint space toward whatever reference you define. You're not fighting the detector; you're bypassing it.

How it works

The node is a direct port of the WanVideo UniAnimate pose transformation logic from kijai's ComfyUI-WanVideoWrapper (the README says so, and the code's apply_batch_proportion_changes is a near line-for-line port of WanVideo's pose_extract). Internally it converts both your target and your reference into a DWPose-style format, works out the per-segment ratios between them, and re-scales the target's skeleton segment by segment - arms, legs, torso, head - before converting back to POSE_KEYPOINT. It handles multi-frame batches, so a whole pose video comes out the other end with consistent proportions.

The inputs that matter

There are only three, which is the point:

  • pose_keypoint (required) - your target pose, usually straight from ProportionChanger Pose Detector or PoseData to pose_keypoint.
  • reference_pose_keypoint (optional) - the pose whose proportions you want. Could be another detection, or hand-built keypoints.
  • auto_resize_reference (default on) - the one that saves you. If the reference was detected on a different canvas size than the target, the aspect ratios won't match and your proportions come out subtly wrong or the skeleton just looks broken. When this is on, the node pads/scales the reference to the target's canvas first.

Output is changed_pose_keypoint, ready for ProportionChanger Params to fine-tune, Pose Render to preview, or straight into a video conditioning chain.

Where people get burned

The README's troubleshooting list is actually honest here. Two failures dominate. First: nothing displays after the transform - that almost always means the reference pose detection failed (empty skeleton), so the node has nothing to compare against. The fix is to not rely on detection for the reference: hand-build it with PoseJSONToPoseKeypoint or an OpenPose editor. Second: proportions look wrong even though something rendered - the canvas-aspect mismatch, which auto_resize_reference exists to prevent. If you've got it on and it's still off, drop pose_keypoint resize in front of the reference to force an explicit canvas size.

Install is the shared pack install - ComfyUI Manager search "ComfyUI-ProportionChanger", or clone + pip install -r requirements.txt + restart. No extra models beyond what the detector downloads on first run. Just don't skip checking the rendered output before you edit the reference: a reference with a bad knee or a floating hip gets faithfully transferred, garbage and all.

CategoryProportionChanger

Inputs (3)

NameTypeDefaultDescription
pose_keypointPOSE_KEYPOINTTarget pose keypoints
auto_resize_referenceBOOLEANtrueIf true, auto-resize/pad reference_pose_keypoint to match pose_keypoint canvas size to avoid aspect mismatch issues.
reference_pose_keypointoptPOSE_KEYPOINTReference pose keypoint

Outputs (1)

NameTypeDescription
changed_pose_keypointPOSE_KEYPOINT