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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.9-cp313-cp313-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.9-cp312-cp312-win_amd64.whl (24.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.9-cp312-cp312-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.9-cp311-cp311-win_amd64.whl (24.9 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.9-cp311-cp311-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.9-cp310-cp310-win_amd64.whl (24.8 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.9-cp310-cp310-manylinux_2_34_x86_64.whl (23.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 24.8 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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1135eb10473f6683ffe53901fb1fa68d2fa428d09f353a9b07ccdb2422d4a978
MD5 0e254e5681f222e45f832f6d091c64b0
BLAKE2b-256 64948d0c6f05d1ea691ddc044a91a23aa3fd2adfdfe510ae86e72e7c7a481336

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.9-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1755e8e7695e7161ce2ee3ddaee8dcbb79b20c9ee15ddef37ccf9e1469a18f96
MD5 e2aa02e8295bca70f0fe33a3452bb7df
BLAKE2b-256 fc6a7e5a472bc54dc14e6473436f3010bcc1d1f3d8368f97a68f37d6227b1f31

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 24.8 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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fea1d720d6bf00ea47b58c1983baf1d14ce9c34f02d1e295d8ac866d0b25e2e0
MD5 d0366f880ea6bfc7350f4b960ae49438
BLAKE2b-256 bd66e7c04eee3e6498bfac579006646a02faabcd53632afb7314bccfcb08d8e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.9-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 93b2533e3888ac4e5daa6ffad623d6d0722fcd9ef4f293adb425ed68401760e4
MD5 aebce1920e8e153fe118fac76ca13f9e
BLAKE2b-256 be363c07265ebff9a3d91a19259805a0769509736483ccf8decf5ef3f357a34f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 24.9 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.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 05e50204f025204f28d4ece45e02ea5da5d340c3f1afb0f6b8cb88b0c63049f1
MD5 d387b378a38e0a6aa93ed207a53dbd19
BLAKE2b-256 91363aa1e069dc2d747f2ab086a910b58a845ffb88c9a6e5ff5487a6dbac8f98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.9-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6bd9466cdbecf133b788e7fe38291db4a9439040b456d5d8bc217dd3cf8355ca
MD5 3b5ec071271bdc741ad7a926bac1c520
BLAKE2b-256 df79874a8ab72687ddaa656d3ae192c489b1122f25332bcc3125d25ac01ebb90

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 24.8 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.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a98e6a5d8e6c443194e6918573a133d63d242a9c1b3a661ee180ef83a9a994c3
MD5 7f9164b425a97eb9211b6b4ddefde63c
BLAKE2b-256 6ba01d347010c3fa554caa02cb21874edddacfadbf0facc156969c31955b264b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.9-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7fbac779dfdb9ab76e243bbfc4ed770dfa806ed34a62c65dfbdec324aebd90f0
MD5 e8047184ac4c3ba817a0e25ffb26b710
BLAKE2b-256 bf280138f4b849ecaabc477d4d7d634d2e4e9156d36623b15097441560975c35

See more details on using hashes here.

Provenance

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