VolumetricSMPL is a lightweight, plug-and-play extension for SMPL(-X) models that adds volumetric functionality via Signed Distance Fields (SDFs). With minimal integration—just a single line of code—users gain access to fast and differentiable SDF queries, collision detection, and self-intersection resolution.
- 🔌 Single-line integration with existing SMPL models
- ⚡ Fast and differentiable SDF queries
- 🛡️ Built-in collision detection and self-intersection resolution
- 🔄 Compatible with SMPL, SMPLH, and SMPL-X
- 🎯 Efficient interaction modeling for perception and reconstruction tasks
- 📄 Paper: arXiv
- 🎥 Video: YouTube
- 🌐 Project Page: markomih.github.io/VolumetricSMPL
- 📦 Applications: VolumetricSMPL_applications
Ensure that PyTorch and PyTorch3D are installed with GPU support. Then install VolumetricSMPL:
pip install VolumetricSMPLExtend an existing SMPL-X model with volumetric functionalities:
import smplx
from VolumetricSMPL import attach_volume
# Create a SMPL body and extend it with volumetric functionalities
# Supports SMPL, SMPLH, and SMPL-X
model = smplx.create(**smpl_parameters)
attach_volume(model)
# Forward pass
smpl_output = model(**smpl_data)
# Ensure valid SMPL variables (pose parameters, joints, and vertices)
assert model.joint_mapper is None, "VolumetricSMPL requires valid SMPL joints as input."
# Access volumetric functionalities
model.volume.query(scan_point_cloud) # Query SDF for given points
model.volume.selfpen_loss(smpl_output) # Compute self-intersection loss
model.volume.collision_loss(smpl_output, scan_point_cloud) # Compute collisions with external geometriesVolumetricSMPL extends the interface of the SMPL-X package by attaching a volumetric representation to the body model. This allows for:
- Querying signed distance fields for arbitrary points
- Accessing collision loss terms for optimization
- Self-intersection detection and resolution
- Efficient interaction modeling with 3D geometries
For further examples and use cases, check out our Applications repository.
Pretrained models are automatically fetched and loaded when you first use VolumetricSMPL. They can also be found in the dev branch inside the ./models directory.
- Python 3.7+
- PyTorch
- PyTorch3D
- SMPL-X
If you find this work useful, please cite our paper:
@inproceedings{ICCV25:VolumetricSMPL,
title={{VolumetricSMPL}: A Neural Volumetric Body Model for Efficient Interactions, Contacts, and Collisions},
author={Mihajlovic, Marko and Zhang, Siwei and Li, Gen and Zhao, Kaifeng and M{\"u}ller, Lea and Tang, Siyu},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
year={2025}
}- Marko Mihajlovic (ETH Zurich)
- Siwei Zhang (ETH Zurich)
- Gen Li (ETH Zurich)
- Kaifeng Zhao (ETH Zurich)
- Lea Müller (UC Berkeley)
- Siyu Tang (ETH Zurich)
For questions, please contact Marko Mihajlovic or raise an issue on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.
