Blender 3 Simulation Solvers
Like many other people here, I cannot say in words how excited I am for the new Physics Node Solvers for Blender 3 being proposed.
code.blender.org/2021/07/nodes-workshop-june-2021/
TL;DR
Like many others have proposed, I too would like to see that the Extended Position Based Dynamics system (XPBD) be chosen as the replacement for the current Bullet Physics library.
The paper "Detailed Rigid Body Simulation with Extended Position Based Dynamics" provides "all the details to implement a fully fledged rigid body solver that handles contacts, a variety of joint types and the interaction with soft objects"
matthias-research.github.io/pages/publications/PBDBodies.pdf
Within the context of the XPBD system I also propose that it be written utilizing the Python embedded TaiChi language in whole or in part.
Long Part
There seems to be a lot of unnecessary duplicated efforts in the Blender community to develop a new Physics system for Blender.
For example, the people here...
... are developing "The first Node-Based, GPU-Powered Unified Physics System for Blender"
This seems to essentially duplicate what the blender developers are proposing for their physics node solvers. The Blender developers may want to contact these people and see what part of their code, if any, they may be willing to open-source and share.
Also, this group...
... is developing a new extremely easy to learn language called "TaiChi" that is embedded into Python. It is "JIT compiled and runs natively on the massively parallel GPU or multi-core CPU backend"
The value of this new language to Blender would be quite extraordinary as it would allow the developers and anyone else to write custom solver nodes directly in Python without having to write any CUDA or C++ code. TaiChi allows people to write programs that are "10x shorter compared to equivalent C++/CUDA code while achieving higher performance". The idea of a small, very simple language embedded into Blender Python that allows people to write massively parallel GPU and/or CPU code is just mind blowing. TaiChi could massively speed up virtually any calculations that are currently done in C++ or NumPy.
As one would expect, someone is already trying to develop a physics based animation system for Blender with TaiChi here...
github.com/taichi-dev/taichi_blend
And again, this is duplicated effort. Again, the Blender developers may want to reach out to both the TaiChi and TaiChi-Blend projects to see about getting these people directly involved in the new Blender Physics system.
As far as the current Blender Physics System is concerned, it is painfully obvious how out of date the existing Bullet physics library is.
The Blender developers may want to consider using TaiChi to implement the Extended Position Based Dynamics (XPBD) system along with Roy Featherstone's 6D spatial vector system to create an extremely powerful physics engine to handle all the multi-solver pipeline processing the new node system will require. I understand that using Python to run the GUI as well the embedded TaiChi language will require some thought, but that is above my pay grade.
For those not aware, the 6D spatial vectors I mentioned above are 6D vectors that greatly simplify the task of describing, analysing, and calculating rigid-body dynamics. Currently most physics engines use one 3D vector for position and another 3D vector for rotation. Using a single 6D vector to describe both position and rotation greatly reduces the algebra as well as the reasoning, debugging and maintenance of the code base.
More information on Extended Position Based Dynamics (XPBD) is here...
matthias-research.github.io/pages/publications/publications.html
More information on Roy Featherstone's 6D spatial vector system is here...
He also wrote a book about 6D spatial vectors here...
amazon.ca/Rigid-Body-Dynamics-Algorithms-Featherstone/dp/0387743146
This proposal obviously needs to be fleshed out, so I would appreciate any comments for or against.
11 Comments
Would be cool if the implement it and any other good fluid sim like This one youtube.com/watch
Yes, that is an excellent example of a simulation utilizing sparse volumes. That is exactly how the TaiChi language works as described in the paper here:
Taichi: A Language for High-Performance Computation on Spatially Sparse Data Structures
yuanming.taichi.graphics/publication/2019-taichi/taichi-lang.pdf
I support that Bullet should be isolated as an addon (like Cycles) and be replaceable by other engines (which there are many). I'm not sure about TaiChi lang. It's basically a Python framework, so any developer is free to use it already today. I don't see why it should be endorsed any further - implementing physics solvers is not every users daily routine.
There was taichi addon under development but blender's api isn't good enough (or good enough documented) for addon implementation if i remember right.
I agree as well that Bullet should be converted to an add-on for those who prefer to keep working with it. The reason I suggest TaiChi as the language to develop the new physics solvers is that it would be so much simpler for other people to make their own custom solver nodes with it. I agree that most people won't do that, but TaiChi would lower the barrier considerably for those that do. As an example Curtis Holt's EasyBPY makes scripting in Blender so much simpler for advanced coders and regular users alike. curtisholt.online/easybpy Even the new Serpens Visual Scripting system now allows one to use EasyBPY.
blendermarket.com/products/serpens youtube.com/watch
People love EasyBPY because it is simpler. TaiChi would also make it much simpler for people to do advanced parallel GPU coding for Physics Solvers and a whole lot more.
I think you might be referring to the fact that currently TaiChi does not support recursion. An attempt was made to rewrite the Molecular addon to TaiChi, but since Molecular uses recursion, it did not work. TaiChi is new and in active development, so as soon as Taichi supports recursion, it will be much more capable.
I guess it's every paper, a new algorithm or library Blender should use.
Well, if Blender had a physics solver framework that would allow people to easily create custom solver nodes, then yes, any new algorithm from most any paper could be added to Blender by anyone.
github.com/zenustech/zenoblend github.com/zenustech/zeno
Hi, Xin Li, are you @archibate?
This solution look... cool, yet outdated? (the repo hasn't been updated since 3years, yet you seem active 4days ago here, are you a maintainer of zeno?)
I'm actively looking for alternative to the painful singlethreaded bullet rigid body physics simulation, and haven't found that alternative as 2025, there seem to be TangraFX (but it's secret/hidden behind a discord) and all taishi implementation to accelerate blender solver doesn't seem maintained (or if their are, the ability for non-Chinese speaker to understand how all of this work is extremely hard).
Hello, I'm sorry but I'm not the maintainer of this project. I've only followed archibate's development content shared on Bilibili. It appears archibate is affiliated with the company behind the ZENO project, which has evolved into an independent free software. Taichi also has a new website. I hope you can find solutions to your questions in the linked documentation. If you wish to communicate with archibate, you can send him a private message through the website below.