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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.19-cp313-cp313-manylinux_2_34_x86_64.whl (26.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.19-cp312-cp312-win_amd64.whl (27.7 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.19-cp312-cp312-manylinux_2_34_x86_64.whl (26.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.19-cp311-cp311-win_amd64.whl (27.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.19-cp311-cp311-manylinux_2_34_x86_64.whl (26.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.19-cp310-cp310-win_amd64.whl (27.7 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.19-cp310-cp310-manylinux_2_34_x86_64.whl (26.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.19-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 27.7 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.19-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 51474bcf76590907f0f4dbb46e0c6be4c0f512a9b4d0947a9c9bda2345c1d03c
MD5 9cd265cf2f6f7a7c1d3316732a63ad86
BLAKE2b-256 179c05d196cfad5d105b16e76e66a9dfb10a10d51da7604d3ac434fd90d5ff61

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.19-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e8a66351a2ea20a5485b84b9855d578a70475fe76f2dfbe2b3af4aaf9bd0d2d2
MD5 0128355fdbc1a1dd16d4f3c52dc20c36
BLAKE2b-256 1f8b837193b4fe9feb5f4cd34afccf8442d2d0ebf8aefcf001b4e2eee28dfb4f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.19-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 27.7 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.19-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bfa38bbe727f3aff7550f941ba233490c6a71c5de465d0338fe1a441a7b53e25
MD5 fbb01283bf1e51ed5a96a5c90a614a27
BLAKE2b-256 b6ec1f2d2f50daa821b46ebe51774bf516ff90dbfd4d73934ecce242f292b352

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.19-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9007c205e8ef2cf4b06341c3acf89d5a320be342a5bebdd3d8ccb8b7458c8583
MD5 1589e81ba4bd962a7b276b2663e2f269
BLAKE2b-256 aae53e5b96fdffb4c797aa79b1673f3657ee5f5d2815389a29beed2273118771

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.19-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 27.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.19-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 64f1c1fafff3762808a852843515631e9096abc2a6c1a943bc81d13f8e409ad5
MD5 0f0acd2e8e5c8157c80eb64115f9d51b
BLAKE2b-256 d97b7a56d7db3aa19bde557a1bea6696f7be8b20ace3aca17b4fa3e8288310ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.19-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 059639d9421d5cdc903cf65768e958a067cadcd132eb2ca382781461e6b5c45c
MD5 bfe1cea31e348757b4f5829269713e46
BLAKE2b-256 13888f1429ab5a7d790a6f59ab82771fb1141d1b54eaca26ac0b43a33953aebb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.19-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 27.7 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.19-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2ee13cc429ec69740cbc85814df029a65501cdc2025d9fa29ed6c4071a321a05
MD5 213780a4fc399e2dbe94b9232a605d4d
BLAKE2b-256 5ff2818cf72e93f10a847e2d748930cc1dbff7f9b46f3297a9580029f130aa5e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.19-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9cfb9d661dbb98835c3efcdd6d0f035bf1c7ad66be88d1c6c6e43eaea6e309db
MD5 6b02e4d4d3645c9d5429c6c7403d7056
BLAKE2b-256 6ebf9bcfbcc4e1fc4d2448566d765c2406d7aaada7a276e6a9d0f2c077071bf0

See more details on using hashes here.

Provenance

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