Yeah, if you have surface or mesh constraints, they get heavy quickly. And especially if you then also deform the mesh with more deformers like an FFD. Anything geometry-based nodes that also goes through a lattice gets super heavy.
I don’t have any direct solutions, but a couple of possible suggestions:
- If you can, use a duplicate mesh to make the controls follow. Don’t have any extra deformers on this mesh. Keep it as clean as possible. Copy the skinCluster and blendShapes and nothing else, if you can. If that is all you have on your current mesh, this won’t help you.
If you have a full-body mesh, try having the duplicate mesh just be the selective patches of the geo that you need to pin controls to. Don’t wrap deform it, because that will be heavy. COPY the skinCluster and blendShapes. Skip any heavy deformers on the duplicate mesh. As long as you can approximate the position, it will be good enough.
- Really honestly evaluate the usefulness of having the controllers follow the mesh. I was working on a project where all of the animators hide the controllers anyway, and use a synoptic picker tool. It was a complete waste of 20 to 30 FPS. So I just removed it and simply constrained them to the head and moved the shapes out a little bit. Good enough… (Fun fact: The picker was pretty slow too, because it had callbacks every time the selection changes.)
I also did some renovations on some rigs, where they were using cMuscle Surface attach nodes to pin things to static parts of the geometry. They could have just used a simple hierarchy or parent constraint.