Posted on July 1, 2021, 12:38 p.m. by Lewdineer • Last updated on June 26, 2023, 9:02 a.m.
Hey everyone that is interested in this tutorial.
Over time I found a way to make somewhat proper boob/jiggle physics with volume tracking in blender, which I thought would not be impossible. I was able to do that in Maya but never in blender, as the volume tracking part never work, but recently I found a way to do it and I would like to share it with you
I will guide you through the process and all the parameters you will have to configure to get a decent working result for a soft body object that can squish/squash and deform your main object that is simulated dynamically and can interact with any kind of another collision object.
Here I will focus on Boob simulation, as that is probably what people want to use it for ;)
I know there are people of different skill levels and I will try to explain every step in a way that everyone should be able to follow.
Example of regular cloth simulation without volume tracking vs the volume tracking method i found: Video G Drive
Things we will do:
Something important I want to mention before we start, make sure to use Real life proportions and sizes for your model, otherwise, you will have vastly different effects for all the parameters. A quick way to check the size of your model, select it and press "N" to open the toolbar and under "Item" check the Dimensions, it will display the XYZ size of your selection, does it make sense, and conform to a realistic size? Good.
The goal for the proxy mesh is to make a model that encases the area to be simulated, the proxy mesh should have even distribution of polygons, not too many and not too few polygons for the best simulation outcome.
Example of shape that we need
One possibility is of course to just copy-paste the existing mesh and use that as a base, but in my experience, the mesh is too uneven and not really suited for the simulation so I will focus on another method
Go out of edit mode and apply the subdivision modifier, Modifier tab -> small arrow facing down -> Apply
Now that you have more points to work with, align it more accurately so you have something like this. I personally recommend the plugin PolyQuilt, as it has a smoothing feature that aligns to another surface when you press shift, makes it a lot easier for aligning.
METHOD 2: Instead of alligning by hand, you can use a shrinkwrap modifier, you will have to make a pinning group for the backface, so it does not deform, you will have to make that pinning group in the next chapter anyway, so you can reuse it.
Make sure, that the mesh of your proxy and the main mesh do not cross the centerline, as that will cause problems in later steps when binding the meshes.
You now should have a cloth sim that looks pretty much like crap, good.
I'll go over the parameters of the sim and explain the important bits and things i learned.
Quality steps should be around 10+ as the simulation broke sometimes in my testing.
Vertex mass makes a big difference, use around 1-2kg for a more snappy simulation and 2+ for something with more weight, which will also jiggle more and for a longer time.
Air Viscosity is used to Dampen the whole simulation because boobs don't jiggle for 5 minutes after they moved.
Tension Stiffness is used to keep the whole thing in shape, but setting it too high, will prevent the Volume tracking/ Compression effect, in my testing values from 1-2 are alright, I would recommend 1.6 - 2.
Shear damping is also used for the same reason as the air Viscosity, to dampen the whole simulation, you can play around with it, but for me, the max value (50) was needed.
Now to the probably most important part of the parameters, for this whole thing to work the Pressure Scale has to be insanely high, somewhere from 6000-10000 (max), i recommend 10000. Leave the Pressure at 0, or just increase it by a little bit like 0.1 if you need some extra volume. Leave fluid density at 1.
The shrinking factor will shrink the mesh a little after the simulation has started, which will cause the shape to go back more into its original shape, I recommend something around 0.1, or just 0 in some cases if you want more of a floppy behavior.
For collision distances, something around 0.001 for the proxy and the other collision object was mostly enough.
I think that covers the whole parameters part, at least i hope so :P
I'm assuming you have a base character that has an armature applied to it.
For the Main mesh to follow the proxy we need a "SurfaceDeform" modifier, in the modifier select the proxy mesh and click "Bind". For the "Surface"Deform" to not affect the whole rest of the body, we also need a vertex group that tells it which Areas should be excluded. In edit mode in your main mesh select the vertices that are supposed to be affected by the proxy and add that group to the SurfaceDeform modifier.
If you start the simulation now, your main mesh should follow the simulated proxy.
The arrangement of the modifier stack is pretty important, as some modifiers are dependent on others, mine looks like this
The multires/subdivision and corrective smooth are ofc optional. But I would strongly recommend a corrective smooth for the outer edges of the simulated area, as that part can experience some strong deformation compared to the non-simulated area next to it. Important: You don't want the corrective smooth to affect the whole simulated area, just the outer area of it, check the example file and look at the "Corrective_affect" vertex group.
So now the other way around.
To Bind the proxy to the main mesh we use a normal Armature modifier.
Modifier stack should, in the end, look like this
Make sure you are at frame 0 and move your armature, the proxy should follow the main mesh pretty accurately, and when you press play the simulation part should start.
Here is a link to all the videos and a .blend file that contains a setup of the whole working example, feel free to check it out and learn from it.
Examples of what can be done with this technique:
An inflation type scenario can also be made like this
With these settings for the proxy mesh:
Make sure to set the pressure scale back to 1 again, and the pressure to around 30, set the tension stiffness to 0, and the tension damping to the max. I can't guarantee it will have the same effect for you maybe have to play around a bit.
Alright, I finally made it.
I wanted to do this tutorial but never really had the time or was just intimidated by the amount of work it would be. At least i hope that this can help some people, or maybe even me if I forget some things.
Here is my Twitter, so if you actually try it in your project I would really like to see how you use it, so feel free to tag me or write me a question if you are stuck or something :)
Okay, I think that's it, I will update the post based on the feedback I get or if I find something myself, alright then, have a good one, and thanks for reading.