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-3-29: We thank Genesis AI for their contributions to supporting AL-IPC (Augmented Lagrangian IPC, from Juntian) integration in libuipc, developing a comprehensive Minimal Coordinate Articulated Joint System(ExternalArticulationConstraint) for affine bodies, and restructuring the CI packaging pipeline using CIBuildWheel for cross-platform PyPI wheel distribution.

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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.25-cp313-cp313-manylinux_2_34_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.25-cp312-cp312-win_amd64.whl (32.1 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.25-cp312-cp312-manylinux_2_34_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.25-cp311-cp311-win_amd64.whl (32.1 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.25-cp311-cp311-manylinux_2_34_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.25-cp310-cp310-win_amd64.whl (32.1 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.25-cp310-cp310-manylinux_2_34_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.25-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 32.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyuipc-0.0.25-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c9e68f1b7fe3efc5c3d4d14c363ba626510f5f16877477e84d450e37622aab2b
MD5 2ee6ca7b9ee1eda3949e25f182c57b32
BLAKE2b-256 62bcc69853fe80b709bcca5fcd6b0b19fef6ba2c4aa8d42fa0a85027d53712bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.25-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 00f63b860f893a0fee3390fa54ad11cb4747c45cf516b34e36d7bd3da171ec9c
MD5 b9167dc4aa45e5c2e8548ffdebd2d0d4
BLAKE2b-256 8a694d7f82c827eb6deaef4f24726c22be1132f162f14ffd5b9cf963a1074aee

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.25-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 32.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyuipc-0.0.25-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b636a64689e1f63e58cef177dce6edd6cea2d454d534234d1f953d5b8ad5b074
MD5 63a8cde269c97a27a19261cdaf511947
BLAKE2b-256 8511999268750624872f57660ca7311ef10b755214af8664ff19528605fa6194

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.25-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 de486c47874f29c9bedb97f572e6c3b228a1d23e042e124d5ff3a90aab8464fd
MD5 dd651691bd2f630a56c96166bb9119f9
BLAKE2b-256 79e6dc3d7e4b73c206872e0f54195ac8cb70b66a60f326823bd64bb96ceaebab

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.25-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 32.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyuipc-0.0.25-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c4c24ec42f4f0adb1d013d902b530605656538c00eb342de24bfb447799f3c62
MD5 f00959fc2353dd2733ca11e1248fdb48
BLAKE2b-256 9914d8cd8c4da1b9f24d8e59a0007d83730c19f398206d374695003b91fb1e24

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.25-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d62b7ecf9f71b29fd8f868434e807efb187cc5449b1f40f2856937bd6acdd052
MD5 0da37ef967c58a408c003d87769f6d55
BLAKE2b-256 6ad5d443f1334e327af00001410fedd8044f7fb3269328fdaa81080da5d2a1bb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.25-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 32.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyuipc-0.0.25-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e7c9ec4494a5af3d5990d7e069548976691eeee62d165fb9a6502fc9862229bb
MD5 c821727f54c21f4ea6becf9c620a7af8
BLAKE2b-256 80a627c3424e58810b5615d0733bac5699c6fc68d2f2c0e2270cd6e2c4de3bf4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.25-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 76ff13554e1971ea4401db2c875369cf32352ae3a5a4c398c45193231b5cbf00
MD5 d069d59a94e68a096341f2b0609f8d1e
BLAKE2b-256 98709d819bdd015097673f503e8ccd760a4b53dc5b56a60708c1a7eab07fa5ff

See more details on using hashes here.

Provenance

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