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

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}
}

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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.4-cp312-cp312-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.4-cp311-cp311-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.4-cp310-cp310-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0c6324bc1895420306b91eead5976b67da8c8beedbfde1b86925df5c50f87787
MD5 21af9724b628ea27045da9272ef79558
BLAKE2b-256 9b162d5c42b1310f183b4cf92c87f86f21500b53d5ea9499ddfd75239d7c7c17

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp313-cp313-win_amd64.whl:

Publisher: hotfix_publish.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.4-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 de914d9664319d499400b15597304c8b92843803d881cbcc98d2d27cc4e355a0
MD5 ec3f9c5edbcb1ccc067dc1d535277945
BLAKE2b-256 331f7b22cb5a384f915928135de410868d18999551129a3ca12e65a65a803658

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: hotfix_publish.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.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0f1ec6f688efbdde3b1a6b7c845fb8daeb57d5ad1ea109a4fc8953a8b746503e
MD5 0fbe87afb9f92ae30a868124441258c7
BLAKE2b-256 b1de57022cf9489a23262c5999774679811f83a033121002c59bcb57e3eb4ab3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp312-cp312-win_amd64.whl:

Publisher: hotfix_publish.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.4-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0a3235b899a23f5745ef8e027b617983b5b38b5badf06bf371037684b914f2ab
MD5 7e84eec167176e511d31befb2276ea64
BLAKE2b-256 bdd4397999888583737109bdc6510cdea04e07cf4823a79c7e2fd5722e6cb15f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: hotfix_publish.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.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4557766d3e7408534571e07c83a5d7dd10015df8e4b3f4f833190bdae240d5a3
MD5 5e3552d868f8d8b4dc80968dd1301332
BLAKE2b-256 91cae3979093e483e38148c8d4918cbcc2123d514655e5f7aa921441124b8e43

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp311-cp311-win_amd64.whl:

Publisher: hotfix_publish.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.4-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e53bdfbd6c8c051f350b417944ec0e7c1de9eaf5f67b18657f87e0e5a0578ebd
MD5 3b7979e1b734907074b65f644a3fa279
BLAKE2b-256 75a0255612935541e4b372b6e2ba7b4b96bd0a2988d0715b7739b9357a9c34f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: hotfix_publish.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.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0c61d89eb8a6a4cdad0150b1257627a111a6124cbf92205280f30423deab5d98
MD5 5a10ae85953f7f477bed17a34467e42f
BLAKE2b-256 c1974f46ff5f8445c344c99d5a71d937ffcb0ca6ca20c833c45da126da398cb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp310-cp310-win_amd64.whl:

Publisher: hotfix_publish.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.4-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyuipc-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b5e109b000725463306aa8ee17a6e35b0c7ddf52f11d881cc05c695542ac9657
MD5 e7a2f30aeac1ee28922a002645a681fe
BLAKE2b-256 ebb1e75d2d43def8afd7eb46e2718329984a92a429e8030a8cc3d3880e06087a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyuipc-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: hotfix_publish.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