TAngra multiphysics node base engine for Blender

I’m in the beta phase of my multiphysics node base engine for Blender which will allow the users to do complex simulations easily in Blender using a node base environment.
Tangra currently supports these solvers: MPM-MLS, Grangular, FLIP, SPH, PIC, APIC, Phyx, and Bullet physics.
It is capable of creating dynamic fractures in real time, based on events or internal collision systems.
It has an internal Ragdoll system that can be activated based on time or events like a collision with an object.

you can find more examples and follow the progress on my discord server: https://discord.gg/zZHSG5nYSM or Instagram: https://www.instagram.com/tangrafx

The crowd system is in development and will be added soon.
here are a few tests that we simulated using TAngra in Blender.



Cloth simulation.

CopyCat Ragdoll system.


Fracture and rigid body.

Rigid body + Grangular solver

34 Likes

discard is not accepting invite

When do you planning on releasing this to the public, and how much do you plan on charging? I might need to start saving up :wink:

4 Likes

It’s working for me please try in another browser that you are log in already in discord.

1 Like

as soon as possible, a free version will be available for all but it may have some limitations like no GPU or no multithreading. but it can be used for any purpose.

6 Likes

All pretty impressive stuff. Of most interest to me is cloth simulation, but I get a feeling this still really won’t work for realistic and controllable character cloth simulation.

cloth simulation is in 65% development stage, the simulation it self is great and realistic the problem is skinning the existing mesh cloth to it or creating a thin mesh from it, blender doesn’t support any of them by default, also exporting and importing data to the blender is the slowest thing that can happen as blender UI is not thread-safe and can be accessed by single thread using python with GIL lock.
in my stand-alone simulator, I’m able to simulate thousands of cloth in real time but when I use it in Blender it’s not as fast as in the stand-alone version to be more precise is almost 32 times slower on my hardware.

2 Likes

Is that because it’s trying feedback and update the viewport in Blender for every frame or sub frame for every point/vertex that it is trying to simulate?

If that’s the case, then just don’t do it. As things currently stand, when we try to simulate cloth, we set it going, sit back and wait for it to be done and cached and then see if it worked (which usually it doesn’t). Now that wait can take ages, due to the slowness of the simulation. If with your system we only have to wait in real-time to then see the results, then that’s already a massive improvement (assuming that the results are any good).

your solution it was my first try but unfortunately is not going to work for the fast motion because you need to check the update for meshes in the blender for every single substep and sample. otherwise, the results will be missed up.
imaging of the fast movement of a sword that tries to cut through a cloth and all the movement will just happen in 3 frames. you need at least 70 substeps sampling otherwise it will be just a nonsense simulation. and for every single time that you try to access meshes you need to stop the simulation release no gil lock update data and then use no gil start simulation again and repeat this process thousands or millions of times.
i tried every single solution you imagine I even created two different threads and used one of them as the main multithreaded handler and the second one as a single thread cache loader fo interact with blender UI. (this one give me best results as they can work almost separately but at certain points they need to wait for each others) when there is no notice movement in the scene it will work like a charm. with fast movements not as fast as using C/C++ like in 3dsmax or Maya that I used to do.

2 Likes

OK, fair enough. Makes me wonder a little what Flip Fluids does, but maybe it’s just slow due to the reasons you outline.

So it almost sounds like in order to get real performance, that an addon just doesn’t work. It either needs to be an external app with import/export options or completely C++ and coded as part of Blenders core.

Both of which are challenging for different reasons.

2 Likes

Flip Fluid Team are planning to rewrite the plugin to make it work outside Blender AFAIK

2 Likes

Like The Grove add-on?

2 Likes

@omidghotbi this looks really exciting indeed! I am wondering how universal the solvers are. Can the flip, mpm and rigid interact and solve in one pass or would they have to be baked one after the other?

I have been drooling over the new mpm solver in Houdini and looking to get back into Houdini, but this might be good enough for my needs. Would be much better to stay within the Blender ecosystem.

Are you looking to sell on BlenderMarket, as I would be keen to pay for a license even at this beta stage? I haven’t had good experiences with buying addons that aren’t on the BlenderMarket, so I hope that will be an option.

1 Like

The Belender itself won’t let us do some stuff, to be clear all blender parts are working separately and do not talk to each other that’s why you can not apply particles on a rigid body and you need to bake it, etc.
To answer to your question I should say it depends on the Solver you try to use. For example, in MPM-MLS you can have different materials and collisions etc. so you can simulate the water, sand, stone, metal, etc all in one step.
but for SPH/PIC/Flip you need to bake it or you need to use my SDF surface Mesher that can interact with the Geometry node and the results can be used as a mesh in it so you can continue adding stuff on top of it directly even in time of simulation.
I should mention you can not simulate SPH and MPM at the same time and expect them to interact directly to each other without taking an additional step. for example, you can make a Granular solver interact with others as a Collision if you use my instance mesh node in Tangra, so it will act as real geometry and that geometry can act as collision for other solvers.
So as you can see you can do it but you need to do additional steps or certain points and that is because every single part of the blender works separately, for example, you cannot use particles for wrapping or skin another surface. this one i will need to implement in future, it can be useful in many cases.

2 Likes

couldnt you automate the export import ? like export mesh and animation data into a memory object which can be read by your code and after simulating it import back into blender.

but maybe that cannot work for every solver

you could spawn a new window(not a blender window but your own window) where the artist can evaluate the animation while its simulating

I just managed to Add Retiming system, for Granular Solver.
Here is an example.
Cup-Ceramic-low


Sorry for the quality 5mb is the limit for uploading files here so I have to reduce the quality.

6 Likes

Thanks for the info! The MPM solver sounds very promising. The recent Houdini demos showing water, sand and mud mixing with their MPM solver has piqued my curiosity with that type of solver. Would be cool to see a demo of your MPM solver with mixed material types.

It is really is sexy as hell. Is the retiming an operation done after the fact (some kind of interpolation) or an actual slowdown with increase of substeps ?

it can work both ways.

Which one am I seeing in the capture ?