One canonical rig for SMPL, MHR, and friends
SOMA maps incompatible parametric body models onto a single shared topology so you can mix identity sources and pose data without writing bespoke adapters.
What it does
SOMA is a canonical body topology and rig that acts as a universal pivot for parametric human models. It takes five incompatible identity models—SMPL, SMPL-X, MHR, Anny, and GarmentMeasurements—each with its own mesh topology and joint hierarchy, and maps their rest shapes onto a single shared representation. The result is one animation pipeline that can drive any supported identity model, letting you mix and match identity sources and pose data at inference time without custom adapters.
The interesting bit
The project does not replace existing models; it absorbs them. Because everything lands on the same canonical topology, SOMA can even apply pose-dependent corrective deformations to models that never provided them in the first place, such as Anny and GarmentMeasurements. The entire pipeline stays end-to-end differentiable and runs GPU-accelerated through NVIDIA Warp.
Key highlights
- Supports five identity models out of the box: MHR (default), Anny (specialized for children), SMPL/SMPL-X, a proprietary SOMA-shape PCA model with 128 coefficients, and GarmentMeasurements trained on the CAESAR dataset.
- Provides pose parameter conversion tools for SMPL and MHR with two solvers: a fast analytical inverse-LBS method and a slower but controllable autograd forward-kinematics optimizer.
- Already adopted by downstream projects including video pose estimation (GEM), text-to-motion generation (Kimodo), and physically simulated humanoid training (ProtoMotion).
- Assets auto-download from HuggingFace on first use, and the package is available on PyPI as
py-soma-x.
Caveats
- SMPL and SMPL-X support requires separately licensed model files and a brittle
chumpydependency. - Pose correctives are labeled Beta.
- GarmentMeasurements support requires manual conversion of PCA data before use.
Verdict
Worth a look if you are building animation, reconstruction, or robotics pipelines that need to juggle multiple parametric body models. Skip it if you only ever touch one model and have no need to mix identity sources and motion data.