Skip to main content

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/

teaser

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyuipc-0.0.23-cp313-cp313-win_amd64.whl (29.8 MB view details)

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.23-cp313-cp313-manylinux_2_34_x86_64.whl (29.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.23-cp312-cp312-win_amd64.whl (29.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.23-cp312-cp312-manylinux_2_34_x86_64.whl (29.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.23-cp311-cp311-win_amd64.whl (29.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.23-cp311-cp311-manylinux_2_34_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.23-cp310-cp310-win_amd64.whl (29.8 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.23-cp310-cp310-manylinux_2_34_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

Details for the file pyuipc-0.0.23-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.23-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 29.8 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

Hashes for pyuipc-0.0.23-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e12b6ac4330cdad75e0d6891ce3340e182bfb1729aab8cd1c6bd6dcb36e52b0e
MD5 c82f191fa0e1d7d4ab146d8b61dded5a
BLAKE2b-256 fc4dd983cac67abe2a38b85f16798abb7c2dad12ffbb567c2f1d5e60e48d951e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp313-cp313-win_amd64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.23-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6066ea16515322592ddf3851712a4b4ac74714ef16abd6022b79cfb13319fab9
MD5 501f2fe9e70ecf5d60590f608dd31c21
BLAKE2b-256 9700fa413b8cdc7d72b528c7f1c93f95baab9826e9ac58130bbe2cd87be69f4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.23-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 29.8 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

Hashes for pyuipc-0.0.23-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1c20a49160589617b1b49ab28cc9bba30edd2156b4044970b74163efa47f49c9
MD5 faff38d7132b38054c029e7d9dab4854
BLAKE2b-256 5d296baf252b0d1a6ae59a9cc0ae86da33dc2c0ce925e8ed388435ca5bfab73f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp312-cp312-win_amd64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.23-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 79fdd5b6764177a3358fdb23fcfc5b6fa710a6ff4071c9da9fd2976e95ccb307
MD5 cda1114ae81449ebc7b9030a1aa35dcc
BLAKE2b-256 716243672e7bfddde786228082aa2c8d5499dfc6e2ed09da700f6868ac26a434

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.23-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 29.8 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

Hashes for pyuipc-0.0.23-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9f3a56a5b0545a7da2351dca237da6f7c528635d4b9c017e0c1da68c5f49e879
MD5 ce0ab3ecdd47922c68eedbda4237eeff
BLAKE2b-256 6a13bfd30c2f55c401e3c60522e509d0e06ed8ee2fd549d8de8c4cb77aec7859

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp311-cp311-win_amd64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.23-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a51c53e0b31f9f2611af9ba853728e941cbb5d85bc45d0bf8cce80f1b906546a
MD5 ca373a4e694968e5daca13a690cedbdd
BLAKE2b-256 1d4a024c96cb39420c2213ced96a8ecd1198c4dd0c5ed7c9dec0b60eacec36e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.23-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 29.8 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

Hashes for pyuipc-0.0.23-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ae9b8d5d41d61ba45a68072fae4f0fa8d8790d3ccbd7b8cc2adb05383ae55a91
MD5 e7ef3d166880b805cf292df911a86b8b
BLAKE2b-256 a2419724d49d9b2969c638f1ff2533ba0c72850d2c3e83062c6a3baf3d68280c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp310-cp310-win_amd64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyuipc-0.0.23-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.23-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 deb2ca51abfcb32cc1f2278b4ec9e499116df316d040c08dc563087bfa08f2a3
MD5 70bd1e614d970bee18efb8408ae1547b
BLAKE2b-256 1e0fdb669dc45a7a4936fa1613c07c5226b75b336e9b1f405a0bb052a7ff7da1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.23-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: python-wheels.yml on spiriMirror/libuipc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page