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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.24-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.24-cp312-cp312-win_amd64.whl (32.1 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.24-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.24-cp311-cp311-win_amd64.whl (32.1 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.24-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.24-cp310-cp310-win_amd64.whl (32.1 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.24-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.24-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.24-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.24-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 970dbaf298d66ebe2c18c547c441b7a9754af778295a5886cb78e982a1d1a30c
MD5 0d48552636ed615b850caedeba0f3534
BLAKE2b-256 9cfd0e9885995e68b24a9a84581469755f65f63107684f09f3f6a2d6f687a382

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.24-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0beb9fca6fe7dc1996d1502449afcc3ece5ea7dfde8887ef866f6865e4ab5e9d
MD5 b64782d1755c2e4621f0ca562b4cb13b
BLAKE2b-256 cb089d86ba2bdd7ffc131004f2a80cecdf6f080b3e01a4fe6f7d693ccea29b43

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.24-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.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 593bba25385ca5a27518be2aa65a03e6311e309f764a1b5e8bb64d9a3285f828
MD5 91ceddb8768dc006a4b2a93e7a020142
BLAKE2b-256 280a6346f14c7716cc451292e5a6bceaf38b2e287bd4dce35334dc16a7e5aca3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.24-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1f90d844c4d3b4754b25d3380ae3d5d753968631bac3e886e732a1200f9fc9ac
MD5 1dc230ad061d2ce8b614c132fc2c73a4
BLAKE2b-256 d0da78ecb208edfddbeaeb06bcebef211536ef853301b0ea6e1d7bf2e9cc51f0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.24-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.24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a7fe1714c2f1955ea0af3f0ceca9f4dc89848aff86e950e5501010e4b64011ba
MD5 e66b300ae20236cfdc1a57ea0c16bf7a
BLAKE2b-256 1e105d437970146ab89bf9984990b44d753cd4e7f04d6efc5ee3484d54af9dd7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.24-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 06e33f047126b038c73827aa56037a3bc199a945f03de036ccb47cbd13b1c925
MD5 eed473359b044d678d3c820dcd39480d
BLAKE2b-256 05b418a13ce87936217866a97ab9c4803a7a85ffbfbfca22f6ce690af3351981

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.24-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.24-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 00a8986c53a8754ac0d465eb8df5d36e8c8ec5599ff21884fc8732d1eed2505d
MD5 a981cd3031e08635506ec0c9d2ab3c59
BLAKE2b-256 5d75284f38a046f77d9e116f37d495f8cac9ebdfa8abd02208913c2300b3ef50

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.24-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3d6877421a1783a60d2e9a35f063543c923bb64af959cb349fe7df3c9e6038bc
MD5 573975a45b7a76a1783d75488c674a84
BLAKE2b-256 9ef9c39ebec6fa4bfe237119ea9d0658b20eaea355493404d1d5d2f21c3d8040

See more details on using hashes here.

Provenance

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