Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For a more modern approach (that's one of those rare cases where things have gotten more powerful while getting simpler over the years): https://www.youtube.com/c/TenMinutePhysics/videos (by basically the inventor of PBD, which he barely even mentions/brags about).


I've been experimenting with webgl ragdoll physics based loosely on Takahiro Harada's GPU Gems article, but I'm nowhere near the "puppetmaster" stage yet ;)

https://developer.nvidia.com/gpugems/gpugems3/part-v-physics...


Big props to Matthias Müller-Fischer for his seminal work in physical simulation.

https://scholar.google.com/citations?user=HZwexAQAAAAJ


Yup I've written a few toy physics sims based on his work. Super prolific and amazingly elegant approaches.


What is PDB?


Position based dynamics :) With normal `next_pos = current_pos + velocity * dt` schemes you can get instabilities and it can be non obvious how to implement certain physics phenomena. With PBD you basically define a 'constraint' that particles have to satisfy (e.g. rigid lengths become a 'distances between points must be X') and then you solve for a valid configuration in between renders (basically with gradients descent, though you solve for roots so it becomes newtons method).


Paper for the extended version here, linking to this one because the extension solves some issues and isn't that much more complex: https://matthias-research.github.io/pages/publications/XPBD....

For a more lay explanation you solve constraints directly by moving elements around and using the difference between their current position and previous position as their velocity. If you've some experience of numerical integration it's quite similar to verlet integration. This approach is good because it lets you have constraints with infinite stiffness without the simulation exploding.

The original papers consider points (like a mass-spring system) but it's also been extended to rigidbodies.


Good survey on many other extensions too: http://mmacklin.com/2017-EG-CourseNotes.pdf


How does PBD compare to IPC[1] derived methods, like affine body dynamics[2] that I happened to notice in the latest siggraph papers?

[1] https://ipc-sim.github.io/ (see related projects section at bottom)

[2] https://arxiv.org/abs/2201.10022


Interesting! This makes sense to me.

I'm new to physics engines—I just started figuring out how to upgrade my simple grid cellular automata engine to a 2D engine for my toy sim tool (https://github.com/breck7/simoji) —and have been surprised by existing implementations, because it just seems not how the universe actually computes. I had not seen PBD before and it seems to be a closer model.


You should check out taichi: https://github.com/taichi-dev/taichi They have a ton of great demos for doing physics but check out this example in particular for something related to your project: https://github.com/taichi-dev/quantaichi#game-of-life-gol. (Taichi also makes it super easy to write things for the GPU and the kernels are differentiable :).)




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: