Hand: WiLoR
Give your flat-hand estimates real fingers
- model
- image
- smplx_hands
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_MODELoutput 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, lowerconfand 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_handsinto 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | WILOR_MODEL | — | |
| image | IMAGE | — | |
| conf | FLOAT | 0.300.05–0.9 | Hand detection confidence threshold. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| smplx_hands | SMPLX | — |