Nodes/ComfyUI MotionDiff/SpectreImg2SMPL
ComfyUI Node

SpectreImg2SMPL

SPECTRE Image2SMPL

By Fannovel16·Created 3 years ago·Updated 2 years ago· 212
SpectreImg2SMPL
  • spectre_model
  • image
  • SMPL_MULTIPLE_SUBJECTS
  • CROPPED_FACE_IMAGE
chunk_size50

While Human4D_Img2SMPL recovers whole bodies from video, SpectreImg2SMPL recovers faces. It takes a sequence of image frames plus a loaded SPECTRE_MODEL and reconstructs a 3D face mesh for every frame - shape, expression, and pose - handed back in the same SMPL_MULTIPLE_SUBJECTS container the body path uses. If you want to capture someone's performance, drive a head with their expressions, or just turn a face track into geometry, this is the node.

It's the face-4D half of the pack, and it fits the pipeline in a familiar way: the output feeds the same multi-subject render node (Render Multiple SMPL Mesh), the multi-subject exporter, and its CROPPED_FACE_IMAGE output gives you the aligned face crops for inspection or downstream use.

How it works

Per frame it detects faces, aligns landmarks, and crops each face to a fixed 224×224 patch. Because SPECTRE uses a temporal convolution with a receptive field of five frames, the video is processed in overlapping chunks (default 50 frames) with the overlap edges dropped to avoid padding artifacts - a classic SPECTRE detail the pack faithfully ports. The model encodes each crop into 3DMM parameters and decodes them into FLAME face vertices, which are packaged like the body path's multi-subject data, complete with a focal length tuned to the 224px crop.

The inputs that matter

  • spectre_model - from SpectreFaceReconLoader.
  • image - your frames, batched.
  • chunk_size (default 50, range 10–100) - frames per processing chunk. Lower it if memory is tight (SPECTRE is chunked for exactly this reason); higher chunks are faster but hungrier.

Outputs: SMPL_MULTIPLE_SUBJECTS (face meshes per frame) and CROPPED_FACE_IMAGE (the aligned 224×224 crops).

Installation

Part of Fannovel16/ComfyUI-MotionDiff. Install via ComfyUI Manager (search "ComfyUI MotionDiff") or clone into ComfyUI/custom_nodes, install requirements, restart. The SPECTRE checkpoint auto-downloads on first use, and the pack overall is a heavy install (smplx, pyrender, timm, spacy...).

Gotchas

Naming again: the output is called SMPL, but it's faces - FLAME geometry specifically. Don't wire this into a full-body OpenPose renderer (that node raises NotImplementedError without body keypoints). Instead, render the face meshes with the multi-subject render node.

Faces that go undetected for stretches get landmark interpolation - SPECTRE fills gaps by interpolating between detected frames - but if a face is badly occluded for a long run, the reconstruction drifts and you'll see the mesh lock onto a stale expression. Shorter clips or better-lit footage help. And because the faces are reconstructed in 224px-crop space with their own camera, the rendered heads look like tightly-cropped busts, not full scenes - compose accordingly.

CategoryMotionDiff

Inputs (3)

NameTypeDefaultDescription
spectre_modelSPECTRE_MODEL
imageIMAGE
chunk_sizeINT5010–100

Outputs (2)

NameTypeDescription
SMPL_MULTIPLE_SUBJECTSSMPL_MULTIPLE_SUBJECTS
CROPPED_FACE_IMAGEIMAGE