Skip to main content

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-3-29: We thank Genesis AI for their contributions to supporting AL-IPC (Augmented Lagrangian IPC, from Juntian) integration in libuipc, developing a comprehensive Minimal Coordinate Articulated Joint System(ExternalArticulationConstraint) for affine bodies, and restructuring the CI packaging pipeline using CIBuildWheel for cross-platform PyPI wheel distribution.

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.

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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.26-cp313-cp313-manylinux_2_34_x86_64.whl (24.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.26-cp312-cp312-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.26-cp312-cp312-manylinux_2_34_x86_64.whl (24.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.26-cp311-cp311-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.26-cp311-cp311-manylinux_2_34_x86_64.whl (24.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.26-cp310-cp310-win_amd64.whl (24.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.26-cp310-cp310-manylinux_2_34_x86_64.whl (24.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.26-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 24.7 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyuipc-0.0.26-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d2e2e6165f97ccc791170395a753edc40e47623a73b34a46e76d7ea6781cbbe3
MD5 bcf250493e2117671ea70eb1e75facf1
BLAKE2b-256 40071c2dae8bc34432e4eb0a751cdd1ff9ab8916764a22f7adcd933b2aa24701

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.26-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 704e1413cf86c5afa8ffad0f43a56dd12d39546e10eeb3e140617f0946741503
MD5 baddb22d7d7110e7dc3bcaef36eb911e
BLAKE2b-256 978c3c5ffa1720aed725e86ce14212c9a26f31f6ac2480b72c25d38ec5f9f42d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.26-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 24.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyuipc-0.0.26-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6c76b6e446bbcdb99c9b0aad1467bf2af4f81e67a8a399f86a28900231f2ecdd
MD5 b353ffc209390685376034ea15f405e2
BLAKE2b-256 a47310227740e0d803059b8400e03785790e5168eb43d0a06171af8bd2b47ae3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.26-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0355788ed62bf9878f241b2957ee4f8409b0ca511d492a3bce60aa40a43e760e
MD5 fb28b34113957f7b564e68c522fb9fa6
BLAKE2b-256 10588f5abae119dc80e1236a10e793b0b37911496854d58a7b6f66366adb2819

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.26-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 24.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyuipc-0.0.26-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 01dcb643da98544f7d53399877d840c99d7b979cbe018053ac7281fb11b5c842
MD5 82115cec69174e6600ecbfa670713bf5
BLAKE2b-256 32168455cd7700fcdcd8a771304974eadc9860af4ef923dfa9255d3bb487b0f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.26-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 95e7d28e1e16077cbc81b8775a81f345d5169da872c640bb7d176c4a3600ae69
MD5 af4ea34bfbbc7dc9ee1cc9d958b99fd0
BLAKE2b-256 2fbb4095b849cef5c135ddcacaae9e76b2b0a5e81c3135069fa42b249101a114

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.26-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 24.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyuipc-0.0.26-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a992c9972cd2f5ab541864637b1bb7a9399b862de5af3ff1c4bdb75d41c6dc47
MD5 29d61042fbca7011861a5c248b9121d3
BLAKE2b-256 062c81318dfe3b1c9b19f04800fe282027cf03879dec47d7421160c49c01baaf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.26-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d2ffbdd12b32d630e1cc84810ef5440e5ebddbc2b2615e84ff8f935f449e9ac0
MD5 b0041233b3e1acdb641fc51c03b61533
BLAKE2b-256 4e21d82e408050960f475f77c0898bcd3382765c41b8e2458494ec7013348fd1

See more details on using hashes here.

Provenance

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

Release history Release notifications | RSS feed

0.9.0

1 file

This release

0.0.26 This release

8 files

0.0.25

8 files

0.0.24

8 files

0.0.23

8 files

0.0.22

8 files

0.0.21

8 files

0.0.20

8 files

0.0.19

8 files

0.0.18

8 files

0.0.17

8 files

0.0.16

8 files

0.0.15

8 files

0.0.14

8 files

0.0.13

8 files

0.0.12

8 files

0.0.11

8 files

0.0.10

8 files

0.0.9

8 files

0.0.8

8 files

0.0.7

8 files

0.0.6

8 files

0.0.5

8 files

0.0.4

8 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page