BodyRatioMapper SDPose Translate
Nudge a pose across the canvas without touching a single bone
- pose_keypoint
- pose_keypoint
BodyRatioMapperSDPoseTranslate does one thing: moves a whole skeleton around the canvas. You give it a pose, an X offset, and a Y offset, and it shifts every keypoint - body, face, hands, feet - by that many pixels. That's it. No scaling, no bone bending, no math beyond addition. It's the pose equivalent of the Move node in an image editor, and that's precisely why it's useful.
This is the node you reach for when a pose is technically correct but positioned wrong. The most common real-world case: you've mapped a character's proportions from one clip onto another's motion, and everything lines up except the character is standing twenty pixels to the left of where the ControlNet expects them. Translate is how you park them exactly where they belong. It's also how you align two pose streams before blending them - run a clip's person onto the other's position with Translate, then hand both to the pack's Interpolate node, and you get a clean motion blend instead of a stretchy mess.
The inputs that matter
Three controls, all obvious:
pose_keypoint(required) - the SDPose keypoints to move.translate_xandtranslate_y- offsets in pixels, each -2000 to 2000. Positive X moves right, positive Y moves down (standard image coordinates).person_idx(default -1) - which person to move in a multi-person clip.-1moves everyone. This is the input that makes the node genuinely useful in group shots: you can reposition a single dancer in a two-person sequence without disturbing the other.
Output is a POSE_KEYPOINT with all keypoint arrays shifted by the same delta. If both offsets are zero, the node is a no-op and just passes the pose through.
Where it fits
In a normal BodyRatioMapper workflow this node usually sits after ProportionTransfer and before the Render node, doing final positioning. ProportionTransfer handles proportion matching and offset stabilization automatically, but its final_offset_alignment is a global heuristic - it's aligning the whole sequence, not positioning to your specific canvas. Translate is the manual final touch: you see the rendered skeleton is 30px off, you dial in +30 on X, done. Because it's frame-consistent (every frame shifted by the same amount), it won't introduce jitter - you're moving the whole person as one rigid unit.
It also makes a handy lightweight animation tool by itself: animate translate_x over time in a video workflow to slide a character across the frame, and render each frame's skeleton. A poor man's walk cycle, but a real one.
Installation and gotchas
Standard pack install - clone wuwukaka/ComfyUI-BodyRatioMapper into custom_nodes, pip install -r requirements.txt, restart. No models.
Two things to keep in mind. First, offsets are in pixels, and the node's coordinates are relative to whatever canvas the keypoints carry. If your downstream render is at a different resolution, a translate of 30px on a 512px canvas means something very different on a 1024px one - adjust accordingly. Second, this shifts the pose only; if you're translating to match a background, the background doesn't move, so the person slides off their spot. That's usually the point (repositioning the character), but if you actually wanted the camera to follow the character, this isn't the node - you'd want to translate the whole frame instead.
It's a tiny node with a one-line description, and honestly the least glamorous thing in the pack. But it's the kind of tool that saves you from rebuilding a graph every time a detection lands off-center, and once you've used it once you'll keep it around.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_keypoint | POSE_KEYPOINT | Input SDPose POSE_KEYPOINT | |
| person_idxopt | INT | -1-1–100 | Person index to translate. -1 = all persons. |
| translate_xopt | FLOAT | 0-2000–2000 | X offset in pixels |
| translate_yopt | FLOAT | 0-2000–2000 | Y offset in pixels |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pose_keypoint | POSE_KEYPOINT | — |