Bind soft body mesh to animated mesh

What is the best way to attack soft body to an animated mesh? I’ve researched it a bit and every method has its imperfections making it hard to control.

Using surface deform - it works good in limited scope, when I want to attach more soft bodies for different parts, it won’t work. Also any shape key of the main mesh will stop working with it.

Using mesh deform - allows to do more than surface deform, but requires higher precision of the soft body mesh and creating additional vertex groups to not have unwanted deformations. It’s quite slow, and when animating the mesh, I can see some grid lines on deform?

Is there another way to achieve this or I’m stuck with these two methods? Maybe there’s a plugin?

It’s case by case for me, depending on what’s going to work best, what’s going to be easiest to implement. Surface deform is good for some stuff, mesh deform is good for other stuff.

It should. Surface deform can be vertex group limited for quite a while now. Not sure what problems you’re running into.

Whenever you’re running physics, you’re giving up some level of manual control. That’s the nature of physics. However, there are ways to influence physics. In this case, you shouldn’t be trying to run shapekeys on the rendering mesh; instead, you should be doing what you can to control the physics mesh. In the case of softbody, something I do sometimes is created pinned control points. To give you an example:

Notice that I’ve got a loose vertex connected by edges to a few vertices that are parts of faces. If I assign this vertex to a goal group (and, probably, to an armature), I can use it to influence the physics.

While higher precision is often nice, it’s also probably less necessary than you think (as are vertex groups.) By using multiple shells, you can even out the interpolation. Here’s a cross-section of a mesh deformer that I might use:

I’ve hidden some vertices so you can see inside. Obviously, mesh deformers need to be manifold meshes. I’ve just got two simply subdivided cubes here, one inside the other. This is with face orientation enabled, because the direction that the normals point is very important.

Here, I would deform only the inside cube, while the outside cube remains static. (You can assign outside cube to a goal group, or use geometry nodes to join an outside cube after soft body physics.) When we do this, the position of the geometry inside those cubes depends on how it will be affected. Any vertices outside the outside cube will be deformed only from the outside cube-- and since we’re never deforming the outside cube, that means no deformation. Any vertices inside the the inside cube will be deformed only by the inside cube. Vertices between the two shells will interpolate, based on their distance, from being deformed by the inside cube, to being deformed by the outside cube. This usually means that we don’t need to use vertex groups, and the interpolation means that those vertices with iffy binds at low precision end up being fine.

For a character model, I will almost always be using a bone-parented mesh deformer with “dynamic” enabled.

This is just about using enough geometry on your deformer. One idea you might consider is softbody followed by c-c subdivision on your deformer, which will give you smooth geometry without affecting your physics.