Jakkanna Replace OpenPose Hands (Legacy)
When OpenPose hands come out wrong, steal better ones
- base_keypoints
- vnccs_keypoints
- keypoints
Hands are where pose detection goes to die. Body keypoints come out fine, wrists land, and then the fingers are a scribble - because detectors trained on photos keep losing fingers to occlusion and motion blur. The old VNCCS answer, preserved here as Jakkanna Replace OpenPose Hands (Legacy), was brutally practical: don't fix the detector, splice in better hands from a pose you trust.
The node takes two POSE_KEYPOINT sets and produces one. base_keypoints is your working pose - say, DWPose/OpenPose output from a real photo or a rendered frame, with mangled hands. vnccs_keypoints is a clean pose from the Pose Studio mannequin (or anything else with good hand data). The output is the base pose with its hand keypoints swapped for the vnccs ones.
What actually gets merged
It's a targeted merge, frame by frame:
- hand_right_keypoints_2d and hand_left_keypoints_2d - the 63-value (21 joints × 3) hand tracks are copied from the vnccs pose when they're well-formed.
- pose_keypoints_2d indices 12–15 and 21–24 - the wrist and hand-root joints, which need to move to match the new hands.
Everything else - the torso, legs, face - stays from your base. The idea is that hand topology is rigid enough that borrowing it wholesale beats fighting the detector. It's a "replace the worst part with a known-good part" approach, not a blend or an average.
Why it's marked Legacy
The "(Legacy)" suffix is literal: the modern node is VNCCS_ReplaceOpenPoseHands - underscore, no "(Legacy)" in its display name. The legacy ID is kept so old saved workflows keep loading - the whole point of this pack is that it preserves VNCCS_* identifiers. If you're building new graphs, reach for the non-legacy version; if you're maintaining an old workflow, this one keeps working.
Install
Same pack, same install: teenu/ComfyUI-Jakkanna via ComfyUI Manager (search Jakkanna) or:
cd ComfyUI/custom_nodes
git clone https://github.com/teenu/ComfyUI-Jakkanna.git
cd ComfyUI-Jakkanna
pip install -r requirements.txt
Restart after, and don't run the upstream vnccs-utils in the same instance - both register the same node IDs.
Is it worth reaching for?
Honestly, it's a stopgap from the pre-SAM era, and it shows. The cleaner modern route is a better detector (DWPose over vanilla OpenPose, which is why the ControlNet docs keep recommending it) or just using the Pose Studio + OpenPose node where hands and body come from the same source and can't disagree. But the merge logic is sound and the node is free in the pack, so when your base pose is otherwise perfect and only the hands are cursed, this is the five-second fix. You already have the vnccs pose lying around from the studio anyway.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| base_keypoints | POSE_KEYPOINT | — | |
| vnccs_keypoints | POSE_KEYPOINT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| keypoints | POSE_KEYPOINT | — |