SAM 3D Body: Process Image
Turn one photo of a person into a posed 3D mesh
- model
- image
- mask
- mesh_data
- skeleton
- debug_image
This is the node that actually does the thing this whole pack is named for: feed it one photo of a person, get back a 3D mesh in the same pose. SAM3DBodyProcess is the plain, single-person version - detect the person, run SAM 3D Body's inference, done. If you've got one clean shot of one person and just want the mesh, this is the node you want, not the Advanced variant.
Full-body mesh recovery from a single image used to require photogrammetry rigs or multi-view capture. Meta's SAM 3D Body collapses that to one photo, at the cost of accuracy - what you get is a shape-and-pose estimate, not a scan. One person testing it put it bluntly on the release thread: pose extraction is genuinely good, but the mesh "doesn't look like the original at all." Treat the output as a mannequin standing in the right pose, not a digital twin, and it'll do exactly what you need.
How it works
Point it at an image, and it first has to find the person before it can do anything with them - that's what bbox_threshold controls, a detection confidence cutoff. Once it's confident it's found a person, it runs full SAM 3D Body inference and hands back a mesh, a skeleton, and a debug render so you can sanity-check what it saw before spending time downstream.
The inputs and outputs that matter
model(SAM3D_MODEL) - fromLoadSAM3DBodyModel. Required, obviously; nothing runs without it.image(IMAGE) - your source photo.bbox_threshold(default0.8, range 0–1) - the person-detection confidence floor. This is the knob you'll actually touch. If the node isn't finding your subject in a cluttered or low-contrast photo, lower it; if it's picking up phantom people in the background, raise it.inference_type(defaultfull) - a mode selector; leave it on the default unless you have a specific reason to change it.mask(MASK, optional) - hand it a mask if you've already isolated the person yourself (say, from a segmenter earlier in your graph) and want to skip relying on the built-in detector entirely.
Three outputs come back: mesh_data (SAM3D_OUTPUT) is the mesh itself - wire it into SAM3DBodyVisualize, SAM3DBodyExportMesh, SAM3DBodyExportFBX, or SAM3DBodyGetVertices. skeleton (SKELETON) is the pose data separated out - save it with SAM3DBodySaveSkeleton if what you actually want is a reusable pose rather than a full mesh. debug_image (IMAGE) is a quick render showing what the node detected, so you don't have to guess whether it locked onto the right person before you commit to an export.
How to install it
Through ComfyUI Manager: search SAM3DBody, install, restart. Manual route if you want more control over the install:
cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-SAM3DBody.git
cd ComfyUI-SAM3DBody
pip install -r requirements.txt --upgrade
python install.py
You'll also need LoadSAM3DBodyModel upstream to pull Meta's checkpoint - that's where the Hugging Face gated-access wall lives, not here, so if this node errors out with a missing-model complaint, that's the node to go check first.
Common issues & troubleshooting
Detection misses the person entirely. Lower bbox_threshold in steps of 0.05–0.1. Backlit subjects, odd crops, and busy backgrounds all push detection confidence down.
The mesh is nude and has no texture. This isn't a bug, it's what the model outputs - shape and pose, no clothing, no surface color. If you need a textured, clothed result, this node gets you the geometry and pose; texturing is a separate step outside this pack.
Output looks plausible but not like the photo. Expect this at default settings - SAM 3D Body is a parametric-body estimator, not a scanner. The pose is usually the reliable part; the exact body shape and proportions are the part to sanity-check against debug_image before you build anything further on top.
Multiple people in frame and only one gets processed, or results look wrong. This node is single-person by design. For a photo with more than one person, use SAM3DBodyProcessMultiple instead, which takes per-person masks rather than relying on one bounding box.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | SAM3D_MODEL | Loaded SAM 3D Body model from Load node | |
| image | IMAGE | Input image containing human subject | |
| bbox_threshold | FLOAT | 0.800–1 | Confidence threshold for human detection bounding boxes |
| inference_type | COMBO | full | full: body+hand decoders, body: body decoder only, hand: hand decoder only |
| maskopt | MASK | Optional segmentation mask to guide reconstruction |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| mesh_data | SAM3D_OUTPUT | — |
| skeleton | SKELETON | — |
| debug_image | IMAGE | — |