Nodes/Jakkanna/Jakkanna Replace OpenPose Hands
ComfyUI Node

Jakkanna Replace OpenPose Hands

Swap in hands that actually look like hands

By teenu·Created 2 months ago·Updated 2 months ago· 6
Jakkanna Replace OpenPose Hands
  • base_keypoints
  • vnccs_keypoints
  • keypoints

VNCCS_ReplaceOpenPoseHands is a small compositor for OpenPose keypoint streams, and it exists because of a very specific pain: detected hands are often garbage, while a mannequin's hands are whatever you deliberately posed them to be.

OpenPose hand keypoints are 21 joints per hand - the KB's ControlNet notes list 21 per hand, 70 face landmarks, 17 body joints - and anyone who's run OpenPose detection on a real photo knows the hands come back mangled half the time. Fingers merged, joints in the wrong place, a grip that reads as a blob. Meanwhile, if you've posed a VNCCS/Jakkanna mannequin in the Pose Studio, the hands are exactly what you set them to be. This node takes a base pose and overwrites the parts you trust less with the parts you trust more.

Mechanically, it deep-copies base_keypoints and, frame by frame, copies from the VNCCS stream:

  • both hand_left_keypoints_2d and hand_right_keypoints_2d - 63 floats each, i.e. 21 keypoints × x/y/confidence - but only when a full 63-value hand is present
  • two body segments at OpenPose indices 12:15 and 21:24 - in the standard body layout that's the left hip–knee–ankle chain and the heel/toe region

If either stream is missing hands for a frame, it leaves the base as-is rather than inventing data. The streams are matched frame by frame and it stops at whichever is shorter.

Inputs and output:

  • base_keypoints - POSE_KEYPOINT; the pose you want to keep as the foundation
  • vnccs_keypoints - POSE_KEYPOINT; the pose whose hands (and arm-ish segments) you want
  • keypoints - the merged POSE_KEYPOINT, ready to feed a ControlNet OpenPose preconditioner

The direction is worth internalizing: the node keeps the base body and pulls the hands from the VNCCS stream. The typical setup is base = detection from a reference photo, VNCCS = mannequin pose, and the output gets you a photo-derived body with deliberate, readable hands.

A couple of honest notes. First, this is a compatibility node: it ships under the original VNCCS_* identifier so old VNCCS workflows keep loading in the Jakkanna fork, and the fork keeps a separate legacy registration (VNCCSReplaceOpenPoseHands) marked deprecated. Use the underscore one. Second, the README's own advice applies if you're starting from zero: if you only need lightweight 2D keypoint editing and don't live in VNCCS workflows, a dedicated OpenPose editor is a smaller fit than this whole stack.

Install: part of the Jakkanna pack - ComfyUI Manager, search "Jakkanna", or:

cd ComfyUI/custom_nodes
git clone https://github.com/teenu/ComfyUI-VNCCS-Utils-Maintained
cd ComfyUI-VNCCS-Utils-Maintained
pip install -r requirements.txt

Restart after. And the one rule that applies to every node in this pack: don't install it alongside the upstream vnccs-utils in the same ComfyUI instance - the two register overlapping node names and conflict. The fork exists precisely so existing VNCCS graphs keep working; run one or the other, not both.

CategoryJakkanna/pose

Inputs (2)

NameTypeDefaultDescription
base_keypointsPOSE_KEYPOINT
vnccs_keypointsPOSE_KEYPOINT

Outputs (1)

NameTypeDescription
keypointsPOSE_KEYPOINT