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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.22-cp313-cp313-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.22-cp312-cp312-win_amd64.whl (29.4 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.22-cp312-cp312-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.22-cp311-cp311-win_amd64.whl (29.5 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.22-cp311-cp311-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.22-cp310-cp310-win_amd64.whl (29.4 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.22-cp310-cp310-manylinux_2_34_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.22-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 29.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.22-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a6efe4db864defbcb33e15461c3b3ab73537499e4faf82a419c54377433f765b
MD5 558be1b3538ef7bbe5c3e7634545a01c
BLAKE2b-256 3f0a3283893f5c3bc3c42cbca1ef985675bd400a1a4fd96be3b887f7a4f36f62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.22-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3e3bc29b99409c28cb196cbbb4627f5ef6292e724abd3f80ab29abe051feb07c
MD5 5e5a8094382c423e0eb9472ee3fd196a
BLAKE2b-256 4053927a2120f3bc4dd3c276f879d10af4da4db2e704cf6b740eeb93539c1215

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.22-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 29.4 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.22-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7009b16b79c599a7db595b21adb80cad9392ccdddefd3b99f56cde5dd1be4a13
MD5 d63a1ab4cd5618b49e70f67b10321254
BLAKE2b-256 2b1b8a767dbcae19d8e37d88c8b667e2da449813aa4686c6b0b5400c59200f08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.22-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d9b0606b743dc50bc154e35c5ad5dfc0bede0e7da2a5a780170f3a9aca67d8dd
MD5 e31b378efbee79ecc9658c508bec7032
BLAKE2b-256 57e0998e2d311156deb7f0bc795f86b7b19fddb6ecb1a25b0d222b447449c7fc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.22-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 29.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.22-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 215da206d4cc63a398d41e21ecdee61d7a9ad96bc503372f67b9afecbbe857e7
MD5 773607981e5c780aee04c2619f67e95d
BLAKE2b-256 1503940cb024dfdfe450938ef0054a589ef2e3291ef5f4c380557c321e8e9f20

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.22-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 cfdf1b0f640579417fa35d628f1c177c5eaeea09c71bccb92de6ea80be88939e
MD5 07028036b6e99d15b1efbdb7a809bfee
BLAKE2b-256 b220944a8ce2054eeec5dec3b512b70aa85b5a7738219cb464565035ebacefb8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.22-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 29.4 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.22-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d7183f1ab9ab1eacf251bb9ac45521295b54ff81051cec44dd87e09eb7610609
MD5 c4c48496acf4d74730e23488ad3a406b
BLAKE2b-256 bbe99aa7980291ca1e0b2848958b7352638586230bcc99c7fb02be017e7fd5a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.22-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0ecd74671ec4db5d496576ae508a19b8db9a4c4cd13225ecbc9feda283e51b0b
MD5 d95adb46b959e3bdc0ebdbbbdb934dbe
BLAKE2b-256 84a9985676f052d2d792a33e80c77f133641206a9896430aff3cd1858867d029

See more details on using hashes here.

Provenance

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