ComfyUI-SMPLx-Estimator
🚀comfyui wrapper for smplx estimators
Nodes (13)
ComfyUI-SMPLx Estimator
Single-image SMPL-X estimation for ComfyUI — recover an expressive whole-body model from one photo, refine it in an interactive 3D editor, and export ControlNet maps or a mesh. Bring your own estimator: NLF (robust body), Multi-HMR (expressive whole-body), Multi-HMR2 (camera-centric multi-person, Anny→SMPL-X), WiLoR (dedicated hands), and SMIRK (dedicated face).

Load SMPLx ─smplx_model─┬─► Load NLF ─model─► Body: NLF ─┐
├─► Load Multi-HMR ─model─► Full Body: Multi-HMR ─┤
└─► Load Multi-HMR2 ─model─► Full Body: Multi-HMR2 ─┤
Load WiLoR ─model─► Hand: WiLoR ──(smplx_hands)──► Body: NLF │
Load SMIRK ─model─► Face: SMIRK ──(smplx_face)───► Body: NLF │
▼
SMPL-X Editor ─mesh_data─► Export Mesh
└─► pose / depth / normal / canny
Nodes
| Node | Description |
|---|---|
| Load SMPLx | Loads the SMPL-X body model (local folder or huggingface) → smplx_model. |
| Load NLF | Loads the NLF estimator → model. |
| Load Multi-HMR | Loads the Multi-HMR estimator → model. |
| Load Multi-HMR2 | Loads the Multi-HMR2 (Anny) estimator → model. Checkpoint auto-downloads from Naver. |
| Load WiLoR | Loads the WiLoR hand model + detector → model. |
| Load SMIRK | Loads the SMIRK expression encoder → model. |
| Body: NLF | Robust single-image body → SMPL-X (neutral shape, flat hands). Optional smplx_hands, smplx_face. |
| Full Body: Multi-HMR | One-pass expressive whole-body SMPL-X (body + hands + face). |
| Full Body: Multi-HMR2 | DETR-based multi-person detection + camera-centric mesh recovery (Anny model), bridged to SMPL-X via a registered-mesh fit (fitted betas + body + hands; largest person). Optional smplx_hands, smplx_face. |
| Hand: WiLoR | In-the-wild hand reconstruction → SMPL-X hand pose (feeds smplx_hands). |
| Face: SMIRK | Dedicated face expression capture → SMPL-X jaw + expression (feeds smplx_face). |
| SMPL-X Editor | Interactive 3D editor: drag body/finger joints (IK), edit betas/expression, render pose/depth/normal/canny from the viewport. Outputs mesh_data. |
| Export Mesh | Writes mesh_data to obj / ply / glb in the output folder → file_path. |
Installation
ComfyUI Manager (recommended)
- Open ComfyUI Manager
- Search for
SMPLx Estimator - Click Install, then restart ComfyUI
Manual
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
Restart ComfyUI after installation. No CUDA build tools or PyTorch3D needed — the control-map renderer is pure NumPy/OpenCV and runs on any torch/CUDA.
Models & weights
Weights are not bundled (size + licensing). Download what you need and place it
under ComfyUI/models/<folder>/. The loaders auto-resolve from there (model_source = local),
or fetch from a HuggingFace repo (model_source = huggingface, with an optional hf_token).
| Model | File(s) | Place in | License | Source |
|---|---|---|---|---|
| SMPL-X (required) | SMPLX_NEUTRAL.npz (+ MALE/FEMALE) | models/smplx/ | MPI — registration | smpl-x.is.tue.mpg.de |
| NLF | nlf_l_multi_0.3.2.torchscript | models/nlf/ | CC-BY-NC | isarandi/nlf |
| Multi-HMR | multiHMR_896_L.pt | models/multihmr/ | NAVER non-commercial | naver/multi-hmr (accept license) |
| Multi-HMR2 | multihmr2.pt | models/multihmr2/ | NAVER non-commercial | auto-download from naver/multi-hmr2; Anny↔SMPL-X data fetched by anny (non-commercial) |
| WiLoR | wilor_final.ckpt, detector.pt | models/wilor/ | CC-BY-NC-ND | WiLoR on HuggingFace |
| MANO (for WiLoR) | MANO_LEFT.pkl, MANO_RIGHT.pkl | <node>/vendor/WiLoR/mano_data/ | MPI — registration | mano.is.tue.mpg.de |
| SMIRK | SMIRK_em1.pt | models/smirk/ | MIT (code) · drives FLAME (non-commercial) | georgeretsi/smirk |
SMPL-X and MANO are registration-walled and cannot be auto-downloaded — register, then place the files manually. The loaders raise a clear message pointing you here if a file is missing.
Usage
- Add Load SMPLx (defaults to
models/smplx/). Connect itssmplx_modeloutput. - Add an estimator loader + estimator:
- Load NLF → Body: NLF for robust body/global pose (GPU-only), or
- Load Multi-HMR → Full Body: Multi-HMR for body + hands + expression in one pass (runs on CPU too), or
- Load Multi-HMR2 → Full Body: Multi-HMR2 for the newest camera-centric multi-person model (Anny → SMPL-X registered-mesh fit; fitted shape + body + hands, largest person in view). Checkpoint auto-downloads on first load.
- (Optional, for sharp hands with NLF) Load WiLoR → Hand: WiLoR, and wire its output into Body: NLF's
smplx_hands. (Optional, for facial expression with NLF) Load SMIRK → Face: SMIRK on a face crop, and wire its output into Body: NLF'ssmplx_face. - Feed the estimator's
smplxinto the SMPL-X Editor:- Drag body / finger joints (IK re-solves), edit
betas(shape) andexpression. - Orbit the camera — the
pose/depth/normal/cannyoutputs render from that viewpoint (ControlNet-ready).
- Drag body / finger joints (IK re-solves), edit
- Connect the editor's
mesh_datato Export Mesh to save an.obj/.ply/.glb.
Quick start: drag
example_workflows/smplx_multihmr_example.jsoninto ComfyUI, drop in your own image (replaceexample.png), and Queue.
License
Wrapper code is MIT (LICENSE). The vendored estimators and model weights keep their own non-commercial licenses (see the Models & weights table), so the package and its outputs are for research / non-commercial use only. Please cite and comply with each original.
Attribution
This package vendors third-party estimator source (cloned into vendor/ by install.py) and loads
third-party weights, each under its own license:
- Multi-HMR — NAVER Corp. · CC BY-NC-SA 4.0 · repo · Multi-HMR (ECCV 2024)
- Multi-HMR 2 — NAVER Corp. · Naver license (non-commercial ckpt) · repo · Multi-HMR 2 (arXiv 2606.14841) · body model: Anny (Apache 2.0 code; SMPL-X topology data non-commercial)
- WiLoR — Potamias et al. · CC BY-NC-ND 4.0 (no derivatives) · repo · WiLoR (2024)
- NLF — Sárándi & Pons-Moll · CC BY-NC 4.0 · repo · Neural Localizer Fields (NeurIPS 2024)
- SMIRK — Retsinas et al. · MIT code (drives non-commercial FLAME) · repo · SMIRK (CVPR 2024)
- SMPL-X / MANO — Max Planck Institute — registration-walled · smpl-x · mano
Acknowledgements
- 3D viewer based on comfy-3d-viewers; editor UI inspired by ComfyUI-SAM3DBody
- Thanks to the model authors above for sharing their work with the research community.