Pose Transform (uniform)
Moving a skeleton exactly where you want it
- pose_keypoint
- pose_keypoint
Some pose problems need a canvas and a mouse. Most just need a few numbers. Pose Transform is the "few numbers" node: it takes a POSE_KEYPOINT, moves it, scales it uniformly, and optionally rotates it onto a target canvas - all as pure coordinate math, with no re-running detection. It's the cheap, repeatable sibling of the pack's fancy Pose Composer, and for one-person shots it's usually the right tool.
How it works
The node rescales the pose from its stored source canvas to target_width × target_height, then applies a uniform scale pivoted on the skeleton's centroid, a translate_x/translate_y offset in target pixels, and an optional rotate_degrees. Deliberately, there is no separate X/Y scaling - stretching a skeleton's proportions independently would distort the pose geometry, and ControlNet would cheerfully draw you a distorted person. The uniform-scale constraint is the whole design.
Inputs
pose_keypoint- the pose to transform.target_width/target_height- the output canvas dimensions (defaults 1024², stepped by 8).scale- uniform factor around the skeleton centroid (0.05–5).translate_x/translate_y- offsets in target-canvas pixels.rotate_degrees- rotation in degrees. Read the warning below before using it.
Output
pose_keypoint - the transformed pose, ready for a Pose Renderer and then ControlNet.
Where people get burned
The rotation is the trap. Rotating a skeleton doesn't just re-orient the drawing - it changes the actual pose data. A torso tilted 30° reads differently to ControlNet than an upright one, so unless the source pose genuinely was tilted (say, someone leaning in the photo), don't rotate to "fix" framing. That's what translate is for.
The other classic mistake is sequence: crop/reframe first (via Pose Canvas Crop/Fit), then transform to position the person within the frame, then render. A typical chain is detect → crop/fit to your generation ratio → transform with a little translate/scale to frame the subject → render with keep_input_size=true → ControlNet.
Installing it
Same pack, same drill: ComfyUI Manager → search Eric Composer Studio → install → restart, or git clone https://github.com/EricRollei/Eric_Composer_Studio.git into custom_nodes + pip install -r requirements.txt. It only touches POSE_KEYPOINT data, so it needs comfyui_controlnet_aux present for the socket type to exist, but it's otherwise dependency-light - no model downloads, no rtmlib, instant to run.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_keypoint | POSE_KEYPOINT | — | |
| target_width | INT | 102464–8192 | — |
| target_height | INT | 102464–8192 | — |
| scale | FLOAT | 1.000.05–5 | — |
| translate_x | INT | 0-4096–4096 | — |
| translate_y | INT | 0-4096–4096 | — |
| rotate_degrees | FLOAT | 0.0-180–180 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pose_keypoint | POSE_KEYPOINT | — |