ComfyUI Node

Body: NLF

The robust body workhorse — flat hands included, hands on after

By ameliacode·Created 5 months ago·Updated 2 months ago· 5
Body: NLF
  • model
  • image
  • smplx_hands
  • smplx_face
  • smplx
  • preview

Body: NLF is the "robust single-image body" estimator of this pack, and it's the one with the most honest trade-off of the bunch. NLF (Neural Localizer Fields) is genuinely solid at recovering body pose and global orientation from one photo - it's the estimator you'd trust when the image is awkward, partially framed, or the pose is unusual. But its released model is SMPL-only, so the SMPL-X output you get is built with neutral shape and flat hands. The body is the star; hands and face are the afterthoughts, by design.

That's not a flaw you work around so much as a workflow you lean into. The pack expects you to finish the job with the specialist nodes: wire Hand: WiLoR into smplx_hands and Face: SMIRK into smplx_face, and the estimator grafts their results onto its own body. The grafting is wrist-relative - hand pose lands where the body's wrists actually are, so you don't get the classic floating-hand melt.

Inputs and outputs

Required inputs are just two:

  • model - the NLF_MODEL from Load NLF.
  • image - your photo, as a normal ComfyUI IMAGE.

Optional, and this is where the workflow gets good:

  • smplx_hands - from Hand: WiLoR. Grafts hand pose (and any face the hands result carries).
  • smplx_face - from Face: SMIRK. Grafts jaw + expression, and takes precedence over smplx_hands for the face bits.

Outputs are smplx (the full SMPL-X parameter bundle - this is what you feed the SMPL-X Editor) and a preview image (a quick 512px pose render so you can sanity-check without opening the editor).

Installing

Standard pack install - ComfyUI Manager, search SMPLx Estimator, install, restart - or:

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

You need nlf_l_multi_0.3.2.torchscript in models/nlf/ (from the isarandi/nlf releases, CC-BY-NC) and the registration-walled SMPLX_NEUTRAL.npz in models/smplx/ - that second one is the classic pack blocker, see the Load SMPLx article.

Common issues

  • GPU-only. The big one. NLF doesn't run on CPU - device on the loader defaults to auto and picks the GPU, and if you don't have one, this estimator simply won't run. That's the single most common "why is my Body: NLF dead" answer. If you're CPU-bound, use Multi-HMR instead.
  • Flat hands surprise you. If your output has stiff hands and you didn't wire in WiLoR, that's expected behavior, not a bug. Either wire the hand path or pose the fingers in the SMPL-X Editor.
  • No face expression by default. Same deal - SMIRK or the editor's expression field, not a malfunction.

This is the estimator for "I just need the body and pose to be right" - the one you'd trust on messy input. Just bring your GPU, and add WiLoR/SMIRK when you want the full person.

CategorySMPLx Estimator

Inputs (4)

NameTypeDefaultDescription
modelNLF_MODEL
imageIMAGE
smplx_handsoptSMPLXOptional SMPL-X (e.g. from Hand: WiLoR) to graft hand pose + jaw + expression onto NLF's body (wrist-relative — no melt).
smplx_faceoptSMPLXOptional SMPL-X (e.g. from Face: SMIRK) to graft jaw + expression onto NLF's body. Takes precedence over smplx_hands' face.

Outputs (2)

NameTypeDescription
smplxSMPLX
previewIMAGE