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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.10-cp313-cp313-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.10-cp312-cp312-win_amd64.whl (24.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.10-cp312-cp312-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.10-cp311-cp311-win_amd64.whl (24.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.10-cp311-cp311-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.10-cp310-cp310-win_amd64.whl (24.8 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.10-cp310-cp310-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 24.9 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.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4183dd8c6fd3dd64be3b9c7c6f1059574b2414ab424fe3f5758896bae0d4af92
MD5 efdf393dd3d0933ce0a26d5d679fe8c7
BLAKE2b-256 b48892c20e8e2ad43999644d0bcfde9ada0e16b573394f69b235e6b9c84f5ca0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.10-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 84f77bcdf55d40c0117aaab9a77d7c5d4892b123f7af2d04ab54589a42376831
MD5 efd29f02bbb715da8a5021f136eef349
BLAKE2b-256 a340c17ae6474e9301300e2d4b1aae055e95dc2d0e406b33bdcab4eda199985b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 24.8 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.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 eec7de1611c0311fb3899bbabe502123a716d8b1e0c08f85d3cca67dfd1ede83
MD5 5a4654fb6bf6a1be9e3d7b4e03d1a1d0
BLAKE2b-256 d4b873df35bcc77f4a7a314b730124aaba79c3cbf4ca2ec036fe9620f66d3244

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.10-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9db15df097fde325343fac1c832f377f7786df2bfad5c8c0cb5bdb593f7a5749
MD5 d037818f765eb6fa1b01749f9cf131be
BLAKE2b-256 0928cb394258b194cdaaddefdc172bb4364e0770fbd11bfa6bf1871d6071fa0b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 24.8 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.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d7f38690a07b79612921736c95cc9fb7b5e39c24c70110fb1e82817bb5643ee1
MD5 2efc3e4a0e82e1df6c964e49e188a5ab
BLAKE2b-256 819a7b3a7074f4bc573897993e7160a22c95af87ceaa9aa0f3923b8e976302e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.10-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 09518f1b5eb549f125938c4dd640623dc9d49aa9afe75563e582b11c9aea2514
MD5 673f1c7eb239c0ff2341e69fc98e301f
BLAKE2b-256 8b675395df4611877247d043946706a644144441f6ae8d9f1f76a1680dbd3087

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.10-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 24.8 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.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7d3471b3e38218755b0035badc83591ee2b6d2f9a15957cea057b38a17bb5e7f
MD5 a08eff8398473623dda61132802313a2
BLAKE2b-256 e28b1b4331689ff3aeb597195731e17526f7feb73f7889811ec862c496f66c64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.10-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5b85170def00acbea4c7f24f12af9568ba4d1545c8f476d13c001842386b7212
MD5 37a5ac19deb76292669ef72b603c51dc
BLAKE2b-256 ae45c3bd1f52a72b4f6576ddcf0989f5a462e73279d844ce0e92d4675879f925

See more details on using hashes here.

Provenance

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