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

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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.7-cp313-cp313-manylinux_2_34_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.7-cp312-cp312-win_amd64.whl (24.0 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.7-cp312-cp312-manylinux_2_34_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.7-cp311-cp311-win_amd64.whl (23.9 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.7-cp311-cp311-manylinux_2_34_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.7-cp310-cp310-win_amd64.whl (24.0 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.7-cp310-cp310-manylinux_2_34_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 24.0 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.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 460c3d482a447bfc93a5f638a1ed27dd90ebf92a3ec98ef12554a326558a80dd
MD5 b7b78239f4e07cfb4e08adb8227ffa9c
BLAKE2b-256 2ed03410da7c34b8e43f08825dba0f1da585d40af3377001d316eb0c9bc903c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.7-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4e8891776272dc6730d295f95cdfe8e2ca00706afa50674edb09a13e8ad33d81
MD5 216e47cf0541397b9bdaa8efe29186ed
BLAKE2b-256 9605f5e6fb3a56e6825df370a9be63b446ff4704999d14fb31d30e54af0d436a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 24.0 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.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 53186b34bfca97c7114d2e4669f19cd65192c2f7801dee3faea246d7448f0461
MD5 711b14e658dab5725d844eeaa00697e8
BLAKE2b-256 6439e7e151b8c29e687be64b00cc6e24bf0ea783ef8b065633d1955d0f5e7e69

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.7-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 09b1067623c8a745183635d74baa75173f495cbf0bb69a1ae8580d38f5953fcb
MD5 ca3caeb9a306933a2b3ecc87f507cfc6
BLAKE2b-256 25f56218564e03a15bc0525772d9ddee77dffd71de9328081b045765c9d47690

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.9 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.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bb7a5c261b4d38eddbde74beeb75761735d74e3aaaebf185792e91e7fcfdd36
MD5 7caab59d322dd734ff685ad7545ee005
BLAKE2b-256 d52c9b21e17c9ff7fcf90698ff6437993f6590474f3561386031a9f19b6ca8a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.7-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0bced956dca4089ce820389d6610b8ae85dc5f838e94c2fe05f944e8df2d0a97
MD5 ca96399724c6d30eeb084b5088c77432
BLAKE2b-256 92d2fa305aa6c3d1a39a834cc08ff285ebe51fb07cafca2b29e201476b63dbac

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 24.0 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.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8a57a740bf54726f146167fc803fae36adf1c4cf3107f28357da4e3a1df23ea4
MD5 d89d75f5770ed0e2bd0282710fbd0a82
BLAKE2b-256 ce8297174d08a978a9488a9f4599a12c86bdbb7132504d00ff0de054e9053180

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.7-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 738b9e2f44dcc67eaca579936a39e6054000da0963c6490700cfdb63e0082dc7
MD5 127c19a9e38b88724e954bc367b3cf60
BLAKE2b-256 221468517af88c968462e20ba3e096f9c57daf4ffe92e0e989a1d993f6c68476

See more details on using hashes here.

Provenance

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