Home

Awesome

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-doc/

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

<table> <tr> <td> <img src="docs/tutorial/media/concepts_code.svg" width="400"> </td> <td> <img src="docs/tutorial/media/concepts.drawio.svg" width="450"> </td> </tr> </table>

Key Features

News

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:

@misc{huang2024advancinggpuipcstiff,
      title={Advancing GPU IPC for stiff affine-deformable simulation}, 
      author={Kemeng Huang and Xinyu Lu and Huancheng Lin and Taku Komura and Minchen Li},
      year={2024},
      eprint={2411.06224},
      archivePrefix={arXiv},
      primaryClass={cs.GR},
      url={https://arxiv.org/abs/2411.06224}, 
}
@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}
}