Displacing a mesh with another

The character I’m trying to rig has a huge collar, which needs to be displaced by her head.
If the head would only be able to move in four directions I could easily create the effect using shape keys and link them to the bones, but since the head needs to be moved in all directions I’m pretty much out of ideas.

In my example the head is represented by a cylindar, since it’s pretty much it’s shape

The head rotated to the right

The outcome I would love to achieve (created using a shape key)

1 Like

You’re showing me physics here. And, yeah, you could do this best with physics-- make a thin, non-rendering mesh representing the collar, pin the bottom, give it cloth or soft body, and surface deform the collar from that proxy physics object.

If you wanted, you could try the same thing, but with a shrinkwrap/outside modifier instead of physics. Since you already have thickness, again, I’d use a non-rendering, thin mesh object with the shrinkwrap modifier, and then surface deform from it. SW is more convenient than physics, but it’s easy for it to get some ugly looking deformations because of the way it works.

1 Like

Damn, I hoped I could handle this somehow without using physics. Maybe some clever system of bones or something I’m just not aware of.

I’ve already tried the shrinkwrap modifier, which gives pretty similar results as the cast modifier (which kind of works, since the head is basically a cylinder). Both give “okayish” results, till the point the meshs intersects a bit too much.

A complicated, but realtime approach could be to create 8 shapekeys and link them using drivers. But this seems like another overkill idea for this task

Maybe you can try geometry nodes?

This is not a complete solution, but maybe a step towards one:

I use the rotation of the cylinder to compute the deformation of the torus; in particular I only deform the torus if the cylinder points towards it.

(Blender 3.1 alpha)

proximity_deform.blend (131.3 KB)

1 Like

Oh that’s really interesting. Thank you a lot. I guess I should need to take a deeper look into geometry nodes.

While the geometry nodes solution is probably the more future proof and elegant solution I tried another route, since I need to get more familiar with these nodes first.

I thought I may share my solution for people searching for something similar:
I use a lattice, which deforms the collar into the shape of the maximal deformation and use a Locked Track constraint to orient it to the tail of the bone.
Than I use the local X and Y rotation of the bone in a driver to control the amount of displacement the lattice creates on the mesh.


Here you can find the driver settings