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

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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.8-cp313-cp313-manylinux_2_34_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.8-cp312-cp312-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.8-cp312-cp312-manylinux_2_34_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.8-cp311-cp311-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.8-cp311-cp311-manylinux_2_34_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.8-cp310-cp310-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.8-cp310-cp310-manylinux_2_34_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 24.5 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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fba78bb7a50e3262203fb3ff409a20ebbba2871e37b8d51d829b1c9d124b9aa7
MD5 0245fe8dabce8de4cc4fe9d97d58e1ad
BLAKE2b-256 a60df685f3678fb56464a9b89ded27c86b0f23aa538584e54c10517ffdb0d547

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.8-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8cfe9e2b836c9dc7488259eefc8ce671566dc19cb1a08c514feb54e43af27ed7
MD5 f91dd92844df99553b6225f9e702764e
BLAKE2b-256 76d36c2a0b66acd520d0ad66fe918c6f33606475839ccbaae70b640d55db1131

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.8-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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c02b9a80a2d4875c1f82ec605cca346aabacbc473d4352f287bf4afe039ef9b0
MD5 e7bbf06275f23d2e5a699b0150fd6c12
BLAKE2b-256 89fb0af78826edf6b70b99b0d2ac2f0cdefcf468b5530bfe985519267f4f6275

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.8-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d9a659a2370dba5545f609ca40dbde1e749374ed6367a3e375cf68c0fae69763
MD5 03020d82869f321693a86687cbfb692a
BLAKE2b-256 8a40747b61bc694940babbe8e86ee0f63b13a684df72f03977adec53b84a2cdd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 24.5 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7be7ea29ada5f713fa65d52d020e99b8be4b24889a6a94e0737dccc0f0ba7a78
MD5 829b113d2d3bde78a3173b50576a8a92
BLAKE2b-256 cf48d4fbbef762e842dbc0ffb07e7e0736da0003b4f859bd920b814871879562

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.8-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8abbc09eff4a7c8fe2b6baf3bddf6bb8a5115711fb2b4f9a5903a80c3b06cd75
MD5 8437deae73bf5e3f9f1d9ac8b6d92699
BLAKE2b-256 68957bd0093b35948509c34d256a1e029bcc5b01ea3ad7576c6cd63109201ff3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 24.5 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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0a2b473d6bdfcc05e1c184ae1b0fbeb5161e5342dae3d4eba6fa5a8e8152a1b9
MD5 09ada85d70da4d3a988f4261412272ec
BLAKE2b-256 3c264b7834024fdea45b1bb9be53d987df081ccf875f50a832e99de7f0bccc6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.8-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 18066f79c8eb4822944d274913b655c67d1f78110269c3d16cfc239e45fb18ed
MD5 2903ded60c80031b1148419981995087
BLAKE2b-256 fb90ba682c28065b655593828ffb9871ae8dbc48c23472d0bf7de840874f65a5

See more details on using hashes here.

Provenance

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