Projective Dynamics Simulation Zone Design

In the geometry nodes module we’ve been working on a softbody simulation feature for a while, with the added goal of establishing a general workflow for declarative workflows that can be used for other simulation systems and solvers as well. I had a talk at the last Blender conference about the current state of things.

The gist of it is that instead of running a simulation on a single geometry (mesh) we declare simulation targets in “bundles” which can be combined with other behaviors. This has several advantages, among others it avoids baking to attributes for dynamically changing fields (forces for example). The solver node evaluates the bundle content and evaluates the fields when needed.

Our current solver node is a generic XPBD implementation (physics-solver branch). XPBD is more widely used and special constraint formulations for Cosserat rods are easier to find, which is important for our immediate goal of implementing hair dynamics.

A dedicated PD solver could be an interesting option, especially if it uses an existing library. I’ve experimented with PD at one point based on the “Cosserat Rods with Projective Dynamics” paper by Soler, but shelved the idea for the time being in favor of getting a functioning system first. The main issue i had was that the global solver relies on constraint gradients and handling hard constraints isn’t trivial. To my knowledge the ADMM technique specifically addresses this by alternating soft and hard constraint solver steps (“Interactive Hair Simulation on the GPU using ADMM”, Daviet).

All that being said, i personally have a strong aversion against AI generated code. I don’t know if Blender has a policy on this topic yet.

8 Likes