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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.12-cp313-cp313-manylinux_2_34_x86_64.whl (23.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.12-cp312-cp312-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.12-cp312-cp312-manylinux_2_34_x86_64.whl (23.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.12-cp311-cp311-win_amd64.whl (24.4 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.12-cp311-cp311-manylinux_2_34_x86_64.whl (23.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.12-cp310-cp310-win_amd64.whl (24.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.12-cp310-cp310-manylinux_2_34_x86_64.whl (23.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

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

Hashes for pyuipc-0.0.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 22350f783cb1df8a5d0eeeeae39059c912be8ec559dc63649e60b4c77e5d2f3b
MD5 3b310cae85b00867051fd373b55b7d75
BLAKE2b-256 fb2d8cc5f6e3461e36b4862c797d0a36108bdc0f30e2ed6308896661056a251f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.12-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 50a436b72b4c8355211e429d50cb53ceaecf4e068024a016738b51adc4e84a1f
MD5 0d789e8894d921473da750d1fb7770ae
BLAKE2b-256 3563094eaeccff66de427af3d13300b7f951935c74b2d6a6f395cbf92d552ade

See more details on using hashes here.

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

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.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

Hashes for pyuipc-0.0.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9379c6b226fd4c523f32ac0ce05dde9bc252de8b389e6f1fa5241ca2b6be396e
MD5 8c8ab3a9359b9a8f516d7297c2e8a62f
BLAKE2b-256 7f4b84255ee8eb35805ec4d8ff509114cc95dca86db2b42db79b2f4f0287ef11

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.12-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 00debdb567dd251f30a8e2bec8fbce7bd3e2b1317da6e8144555a2f6642d217e
MD5 2eca2d52ac3047e2848565914c9e168c
BLAKE2b-256 92050fe5d8c51b05abdaca1a05fcf52f246db6b82655e29fc14cfb428b574f72

See more details on using hashes here.

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

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.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

Hashes for pyuipc-0.0.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 292596712adfd8a837afcaa57050228bf26e6383dad7dfb1e72f45ad6b4a5718
MD5 ae92a8d8f3f7ad26094338712968d4cf
BLAKE2b-256 d4ccc60d6416f504dd0e33300c7f81ce47de4b7ee37ef61168bb679a5ecf9e3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.12-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 39290ebb947d913a1144309ceff0971eb2167dbe00d68ceca16a8f1ad285dde3
MD5 2ea2b3acbf897e351cfaccd37f1e1efb
BLAKE2b-256 b37fa061e9d9a3ae8f1f972f1f22eb75699b60d1676c0faca9288374617089a3

See more details on using hashes here.

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

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.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

Hashes for pyuipc-0.0.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c8c12d8b8bb1c3daf5bf8c2024b333d5d8f17a3652967c1af3f0d5586b27af54
MD5 1b3f9a9ce77ad329552a15cf090fa00e
BLAKE2b-256 78c5768277cece7343789962c44986f2c921db47f5fc5550b3fbd02e3134a4ef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.12-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 782e7ae76cee40084d5181ace0714892d0150f54ca6e41c616702c7497f73f2d
MD5 b417b73b4220060340f5e6a3c4e38f4a
BLAKE2b-256 3d2299989c64cd65cc01ceae5985fbc31d2482b3cc52c23f7c3d127a22d52b70

See more details on using hashes here.

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

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