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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.11-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.11-cp312-cp312-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.11-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.11-cp311-cp311-win_amd64.whl (24.4 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.11-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.11-cp310-cp310-win_amd64.whl (24.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.11-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.11-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.11-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.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d65f7f7044ffd0cbb8f26047e92c05f5a10ab9d5aecc092089b6fc19dcecc53d
MD5 6bf4512436c202f387b673c8f2497d66
BLAKE2b-256 c3a219d0759acf21c0298c5bdf93750b7777b3da89f0063d1fbad7890dc353b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.11-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3af0f120d9742c020044df1dc66a5837e9e76401bd5b36d2eb962214ae10447c
MD5 0308b60c13fa997120da410953185c20
BLAKE2b-256 610a80998a4d259de43ff49841e788aca29bd486c1030b6e32c44b961dfd6bae

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.11-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.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3398e1a0b7a1cb0f34318aecc154566d1b16013952cb0f02d0e88820d7462212
MD5 5d1cd01f860995cf68eda3ef29d22144
BLAKE2b-256 662c394132790b66f9ea0ef1cc23080b0553fe50780f92bd641a7db04ce0736f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.11-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 53ac9f114caeb41e1605e07b4b3cebbbd3a8fe8acb264ba7400d8dffa31bd9af
MD5 70a90dcc9b5184bd411abc8963001bf1
BLAKE2b-256 4551cda8394139148399863dc3371e2608c44482218c4ad9d13c4866357634e4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.11-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.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a68748f359b67b7d70c58f0cd84923e2b4fb04e42c0df1cb040aad21a40c16e3
MD5 90e22f0d1f8c2d8b74dc0a6ae8fec4f3
BLAKE2b-256 d8f70a3d69e83704cc7c5287ab3341038621f84b58985e92f8c4e27375750e5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.11-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d8e7c975d850d9082ece2e38b4e338596e8d05b56729b7825bf2dab96f25e404
MD5 c4ac323bc3b09a6ecca21301418906aa
BLAKE2b-256 a54fa317874737958c964e9064c695f075e400b715934e8d06da8bfb5d575d31

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.11-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.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c5165ffffd6dc803ff2d003963c50e4adc7a4c8652806dba702292019d6ae8b6
MD5 5b7ca4d8c864d01cd00619f159da6355
BLAKE2b-256 05e5ea3053951c4c74311488d263f2b8722e6c6b15d1ab432cac9f5bb13ab45f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.11-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fbdaf913a2d00c857daa559404b1462769cfa8f92a5ba585ed4a2068c28ebb53
MD5 94a7c3482c18abf5bf452e3e256e206a
BLAKE2b-256 d1d3d16c6b87a3aab652b17ba79c2a3e6ab1cee544adf3df951fdf2263823325

See more details on using hashes here.

Provenance

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