
PPF Contact Solver
github.com/st-tech/ppf-contact-solver- Category
- Developer Tools
- Rank
- No. 285Tools index
- Pricing
- Open Source
- Platform
- cli · desktop
- Type
- TOOL
- Builder
- st-tech
- GitHub
- 4.5k stars
- Latest release
- 2026-09-08-20-35
- Date
About
A GPU-accelerated physics simulation engine for contact resolution between shells, solids, and rods. Designed for fashion e-commerce and cloth simulation with penetration-free contact handling and massive scalability up to 180M contacts.
What it does
PPF Contact Solver takes modeled geometry, material settings, colliders, pins, and scene forces, then computes an offline deformation sequence. Its finite-element models cover cloth-like surfaces, volumetric bodies, strands, rigid bodies, sand, and static obstacles. Users prepare work in Blender or JupyterLab, run the calculation on a solver host, fetch per-frame vertex data, and optionally bake the result into ordinary Blender animation.
Why it's ranked here
This is a serious simulation stack with an unusually complete path from research to production tooling. The contact method has a peer-reviewed foundation, successful runs receive an intersection check, and automated workflows repeatedly exercise examples. Blender, Python, JupyterLab, Docker, Windows, remote hosts, and MCP offer several entry points. The verdict remains qualified because it needs specific NVIDIA hardware, targets offline work, and documents meaningful SSH and MCP security weaknesses.
What's good
The workflow supports much more than a bare solver. Artists can group objects, tune measured fabric presets, add moving pins and invisible colliders, resume from checkpoints, fetch animation, and bake results that play without the add-on. Strain limits place strict bounds on triangle extension. Both contact and elasticity calculations run on the GPU in single precision. Documentation includes galleries, scripts, tutorials, troubleshooting guidance, parameter references, and explicit disclosure of AI-assisted code and documentation.
Tradeoffs
The hardware envelope is narrow: x86 only, no arm64, and an NVIDIA GPU supporting CUDA 12.8 or newer. This is an offline simulator, not a real-time engine. Docker deployment uses an image around 1 GB, while the native Windows bundle is roughly 320 MB. First-time SSH connections silently trust unknown host keys. The local MCP service has no authentication or sandbox and exposes arbitrary Python and shell execution. The authors also warn that add-on algorithms received less scrutiny than the underlying solver research and may retain rough edges.
How to use it well
It best suits simulation engineers, technical artists, and researchers producing cloth, soft-body, rod, rigid-body, or granular animation on NVIDIA-equipped workstations or remote GPU hosts. Build scenes and constraints in Blender, iterate on materials and global parameters, checkpoint long runs, then bake approved motion for downstream rendering. Use JupyterLab for headless sweeps and batch variants. Keep MCP local and review agent actions. Choose another tool when the requirement is real-time interaction, arm64 deployment, non-NVIDIA compute, or a general renderer and content-authoring suite.
Technical notes+
Cargo.toml defines a Rust 2021 workspace with five crates covering formats, core logic, PyO3 bindings, a Tokio server, and the CUDA solver driver. Its release build produces solver and server binaries plus a directly loaded PyO3 cdylib, with no maturin wheel step. pyproject.toml configures pytest across frontend/tests, crates/ppf-cts-py/tests, and addon_host_tests, plus Ruff for Python 3.11. docs/blender_addon/workflow/index.md documents the Transfer, Build, Run, Fetch, and Bake pipeline. docs/blender_addon/connections/index.md specifies CBOR envelopes, TCMD framing, TCP transports, and local or remote deployment modes. docs/blender_addon/security.md records trust-on-first-use SSH behavior, loopback scoping, Docker port exposure, plain-text connection profiles, and an unauthenticated MCP server with arbitrary code-execution tools.
Observed
- License
- Apache License 2.0, permitting commercial and proprietary use.
- Primary implementation
- Rust 2021 workspace for formats, core logic, Python bindings, server, and solver, with a Python Blender front end.
- Packaging
- Docker image and self-contained Windows executable are provided; the PyO3 extension is loaded directly rather than installed as a wheel.
- Interfaces
- Blender add-on, documented Python API, JupyterLab workflow, TCP solver protocol, and local MCP server.
- Platform support
- Linux through Docker or local and remote hosts, plus Windows 10/11 native or Docker; x86 and NVIDIA CUDA 12.8 or newer are required, while arm64 is unsupported.
- Testing structure
- Pytest targets cover the frontend, PyO3 bindings, and add-on host tests; separate Blender and example workflows are described.
Read from README.md, Cargo.toml, pyproject.toml, docs/blender_addon/index.md, docs/blender_addon/gallery.md, docs/blender_addon/glossary.md, docs/blender_addon/security.md, docs/blender_addon/tutorial.md, docs/blender_addon/troubleshooting.md, docs/blender_addon/llm_transparency.md, docs/blender_addon/gallery_mcp_prompt.md, docs/blender_addon/reaching_the_author.md, docs/blender_addon/workflow/index.md, docs/blender_addon/connections/index.md.
What it can do
Resolve contact collisions between fabric shells
3D shell geometry data and simulation parameters → Penetration-free contact forces and positions
Simulate cloth physics with solid object interactions
Cloth mesh data and solid geometry → Real-time cloth deformation and collision response
Process massive-scale contact problems using GPU acceleration
Contact geometry data up to 180M contact points → Solved contact forces and displacement vectors
Simulate rod-based physics interactions
Rod geometry parameters and boundary conditions → Rod deformation and contact response data
Generate fashion garment draping simulations
Garment pattern geometry and body mesh → Realistic fabric draping visualization data
Resolve multi-body contact constraints in parallel
Multiple interacting object geometries → Constraint satisfaction solution with contact forces
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.