Nodes/ComfyUI Warper Nodes/DWPose Scaler (Warper)
ComfyUI Node

DWPose Scaler (Warper)

Stretch a skeleton's legs and neck without stretching the image

By AIWarper·Created about a year ago·Updated 8 months ago· 14
DWPose Scaler (Warper)
  • pose_keypoints
  • scaled_image
  • scaled_pose_keypoints
neck_length_scale1.00
torso_adjust_y0
head_scale1.00
arm_length_scale1.00
hand_scale1.00
leg_length_scale1.00
keep_feet_groundedtrue
reference_frame_index0

Pose-conditioned generation is great until the pose is wrong. Someone's proportions are off, the neck reads too long, the legs look stubbed, and your only options used to be re-detecting, redrawing, or living with it. DWPose Scaler (Warper) is the star node of its pack and the answer: it takes a detected DWPose skeleton and independently rescales the neck, head, arms, hands, and legs - then redraws the whole thing as a clean pose image you feed back into your openpose ControlNet. You're editing the pose itself, not the photo, which means the image never gets touched.

It's from ComfyUI Warper Nodes, the niche pack by workflow author AIWarper, and it's the first node listed in the README with an example image for a reason - this is the one people install the pack for. If you've ever fought a character who comes out with a giraffe neck or T-rex arms in every pose-conditioned generation, this is the fix.

How it works

The pose_keypoints input is the POSE_KEYPOINT output from a DWPose preprocessor (ControlNet Aux's DWPreprocessor or Impact Pack's DWPose detector). The node walks the COCO keypoints and applies your scales as vector math around joint anchors: legs scale around hips and ankles, arms around shoulders, the head around the nose, hands around the wrist. keep_feet_grounded (default on) pins the ankles in place while the legs stretch, which is what keeps a scaled pose from floating off the floor. reference_frame_index lets it measure original proportions from a chosen frame when you're working a pose sequence. Everything gets clipped to canvas bounds, and the result is redrawn as a colored skeleton image.

The outputs are the whole reason this exists:

  • scaled_image - the redrawn skeleton as an IMAGE, ready for an openpose ControlNet.
  • scaled_pose_keypoints - the modified POSE_KEYPOINT data, if you want to keep working with the pose rather than the picture.

Inputs worth touching, briefly: leg_length_scale, arm_length_scale, head_scale, hand_scale, neck_length_scale all default to 1.0 (no change), range 0.1–3.0. torso_adjust_y shifts the torso vertically by pixels - a "make the character shorter/taller" nudge. Set the ones you need, leave the rest at 1.

Installing it

Standard Warper install: ComfyUI Manager → search "ComfyUI-WarperNodes" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/AIWarper/ComfyUI-WarperNodes
# restart ComfyUI

This node uses numpy/opencv/torch, all present in any working ComfyUI. It needs a DWPose detector upstream - that comes from a separate pack (ControlNet Aux or Impact Pack), not this one. The README's RAFT download is unrelated to this node.

Common issues

The number-one beginner trap is feeding an IMAGE into pose_keypoints. This node does not detect pose - it consumes a detection. No detector upstream, no dice, and you'll get a blank canvas output instead of an error, which is confusing. The blank-canvas fallback also hides failures: if you get a black/empty scaled_image, suspect bad pose input, not the scaling. keep_feet_grounded only matters when you're scaling legs, and the pose-clipping means extreme scales (>2×) will push joints to the canvas edge rather than beyond it - dial back if limbs vanish. It's also per-person: multi-person detections each get scaled, and the reference_frame_index measures from whichever frame you point it at, so leave it at 0 unless you have a reason to change it.

CategoryWarper Tools/DWMasking

Inputs (9)

NameTypeDefaultDescription
pose_keypointsPOSE_KEYPOINT
neck_length_scaleFLOAT1.000.1–3
torso_adjust_yFLOAT0-100–100
head_scaleFLOAT1.000.1–3
arm_length_scaleFLOAT1.000.1–3
hand_scaleFLOAT1.000.1–3
leg_length_scaleFLOAT1.000.1–3
keep_feet_groundedBOOLEANtrue
reference_frame_indexINT0

Outputs (2)

NameTypeDescription
scaled_imageIMAGE
scaled_pose_keypointsPOSE_KEYPOINT