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

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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.5-cp313-cp313-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyuipc-0.0.5-cp312-cp312-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.5-cp312-cp312-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyuipc-0.0.5-cp311-cp311-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.5-cp311-cp311-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

pyuipc-0.0.5-cp310-cp310-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.5-cp310-cp310-manylinux_2_34_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: pyuipc-0.0.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 211b7d84d5606a42cc409319326f5563ce9887c837a2164ae5697382ab10c292
MD5 9f03f48267e0d53ae9e1015b6ea03b89
BLAKE2b-256 b209a131d39e192a45142cfacba43763fc90e7e5e99eb52e442de378ab0aa766

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.5-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a27ad046c780bb1ab8a28752479011d95a47228ab0121d535b3042ed81d830da
MD5 452f5e59e1aa4e15e28da23bea40418b
BLAKE2b-256 a027d42aef0f0d95424ef3a94f5ea5e91076968ec2f9ab0f6dbc36b6e5779720

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2495886df0c6317f8e8e134f6d93c87afb04e563ba9ba096fec5ccaf1d8b9be3
MD5 176b5444b33109bfa77ad9e651f6b0c5
BLAKE2b-256 672aad20abef55a063385a3714eb895476c0b9320d515dbf536e2accc9dcb4ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.5-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b3c1a12e752102ec3da7fce78f83cee927dde4d414342b367bcfada22a694150
MD5 e49a3af8f630966154363e70492d1d73
BLAKE2b-256 ca5d334f567b96699142ae076518fdac2c5defe005a81db237934659c2420d50

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5931cf4ae6fe402065a45d1faf7498358489bb2e0969dd8270874f209da365ca
MD5 48b7261f7800eb1bf7c0c6b9c1f6cbf5
BLAKE2b-256 f16d331ac2233ded7355687dda48bf38ade848218903c775eb9bb219f578118a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.5-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 653e5fd021b3e65e2d0e701ac1776a516159400c2d36f1ffb9c2cc7d63e44f81
MD5 00c2c2ee7ed5b9022591fa16498e8687
BLAKE2b-256 b3cd20011a6f807739f15638a448fc78506ed980c291762b3a414994b6c1a397

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 23.6 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.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2ac8737aea2166158715e34922fa926888bbd714f0aad05ac1390f7901302d00
MD5 807b03ccb9e12184c2acf787facb457b
BLAKE2b-256 585f2e5a5d9be8b17dc1fb50c4d75790dc9be5f9e84d70bf3a351b1c7edec5c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.5-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 43a5dc938f5d6b5525f82e79086dd77c6463c985bcd2cb4fa468aedeba5b6486
MD5 021642ada2184b90ccdd54d743c913e2
BLAKE2b-256 b0bdf44524d418aba9633251e68e062bd3bdf7d87c75306e026c99096f776c7e

See more details on using hashes here.

Provenance

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