ppf-contact-solver
Libraryst-tech/ppf-contact-solver
A GPU-accelerated contact solver for physics-based simulations of shells, solids, and rods.
Overview
It provides robust, penetration-free contact resolution with scalability to over 180M contacts. Uses finite element method for deformables, runs entirely on GPU in single precision, and includes Python APIs, a Blender add-on, and Docker deployment.
README Preview
# ZOZO's Contact Solver 🫶\n\nA contact solver for physics-based simulations\ninvolving 👚 shells, 🪵 solids and 🪢 rods. All made by [ZOZO, Inc.](https://corp.zozo.com/en/), the largest fashion e-commerce company in Japan.\n\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/getting-started.yml)\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/run-all-once.yml)\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/run-all-once-win.yml)\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/make-docs.yml)\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/build-docker.yml)\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/release-win.yml)\n[](https://github.com/st-tech/ppf-contact-solver/actions/workflows/blender.yml)\n\n\n> 🤖 We **highly** respect that readers expect to hear the author's original voice and tone, which we work to retain throughout. Our use of LLMs is clarified in [(Markdown)](./articles/llm_transparency.md).\n\n## 👀 Quick Look\n\n🎨 Simulate remotely from our [Blender add-on](https://st-tech.github.io/ppf-contact-solver) (screenshots taken on macOS; you can also run locally if you have a modern NVIDIA GPU on Windows or Linux)\n\n\n\n🚀 Or double click `start.bat` (Windows) or run a Docker command (Linux/Windows) to get it running\n\n\n\n🌐 Click the URL and explore our examples\n\n\n\n## ✨ Highlights\n\n- **💪 Robust**: Contact resolutions are penetration-free. No snagging intersections.\n- **⏲ Scalable**: An extreme case includes beyond 180M contacts. Not just one million.\n- **🚲 Cache Efficient**: All on the GPU runs in single precision. No double precision.\n- **🥼 Not Rubbery**: Triangles never extend beyond strict upper bounds (e.g., 1%).\n- **📐 Finite Element Method**: We use FEM for deformables and symbolic force jacobians.\n- **⚔️ Highly Stressed**: We run GitHub Actions to run stress tests [10 times in a row](#️-ten-consecutive-runs).\n- **