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

Uploaded CPython 3.13Windows x86-64

pyuipc-0.0.6-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.6-cp312-cp312-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pyuipc-0.0.6-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.6-cp311-cp311-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pyuipc-0.0.6-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.6-cp310-cp310-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pyuipc-0.0.6-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.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyuipc-0.0.6-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.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c2372a61969e82a29ba77efd9ba2eceb8ae12052ec2d5e9cd751b283265a4dc8
MD5 1ae659cebcd8dfebf1880a601d2d56f4
BLAKE2b-256 834869967575965081f7f459acf68d698f56ebb96564b7e8843a6fbbc632b156

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.6-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ef7df4f9e2eb6973dfa67a4873d23a7d48bc02a6ae67bd30ccc9124b6924e451
MD5 e394747054ab1f7b66fab743d41cbaaf
BLAKE2b-256 4c67a414747cd38228c84cda2a689cc770a6b3b3ecbe9af6212a12ab93c0dcb5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.6-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.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 60987f7a2e9ce25f55f9ddde7c77889f0be30bd91cfb0e645d2111a0d26c7624
MD5 aa5fe108a12cbbbf1541d0f72a0ce8e5
BLAKE2b-256 b2215196c2f59707c19b7d861008e2dce2283fe263809117bebdacbdc1b371a0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.6-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 350ab0d6806c78980567ccfe02f0e625d7c238d9a0dc8f3922eae07ec19e7b96
MD5 435bb3dadc0060a03eb3b7794ba2e5d5
BLAKE2b-256 2d9cf5d4e2e51581eb3282c239e1977cbb13a1d388d4cb346f59af0a0872eede

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.6-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.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 af89705d195eb1537632c4c274975e0acfdc521ebd300fdc32a2f541ca509d1a
MD5 71d15178c6f282ff276025ada097cd4f
BLAKE2b-256 6016284d091c841a6206b6a0cecc7e3de3e72271815e9951636a827823038c5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.6-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 45362cae3b632d6b6241663f4e0bb1b643e530d68e205216123f4e2fe1ed749a
MD5 867a41c12368c53c1f2645de4bddc301
BLAKE2b-256 66aa7a08b394f3746abccb216e4ec779741bf7128642b81c307225260f314439

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyuipc-0.0.6-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.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 10c0e3029c612dd58c8cf99fea5c78d225d6f22b02cfd9363457611c4497a0a3
MD5 f96112b56f15e3f413a169fb4dadc6a5
BLAKE2b-256 20af459b1bf60ff9cf77d3d912ee858b767acb311903a4df898fb5571dd2d40e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyuipc-0.0.6-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 92031d7c113c66f161da06a215fa4d7d96afed45b471043ebe17fdec0e8f4047
MD5 4c66c0ac818255b24e35e7f876cc7563
BLAKE2b-256 e66f0b0ab120e6a8577e36c3b6642b6f6b032fd511410f71d70c5e14fa4877e7

See more details on using hashes here.

Provenance

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