> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comfy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# SAM3DBody_Render - ComfyUI Built-in Node Documentation

> Renders 3D body pose data into an image using a selectable style.

Renders 3D body pose data into an image using a selectable style. The node accepts pose data from the SAM3D body tracker (MHR) or from an external Y-up rig such as Kimodo, and can composite the result over an optional background image (or a black canvas when none is provided). Available render styles include a shaded 3D mesh, a binary silhouette, 2D and 3D OpenPose-style skeletons, and SCAIL-style body capsules.

## Inputs

### Common Inputs

| Parameter      | Description                                                                                                                                                                                                                                            | Data Type                             | Required | Range                                                                         |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | -------- | ----------------------------------------------------------------------------- |
| `render_style` | Render mode. 'mesh' = 3D MHR mesh rasterized through the camera. 'silhouette' = binary mask of the mesh. 'openpose\_2d' = flat 2D skeleton. 'openpose\_3d' = OpenPose skeleton as flat-shaded 3D model. 'scail' = SCAIL 3D capsules. (default: "mesh") | DYNAMIC\_COMBO                        | Yes      | "mesh"<br />"silhouette"<br />"openpose\_2d"<br />"openpose\_3d"<br />"scail" |
| `pose_data`    | MHR pose data, or external Y-up rig pose data (KimodoSample). All render styles work for external rigs that carry OpenPose joint maps in their `_skeleton_override` (KimodoSample does).                                                               | MHR\_POSE\_DATA or KIMODO\_POSE\_DATA | Yes      | —                                                                             |
| `background`   | Per-frame background. Omitted = black canvas.                                                                                                                                                                                                          | IMAGE                                 | No       | —                                                                             |
| `width`        | Output width in pixels. 0 = use pose data's native image\_size. If only one of width/height is set, the other is derived preserving the original aspect. (default: 0)                                                                                  | INT                                   | No       | 0 to 16384, step 8                                                            |
| `height`       | Output height in pixels. 0 = use pose data's native image\_size. If only one of width/height is set, the other is derived preserving the original aspect. (default: 0)                                                                                 | INT                                   | No       | 0 to 16384, step 8                                                            |
| `camera_info`  | Free 6DOF camera override. When wired, the pose is re-projected through this camera (position/target/zoom/rotation/FoV) instead of the predicted one.                                                                                                  | LOAD\_3D\_CAMERA                      | No       | —                                                                             |

### Mesh Inputs

These parameters appear when `render_style` is "mesh".

| Parameter                | Description                                                                                                                                                                                                                                                                                      | Data Type      | Required | Range                                                                                                            |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `shader`                 | Preset shader. 'normals' = current surface normal in camera space (OpenGL Y+ normal-map convention: +X→R, +Y→G, +Z→B). 'rainbow' = RealisDance style body-Y jet; the 'rainbow\_face\_\*' variants override face verts with normal/per-region colors; 'depth' = linear gray. (default: "default") | DYNAMIC\_COMBO | No       | "default"<br />"normals"<br />"rainbow"<br />"rainbow\_face\_normal"<br />"rainbow\_face\_semantic"<br />"depth" |
| `rainbow_tilt_z`         | Rotate rainbow jet axis around Z (forward). Differentiates left/right. Only available when `shader` is "rainbow", "rainbow\_face\_normal", or "rainbow\_face\_semantic". (default: -35.0)                                                                                                        | FLOAT          | No       | -90.0 to 90.0, step 0.5                                                                                          |
| `rainbow_tilt_x`         | Rotate rainbow jet axis around X (right). Differentiates front/back. Only available when `shader` is "rainbow", "rainbow\_face\_normal", or "rainbow\_face\_semantic". (default: 0.0)                                                                                                            | FLOAT          | No       | -90.0 to 90.0, step 0.5                                                                                          |
| `opacity`                | Mesh alpha over the background image, or over black when none is connected. (default: 1.0)                                                                                                                                                                                                       | FLOAT          | No       | 0.0 to 1.0, step 0.01                                                                                            |
| `person_palette_falloff` | Per-person desaturation toward white: track k gets a (1 - falloff^k) pastel mix (SCAIL 'softer second person'). 1.0 = off. (default: 0.6)                                                                                                                                                        | FLOAT          | No       | 0.1 to 1.0, step 0.05                                                                                            |
| `region`                 | 'hands\_only' filters faces via the precomputed `hand_vert_mask` (LBS weights against canonical hand KPs) — isolates the hand mesh for debugging. Falls back to full mesh if the mask is missing. (default: "full\_body")                                                                        | COMBO          | No       | "full\_body"<br />"hands\_only"                                                                                  |

### Silhouette Inputs

When `render_style` is "silhouette", the node renders a binary mask of the 3D mesh. This mode has no additional parameters.

### OpenPose 2D Inputs

These parameters appear when `render_style` is "openpose\_2d".

| Parameter                | Description                                                                                                                                                                                             | Data Type | Required | Range                                     |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | -------- | ----------------------------------------- |
| `marker_radius_px`       | Body keypoint dot radius (px). (default: 4)                                                                                                                                                             | INT       | No       | 1 to 32, step 1                           |
| `stick_width_px`         | Body limb ellipse half-width (px). DWPose default = 4. (default: 4)                                                                                                                                     | INT       | No       | 1 to 32, step 1                           |
| `limb_alpha`             | Per-limb alpha. DWPose default = 0.6. (default: 0.6)                                                                                                                                                    | FLOAT     | No       | 0.0 to 1.0, step 0.05                     |
| `face_style`             | 'full' = all face landmarks (sapiens-238 if present, else rig-fallback \~30). 'eyes\_mouth' = rig-fallback subset (\~12 dots: eyes + outer lips only). 'disabled' = no face dots. (default: "disabled") | COMBO     | No       | "disabled"<br />"full"<br />"eyes\_mouth" |
| `hand_style`             | Draw 21+21 hand keypoints + sticks. 'disabled' = no hands. 'dwpose' = solid-blue dots; 'openpose' = rainbow dots. (default: "disabled")                                                                 | COMBO     | No       | "disabled"<br />"dwpose"<br />"openpose"  |
| `person_palette_falloff` | Per-person desaturation: track k blends toward white by 1 - falloff^k. Track 0 stays vivid; 1.0 disables falloff. (default: 0.6)                                                                        | FLOAT     | No       | 0.1 to 1.0, step 0.05                     |

### OpenPose 3D Inputs

These parameters appear when `render_style` is "openpose\_3d".

| Parameter                | Description                                                                                                                      | Data Type | Required | Range                    |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | --------- | -------- | ------------------------ |
| `radius_m`               | Limb capsule radius in meters (thin = stick-like). (default: 0.015)                                                              | FLOAT     | No       | 0.004 to 0.1, step 0.001 |
| `include_hands`          | Draw 21+21 hand keypoints as 3D capsules. (default: True)                                                                        | BOOLEAN   | No       | True or False            |
| `person_palette_falloff` | Per-person desaturation: track k blends toward white by 1 - falloff^k. Track 0 stays vivid; 1.0 disables falloff. (default: 0.6) | FLOAT     | No       | 0.1 to 1.0, step 0.05    |

### SCAIL Inputs

These parameters appear when `render_style` is "scail".

| Parameter                | Description                                                                                                                                                                                                                                        | Data Type | Required | Range                                     |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | -------- | ----------------------------------------- |
| `radius_m`               | Capsule radius in meters (SCAIL reference: \~0.022 m). (default: 0.022)                                                                                                                                                                            | FLOAT     | No       | 0.005 to 0.2, step 0.001                  |
| `hand_style`             | Composite 2D OpenPose hands on top of the 3D capsule body (matches SCAIL — no 3D hand capsules). 'disabled' = no hands. 'dwpose' = solid-blue hand dots; 'openpose' = rainbow dots. Sticks stay rainbow per-finger either way. (default: "dwpose") | COMBO     | No       | "disabled"<br />"dwpose"<br />"openpose"  |
| `face_style`             | 'full' = all face landmarks (sapiens-238 if present, else rig-fallback \~30). 'eyes\_mouth' = rig-fallback subset (\~12 dots: eyes + outer lips only). 'disabled' = no face dots. (default: "disabled")                                            | COMBO     | No       | "disabled"<br />"full"<br />"eyes\_mouth" |
| `person_palette_falloff` | Per-person desaturation: track k blends toward white by 1 - falloff^k. Track 0 stays vivid; 1.0 disables falloff. (default: 0.6)                                                                                                                   | FLOAT     | No       | 0.1 to 1.0, step 0.05                     |

### Notes

* If both `width` and `height` are 0, the output uses the pose data's native image size. If only one of them is set, the other is derived while preserving the original aspect ratio. A connected `background` is resized to match the render resolution.
* When `camera_info` is connected, the pose is re-projected through that camera instead of the predicted one.
* In mesh mode, `rainbow_tilt_z` and `rainbow_tilt_x` are only available when `shader` is set to "rainbow", "rainbow\_face\_normal", or "rainbow\_face\_semantic".
* In mesh mode, when `region` is "hands\_only", the hand region filter requires the pose data to contain a hand vertex mask; if the mask is missing, the full mesh is rendered instead.
* In scail mode, hands are always drawn as 2D overlays; there are no 3D hand capsules.
* When the output resolution differs from the pose data's native resolution, the openpose\_2d marker and stick sizes are scaled proportionally.
* If the background has fewer frames than the pose data, the last background frame is reused for the remaining frames.
* The output contains one frame per input pose frame. If the pose data contains no frames, a single black image is returned.

## Outputs

| Output Name | Description                                                                                                                                                                                                               | Data Type |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- |
| `image`     | The rendered frames: the pose data drawn in the selected render style, composited over the background when one is connected, or over black otherwise. One frame per input pose frame, returned as a single batched image. | IMAGE     |

> This documentation was AI-generated. If you find any errors or have suggestions for improvement, please feel free to contribute! [Edit on GitHub](https://github.com/Comfy-Org/embedded-docs/blob/main/comfyui_embedded_docs/docs/SAM3DBody_Render/en.md)

***

**Source fingerprint (SHA-256):** `96556283cf07727e6b4bb3549537bf925ed771bab8607f65c93ab54a5f0e9ba5`
