3 ms·
What is PDB?
by rando14775 4y ago
What is PDB?
- naillo 4y agoPosition 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).
- meheleventyone 4y agoPaper 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.pdf 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.
- naillo 4y agoGood survey on many other extensions too: http://mmacklin.com/2017-EG-CourseNotes.pdf http://mmacklin.com/2017-EG-CourseNotes.pdf
- zokier 4y agoHow 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/ https://ipc-sim.github.io/ (see related projects section at bottom) [2] https://arxiv.org/abs/2201.10022 https://arxiv.org/abs/2201.10022
- breck 4y agoInteresting! 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 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.
- naillo 4y agoYou should check out taichi: https://github.com/taichi-dev/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 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 :).)