ComfyUI Node

Hand: WiLoR

Give your flat-hand estimates real fingers

By ameliacode·Created 5 months ago·Updated 2 months ago· 5
Hand: WiLoR
  • model
  • image
  • smplx_hands
conf0.30

Hand: WiLoR is the node you add the moment you look at a Body: NLF result and notice the hands look like mannequin mitts. It's the execution end of the WiLoR path: the detector finds both hands in the image, the reconstructor recovers each one's pose, and out comes an smplx_hands result you graft onto a body estimator's matching input.

The key detail is in the wiring: WiLoR outputs a partial SMPL-X - just left_hand_pose and right_hand_pose for whichever hands were actually detected. There's no body in it, no mesh, nothing else. So this node doesn't stand alone; its only job is to feed Body: NLF or Full Body: Multi-HMR2 through their smplx_hands input. The body estimator then grafts the hand pose onto its own body, and because it's applied wrist-relative, the fingers end up where the hands actually are instead of melting into the forearm.

The inputs that matter

  • model - the WILOR_MODEL output from Load WiLoR. Wire that loader in or this node does nothing.
  • image - the same photo you're feeding the body estimator. WiLoR scans the whole frame for hands, so you don't need crops.
  • conf - hand detection confidence, default 0.3 (range 0.05–0.9). This is the knob you'll actually touch. If a hand is missed, drop it a notch; if you're getting phantom hands from clutter, raise it. On the default and a decent photo, both hands usually come through.

The output is a single smplx_hands connection. Plug it into the smplx_hands input of your body estimator.

Installing

The pack install is the standard one (ComfyUI Manager, search SMPLx Estimator, install, restart), and the full manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/ameliacode/ComfyUI-SMPLx-Estimator.git
cd ComfyUI-SMPLx-Estimator
pip install -r requirements.txt
python install.py

The part that bites: this path needs wilor_final.ckpt + detector.pt in models/wilor/ and MANO_LEFT.pkl / MANO_RIGHT.pkl in vendor/WiLoR/mano_data/ - and MANO is registration-walled (mano.is.tue.mpg.de). Missing MANO files are the classic "loads fine, explodes on first run" failure. If your first queue just dies, that's the first thing to check.

Common issues

  • One hand detected, not two. The node prints which sides it found ([wilor] hands detected: left/right/none). If one hand is missing, lower conf and re-run. Hands in shadow, cut off at frame edge, or overlapping the body are the usual culprits - WiLoR is good, but it's not magic.
  • No hand detected at all usually means the files are wrong, not the parameters. Verify the ckpt/detector/MANO quartet first.
  • Nothing visibly changes. Make sure you actually wired smplx_hands into the body estimator. It's an optional input - the graph runs fine without it, which is exactly why forgetting it is silent.

That's the whole node. Loader → this → body estimator, and your flat-hands problem is gone. If you're on the Multi-HMR path you don't need it (that estimator gets hands in one pass), but for NLF it's the difference between a mannequin and a person.

CategorySMPLx Estimator

Inputs (3)

NameTypeDefaultDescription
modelWILOR_MODEL
imageIMAGE
confFLOAT0.300.05–0.9Hand detection confidence threshold.

Outputs (1)

NameTypeDescription
smplx_handsSMPLX