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.21-cp313-cp313-win_amd64.whl (29.4 MB view details)

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.21-cp313-cp313-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.21-cp312-cp312-win_amd64.whl (29.4 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.21-cp312-cp312-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.21-cp311-cp311-win_amd64.whl (29.4 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.21-cp311-cp311-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.21-cp310-cp310-win_amd64.whl (29.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.21-cp310-cp310-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

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

Hashes for pyuipc-0.0.21-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ce6b57e66279e5d82c02c8f7273bbb2c3754c2cfb84cfa7f0b996a968dfccd73
MD5 dbab169081369f5dcc5dfbd91d873e34
BLAKE2b-256 23e24ca0d969091b4c8e095aa98f8acb6a2984fe2e4d6db71fd146d1767ef7a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.21-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b35097e936d2446a801085508b3c0fbacdbd0df21e715f11b7818dcd6152149b
MD5 ec86c7c259f5a1981145b41e8a10c358
BLAKE2b-256 f5b0a77f37559e2da4180e7fb8ff3c97d00b907f9f61958edd947be2822dac8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.21-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 29.4 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.21-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 908b7f4d50fd3a552bd7b7b1b61d6c2747734bec7db80074731a2692b6863abb
MD5 daabab8657cf045a2cf326ceb37ee59a
BLAKE2b-256 b1ceffc724de39c98d64e4fe4885743a45415724410f29365e4323bfa68e7ab2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.21-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ddc685b7068fb4a6bcdaa01c145b8bf3a8ff3893b7eceefe139d8c3a65472324
MD5 7452e4fcb452be205c2065b1e9a11950
BLAKE2b-256 60761ef306d9dde3a14fd53aa10b4e856ba403f0c4332660492cbbafe593a27f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp311-cp311-win_amd64.whl.

File metadata

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

Hashes for pyuipc-0.0.21-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 88388016a9557cc67cff01ff10539dcd1f8af35b4c7e76d2fc0caa28e4b16c5e
MD5 ec304a3b832456245855e96466480a68
BLAKE2b-256 9b30e9377e525647618bb4247d81a47841d5641dfb3efc1ca39c7086ca1f02fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.21-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c387412b48ab617e40ce28a37144ec7425853da72a25a8e2b96a309b3684c71b
MD5 832cbada83221c1164c343cc5f3a7445
BLAKE2b-256 9792f323f7b41cca3bcc05c446bf01312659ed51d6e07d90c54bc464561fb4b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp310-cp310-win_amd64.whl.

File metadata

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

Hashes for pyuipc-0.0.21-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a967c15219d78981166ca220d8531812906526bce13a595c99d67bc29c5a91b9
MD5 799161eea7010bd46c098dec5ac6718c
BLAKE2b-256 bf9fc9eafdc804e0714ea924e6eb0adc9f5fc33acdeee1ef77fb99ceaeecc0ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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.21-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.21-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1ac1a62b787af96104266b455119d2a4a0c6d6d3de66b39cb6284ccfd6b3a793
MD5 768ac20d59de4e00ca07cae66b348bea
BLAKE2b-256 989c26467300c9943c845c80ccf7d0770da7fe583437443eb1ece4a8a72c0e8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.21-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