GSoC 2022 : Soft body simulations using XPBD (Discussion Thread)

Hey everyone, opening up this forum for any feedback and discussion around the project.


Far as I can tell this is about slicing a mesh volume into tetrahedron blocks so I don’t think it belongs in triangulate modifier. To be honest it doesn’t fit in any of the current modifiers that well since Blender has always lacked proper tools for generating fractured state from a solid.

This would probably be pretty helpful in geometry nodes too. There is apparently way to do fragments in the latest geo nodes ( Cell Fracture Video ) but having a node that can just split a mesh/volume into different primitives would be handy. That’s besides the scope of this GSOC, though, since far as I can tell the tetrahedralization is just a precursor to getting to work with the XPBD physics? Still something worth thinking about if you decide to keep contributing post-GSOC.

The effect on Suzanne in the latest update looks cool. Not much to comment on at the moment since there isn’t that much to test but hopefully it turns out good.

Hi, @arcticblazer
I’m following your progression and I’m really excited. I’m not a developer but I can feel the difficulty of this stage that you are in right now… I can’t understand technically what the tetrahedralization process does but, once you reach the initial physics implementation part, I will build the branch and test.
I really wish you the best with this challenge.

Looks great so far!
I guess it’s too early to report glitches but another thing is I had to modify line 631-632 in for it to compile. It also looks like you’re not using automatic formatting… that can help a lot.,5): error C7555: use of designated initializers requires at least '/std:c++20'

  CustomData_MeshMasks cd_mask_extra = {};
  cd_mask_extra.vmask = CD_MASK_ORIGINDEX;
  cd_mask_extra.emask = CD_MASK_ORIGINDEX;
  cd_mask_extra.pmask = CD_MASK_ORIGINDEX;
1 Like

@3Rton yes that’s the plan, after I’m done with the GSoC project, I will definitely make a proper separate modifier if nothing else for the tetrahedralizer until we fix up the way data is stored for tets.

@EvertonSchneider haha thank you so much. I definitely hope to update you soon on that. Now that I’m done with the tetrahedralization, I am starting the work on simulator

@ecke101 yeah I’m using a higher version of GCC and that’s why I didn’t have to face the issue. However before the next branch push I’ll set up the automatic formatting.


Basicly with this video it’s eaxctly the smae but in blender ? (tetra + simulation)


Finally, the first simulation already looks like a full-fledged working system!

1 Like

One thing i don’t understand… Is a bug the tet as showed and stocked like a quad ? or in the final version is still stored like a quad ? Because in my opinion the topology need to look like TET if i’m not say bullshit or wrong things…

Tell me he gonna be stored and used and display like a tetra (Triangle topo also because tetra is a combinaison of triangles…)… not a quad …

For my own i understanding the stored like a quad is a bug… and should be stored like a tri and display and used like a tétra… it’s right ??

Hi. I follow this project after finding out 2020 soft body project didn’t work out. I can’t help but notice Matt Overby seemed to have a lot more to show after 2 months. Maybe it’s just a different tech and this one is harder to code, but that makes me wonder - are you planning to finish it after GSoC is over? I hope it doesn’t end up as another unfinished Soft Body solver, Blender needs one.

Don’t worry is exactly what he works actually and as i can see the result promise … some fantastic result with Tetra optimization

@Shaggy90, to answer yes I do plan on continuing work on the project after GSoC as well. As for it taking more time, I feel a lot of my time was spent in understanding different systems in Blender but that was done so that I could eventually build the system to be robust enough to be merged with main.

@Stimes, about your question of how we’re storing tets as quads, you are correct, this is just a makeshift solution since in Blender we don’t any framework to store 3D primitives such as tetrahedrals but only 2D primitives that are polygons. By storing each face of the tet as a triangle will cause us to lose the tet information (which 4 points make up the tet) and that’s why we are storing the entire tet as a quad


That’s great! BTW, I didn’t mean to be rude saying it takes more time - Take as much time as you need to make sure it works good, as long as you intend to complete it at some point. :wink: I was just afraid the project ends when GSoC ends.


Ok i appreciate :smiley: but we can create a 3D hierachy fo stock the tets, no ? this new stockage can inccrease the power of the simulation and the final render… or we implement it at the end ?

When will we be able to use this feature


Hi @arcticblazer, any guess as to when we might be able to test this out and provide feedback? Absolutely excited at this new solver! :smiley:

1 Like

Hey @fland and @OcularEvolution, I’ll start back working on it this week. Collisions are slightly tricky so I’m not able to give a definitive timeline but I will keep my progress updated here