Mesh Physical Interactions- "Squishing" etc

Suppose the following scenarios: a person sits in a chair, and their thighs and the seat cushion deform to conform. Two persons hug each other, and their bodies squish together variously. A person grabs another person’s arm with their hand, and the arm deforms under the fingers. A rotund person sits in a small chair and is squished by the char’s arms. There are many such interactions in reality.

Let’s assume we’re going for something visually realistic, how are these problems addressed by experts in animation? Is there a specific way of handling meshes, plugins, and workflow to do this automatically or is it just done with specific, frame by frame adjustments? Can it be done reliably with Blender systems like soft body and shrinkwrap? How does an animator who knows what they’re doing approach this?

Custom, proprietary, in-house tools that if they ever get ported to consumer use, cost many thousands of dollars.

There are a few ways- the two major options in Blender are shapekeys and frame-by-frame correction. Neither option is great, but there’s really not a lot of good answers here generally. This, among many other reasons, is why there are hundreds of animators working on every major 3D feature :wink:

Another, newer, option is geometry nodes, which allows for a more automatic solution. Check this out:

This system isn’t perfect and still needs a lot of manual tweaking, IMO, but it’s still incredibly powerful and could potentially save you a lot of time.

My personal answer is a combination of geometry nodes, shapekeys driven though RBF drivers, and… avoiding these situations when possible :sweat_smile: Tricky camera work and careful planning goes a long way here

2 Likes

Thanks for the reply joseph!

It’s kind of surprising that there aren’t any general solutions as this is a very commonly observed part of reality.

i must admit i’m a bit surprised that in some of these cases, the chair cushion being a perfect example, that softbody/cloth sim wouldn’t be a solution. assuming that the cloth is “stiff” enough, and volume tries to hold to the same, i would have thought that would be at least a reasonable solution.

and if that worked, then one could do that with a human body, but in layers. taking the hand grabbing an arm… if the arm is say, a solid or very stiff cylinder that is contained wholly within a thicker cylinder representing the flesh itself, which is less stiff than the underlying, that would allow for some deformation on the arm without it collapsing the entire arm.

1 Like

Yes, individual cases can be achieved on a case by case basis, but I guess I’m thinking in terms of a general solution in which one is modelling somehow the interior nature of the body in zones of volume and stiffness which react differently- fat can be squished out of the way but there are limits, bones won’t squish at all, etc. Which would mean really not starting with a mesh, but with that model which in the end generates a mesh as the final step.

Maybe an AI will come to the rescue…

The problem comes when you try and mix physics with armature animation. They use completely different engines and completely different timing clocks, so they do not mix well.

There are, just not in Blender, and definitely not free. There’s solutions all right, but you’re going to pay an arm and a leg for them.

Again, geometry nodes works decently well, and shapekeys works pretty well too, but a full general solution- either cough up for a studio tool, or deal :wink:

1 Like

The problem comes when you try and mix physics with armature animation. They use completely different engines and completely different timing clocks, so they do not mix well.

Yes, I think it requires its own engine, considering the problem generally.

1 Like

well that’s just silly talk… who’s the mixologist around here and how do we get them working on this? :smiley:

well, was just a thought. :confused:

3 Likes

The other major problem here is that soft tissue deformation isn’t uniform, but depends on the underlying structure of the muscles, bones, tendons, and ligaments. You can see this if you gently squeeze your forearm, then your thigh- they deform completely differently. If you have access to a woman’s body, either your own or a consenting friend or partner, you can get a third highly unique form of deformation by gently squeezing a boob, which is fat only and thus behaves entirely differently than either of the two earlier examples.

In order to accurately simulate what you’re looking to simulate, you have to accurately create musculature, ligaments, etc. There is actually a Blender add-on for this:

It doesn’t really handle collisions, but it makes accurate non-colliding deformations. It’s still not as powerful as a studio tool, but that plus geometry nodes would probably do in a pinch.

Yes, it’s a complex problem. It just seems like something people cleverer than me would have wanted solutions to…

Can Houdini do that?

In the real world things simultaneously effect each other. Imagine the hair of someone moving underwater. Hair moves the water and at the same time the water effects the movement of hair.

I saw a behind-the-scenes for Lolita Battle Baby, uh, Alita Battle Angel. They noted an in house “coupled” simulation for her hair in the underwater scene. Coupled as in fluid sim and hair sim effecting each other. Her hair is very stiff so I don’t think they got much for that effort but that “coupled” interaction is probably what you want and probably something Blender can’t do.

Creative use of Blender tools might produce something suitable though.

1 Like

Again, there are absolutely powerful, expensive, project-specific studio tools that can do this. Blender is not one of them.

1 Like

Yes, in a variety of ways, from straightforward and simple to very detailed and complex to setup.

The easiest - and pretty generic - way to achieve something like it is turning your squishy assets into Vellum softbodies or cloth.
With characters, a simple, semi-automated approach is possible: turn the character into a tetrahedral softbody, and use a shrinked (via displacement & smoothing) version of the skin mesh to drive that softbody, this will yield a very simple “squishy” version of your asset, with a rigid core surrounded by a soft “hull”. I have used this a number of times to eliminate self intersections, for later cloth sim.

For a detailed tissue simulation there are both Vellum and FEM based solvers, however both of these require a lot more work to get them up and running, starting with elaborate models of muscles and bones anatomy.

Of course it is possible to set up an equivalent for that non-dynamic, raycast-based Blender geonodes self intersection eliminator too.

3 Likes

You lost me at “tetrahedral softbody”?

That type of softbody simulates interior forces by using an internal mesh made up of tetrahedrons.
That allows for more accurate modelling of physical behavior, and It is also possible to simulate non-uniform material properties that way.

1 Like