A Cross-Platform Modern C++20 Library of Unified Incremental Potential Contact (CUDA 12.6+ required)
Project description
libuipc
A Cross-Platform Modern C++20 Library of Unified Incremental Potential Contact.
Both C++ and Python API are provided!
Website: ➡️ https://spirimirror.github.io/libuipc-web/
Documentation: ➡️ https://spirimirror.github.io/libuipc-doc/
Samples: ➡️ https://github.com/spiriMirror/libuipc-samples/
Introduction
Libuipc is a library that offers a unified GPU incremental potential contact framework for simulating the dynamics of rigid bodies, soft bodies, cloth, and threads, and their couplings. It ensures accurate, penetration-free frictional contact and is naturally differentiable. Libuipc aims to provide robust and efficient forward and backward simulations, making it easy for users to integrate with machine learning frameworks, inverse dynamics, robotics, and more.
We are actively developing Libuipc and will continue to add more features and improve its performance. We welcome any feedback and contributions from the community!
Why Libuipc
- Easy & Powerful: Libuipc offers an intuitive and unified approach to creating and accessing vivid simulation scenes, supporting a variety of objects and constraints that can be easily added.
- Fast & Robust: Libuipc is designed to run fully in parallel on the GPU, achieving high performance and enabling large-scale simulations. It features a robust and accurate frictional contact model that effectively handles complex frictional scenarios without penetration.
- High Flexibility: Libuipc provides APIs in both Python and C++ and supports both Linux and Windows systems.
- Fully Differentiable: Libuipc provides differentiable simulation APIs for backward optimizations. (Coming Soon)
|
|
|
Key Features
- Finite Element-Based Deformable Simulation
- Rigid & Soft Body Strong Coupling Simulation
- Penetration-Free & Accurate Frictional Contact Handling
- User Scriptable Animation Control
- Fully Differentiable Simulation (Diff-Sim Coming Soon)
News
2026-2-13: Libuipc now supports Cursor AI-assisted development! Check out .cursor/ for built-in commands (build, test, commit, PR workflows) and rules (C++ style, project structure, commit conventions).
2026-2-7: UIPC now supports PyPI install with pip install pyuipc. For the early test version, we support Win/Linux, Python 3.10–3.13 with CUDA 12.8.
2025-11-01: The prototype implementation of Libuipc has been open-sourced (source code) and serves as the performance benchmark for comparisons with our paper.
2025-5-23: StiffGIPC will be presented at Siggraph 2025, and Libuipc v1.0.0 will be released soon!
2024-11-25: Libuipc v0.9.0 (Alpha) is published! We are excited to share our work with the community. This is a preview version, if you have any feedback or suggestions, please feel free to contact us! Issues and PRs are welcome!
Citation
If you use Libuipc in your project, please cite our works:
@article{stiffgipc2025,
author = {Huang, Kemeng and Lu, Xinyu and Lin, Huancheng and Komura, Taku and Li, Minchen},
title = {StiffGIPC: Advancing GPU IPC for Stiff Affine-Deformable Simulation},
year = {2025},
publisher = {Association for Computing Machinery},
volume = {44},
number = {3},
issn = {0730-0301},
doi = {10.1145/3735126},
journal = {ACM Trans. Graph.},
month = may,
articleno = {31},
numpages = {20}
}
@article{gipc2024,
author = {Huang, Kemeng and Chitalu, Floyd M. and Lin, Huancheng and Komura, Taku},
title = {GIPC: Fast and Stable Gauss-Newton Optimization of IPC Barrier Energy},
year = {2024},
publisher = {Association for Computing Machinery},
volume = {43},
number = {2},
issn = {0730-0301},
doi = {10.1145/3643028},
journal = {ACM Trans. Graph.},
month = {mar},
articleno = {23},
numpages = {18}
}
CREDIT
This project builds upon the GPU IPC project, originally developed and continuously optimized by Dr. Kemeng Huang. The work is led by Dr. Kemeng Huang and Professor Taku Komura (The University of Hong Kong), in collaboration with Professor Minchen Li (Carnegie Mellon University). With comprehensive support from TransGP, the project involves the reconstruction and encapsulation of the original technology to enhance its usability and scalability across various application scenarios. We would also like to extend our sincere gratitude to the many contributors from the open-source community, with special thanks to Xinyu Lu, who initially worked with us during his time at TransGP and has continued to help maintain the project even after leaving.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyuipc-0.0.12-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 24.4 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22350f783cb1df8a5d0eeeeae39059c912be8ec559dc63649e60b4c77e5d2f3b
|
|
| MD5 |
3b310cae85b00867051fd373b55b7d75
|
|
| BLAKE2b-256 |
fb2d8cc5f6e3461e36b4862c797d0a36108bdc0f30e2ed6308896661056a251f
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp313-cp313-win_amd64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp313-cp313-win_amd64.whl -
Subject digest:
22350f783cb1df8a5d0eeeeae39059c912be8ec559dc63649e60b4c77e5d2f3b - Sigstore transparency entry: 1050483795
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 23.4 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50a436b72b4c8355211e429d50cb53ceaecf4e068024a016738b51adc4e84a1f
|
|
| MD5 |
0d789e8894d921473da750d1fb7770ae
|
|
| BLAKE2b-256 |
3563094eaeccff66de427af3d13300b7f951935c74b2d6a6f395cbf92d552ade
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp313-cp313-manylinux_2_34_x86_64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp313-cp313-manylinux_2_34_x86_64.whl -
Subject digest:
50a436b72b4c8355211e429d50cb53ceaecf4e068024a016738b51adc4e84a1f - Sigstore transparency entry: 1050483788
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 24.5 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9379c6b226fd4c523f32ac0ce05dde9bc252de8b389e6f1fa5241ca2b6be396e
|
|
| MD5 |
8c8ab3a9359b9a8f516d7297c2e8a62f
|
|
| BLAKE2b-256 |
7f4b84255ee8eb35805ec4d8ff509114cc95dca86db2b42db79b2f4f0287ef11
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp312-cp312-win_amd64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp312-cp312-win_amd64.whl -
Subject digest:
9379c6b226fd4c523f32ac0ce05dde9bc252de8b389e6f1fa5241ca2b6be396e - Sigstore transparency entry: 1050483792
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 23.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00debdb567dd251f30a8e2bec8fbce7bd3e2b1317da6e8144555a2f6642d217e
|
|
| MD5 |
2eca2d52ac3047e2848565914c9e168c
|
|
| BLAKE2b-256 |
92050fe5d8c51b05abdaca1a05fcf52f246db6b82655e29fc14cfb428b574f72
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp312-cp312-manylinux_2_34_x86_64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp312-cp312-manylinux_2_34_x86_64.whl -
Subject digest:
00debdb567dd251f30a8e2bec8fbce7bd3e2b1317da6e8144555a2f6642d217e - Sigstore transparency entry: 1050483799
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 24.4 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
292596712adfd8a837afcaa57050228bf26e6383dad7dfb1e72f45ad6b4a5718
|
|
| MD5 |
ae92a8d8f3f7ad26094338712968d4cf
|
|
| BLAKE2b-256 |
d4ccc60d6416f504dd0e33300c7f81ce47de4b7ee37ef61168bb679a5ecf9e3b
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp311-cp311-win_amd64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp311-cp311-win_amd64.whl -
Subject digest:
292596712adfd8a837afcaa57050228bf26e6383dad7dfb1e72f45ad6b4a5718 - Sigstore transparency entry: 1050483807
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 23.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39290ebb947d913a1144309ceff0971eb2167dbe00d68ceca16a8f1ad285dde3
|
|
| MD5 |
2ea2b3acbf897e351cfaccd37f1e1efb
|
|
| BLAKE2b-256 |
b37fa061e9d9a3ae8f1f972f1f22eb75699b60d1676c0faca9288374617089a3
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp311-cp311-manylinux_2_34_x86_64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp311-cp311-manylinux_2_34_x86_64.whl -
Subject digest:
39290ebb947d913a1144309ceff0971eb2167dbe00d68ceca16a8f1ad285dde3 - Sigstore transparency entry: 1050483790
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 24.4 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8c12d8b8bb1c3daf5bf8c2024b333d5d8f17a3652967c1af3f0d5586b27af54
|
|
| MD5 |
1b3f9a9ce77ad329552a15cf090fa00e
|
|
| BLAKE2b-256 |
78c5768277cece7343789962c44986f2c921db47f5fc5550b3fbd02e3134a4ef
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp310-cp310-win_amd64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp310-cp310-win_amd64.whl -
Subject digest:
c8c12d8b8bb1c3daf5bf8c2024b333d5d8f17a3652967c1af3f0d5586b27af54 - Sigstore transparency entry: 1050483794
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pyuipc-0.0.12-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pyuipc-0.0.12-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 23.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
782e7ae76cee40084d5181ace0714892d0150f54ca6e41c616702c7497f73f2d
|
|
| MD5 |
b417b73b4220060340f5e6a3c4e38f4a
|
|
| BLAKE2b-256 |
3d2299989c64cd65cc01ceae5985fbc31d2482b3cc52c23f7c3d127a22d52b70
|
Provenance
The following attestation bundles were made for pyuipc-0.0.12-cp310-cp310-manylinux_2_34_x86_64.whl:
Publisher:
python-wheels.yml on spiriMirror/libuipc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyuipc-0.0.12-cp310-cp310-manylinux_2_34_x86_64.whl -
Subject digest:
782e7ae76cee40084d5181ace0714892d0150f54ca6e41c616702c7497f73f2d - Sigstore transparency entry: 1050483793
- Sigstore integration time:
-
Permalink:
spiriMirror/libuipc@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Branch / Tag:
refs/tags/v0.0.12 - Owner: https://github.com/spiriMirror
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@3f9ae7aa4711fd5087076ffe8d5a27497d005c03 -
Trigger Event:
release
-
Statement type: