Skip to main content

A Cross-Platform Modern C++20 Library of Unified Incremental Potential Contact (CUDA 12.6+ required)

Reason this release was yanked:

fused_pcg has bug: Fixed in https://github.com/spiriMirror/libuipc/pull/365

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.13-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.13-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.13-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.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b3d7d2540266b415d5b182e648ddb56cd1050a30e37aa3bf18e6d7136f790ab5
MD5 57c6fec436d1ed74d0eb83c6ea4bfe62
BLAKE2b-256 a9158819e60191913ca79b6595f5f85618a36fb1fb18f27226a6f2553ab9696b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.13-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5ffdf7847ca9fb1836a33bdb1af7f064699f9a806bcfef0e324781e28076d57b
MD5 9a151d9f0b545e5307bb21c45ac163b2
BLAKE2b-256 f22aa5964bea96580578a3e02e1ff30e504e7431b71361eaa458a2bbff45e839

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.13-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.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7e01781ac81036d09ac5c45d8475fb6f555378e4480b322e553da20cce29ff1b
MD5 75254eb354d712bbfe21b76f0c512229
BLAKE2b-256 6d62404ff02306d089debe6c94e42abed2bfbaa8a68994640cd0ad8af3318477

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.13-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3299b856cfcf02963625d54d108df1da0592382329d5f0bba040820ca509386c
MD5 d99fc1f833ed02bba71fac3684622dfd
BLAKE2b-256 ea50cbe97a76d9eb422aeb6ab5f2512114ae5c468b9a971a445d82a8ef5a5ccb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.13-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.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9a73b963fb15b9ba4e689944f1cb97750db16f5876e1c25aa7f28788b22202a3
MD5 d511b6e86fa94c4e54cb3f2cb44cb76c
BLAKE2b-256 40cc8b4e976dbfcb675d98ed36a0d5778f7bf2cde19ced4ee731f34ab17bf846

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.13-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7190ffc5adc2678aa271a15fab3137ded90969c679694f3c6123cc9c453f1535
MD5 69e041cf07c566a65810211fbdc95acf
BLAKE2b-256 c0df1a94b9bb5cdfbe5c91239899455ab642d5842f8dc5f0014cc3243263e096

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.13-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.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 36560201125e4f6271a7e8020c00e267b3fb5f31a1897be9ccd0d764748ad105
MD5 592ad0987180ad5a86a3bff725ef0d97
BLAKE2b-256 ec6cd37b6ac78e2ef2eb256ce5abd6aae57cb493e008a64b09c948a1f8ea6d1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.13-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0dda0ad9c6839e56bb8c4bd0319cd1176d9b4758aaa3646c6f0b7a4c8ddb2c34
MD5 6e30297fbfe7fcfb50df5b6358a2cd63
BLAKE2b-256 a1852f2609a1beb9fb092d0896379a54e97c1f9e2de75d483e0d3ba93e2e5b28

See more details on using hashes here.

Provenance

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