[Maya] Controller follow mesh without circular dependencies




I’m looking for a way to avoid a circular dependency when setting up controllers which follow the mesh.
For example the setup with follicles which use the mesh to drive a offset group to keep the position of the controller.
My main issue is that with a 100 controllers this causes a slow down to about 15fps during playblack.

In the profiler I see a huge chunk called “evaluate cluster” which is being caused by Maya to untangle the cluster, if I delete the follicles this “evaluate cluster” disappears and everything is really fast.

Do you guys have experience with something like this? Any help is appreciated
If you need any additional information I would happy to provide you with that.



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:

  1. 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.

  1. 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.


Unfortunately, none of the nodes in Maya 2018.3 or prior that allow a transform to follow the shape of the mesh are Parellel Evaluation friendly. There is a new GPU accelerated and Parallel Evaluation friendly node that does allow for it possibly coming in the next release of Maya.

Refer to one of these white papers (depending on your version of Maya) to see what nodes are supported for GPU acceleration to help keep your frame rates up in Parallel Evaluation mode.

Also, I have a Pluralsight course that goes over creating parallel friendly rigs and how the mode works differently from DG: https://app.pluralsight.com/library/courses/maya-parallel-friendly-rigging/table-of-contents


I have a setup that uses follicle nodes as well but only using about 1/3 the amount you describe. I’m using Maya 2017 with evaluation mode set to Parallel. I max out around 70 fps so not running into the same slow down.

To add to @clesage suggested, you could do as he described and make a clean mesh with a copy of the skinCluster and blendshapes however to really squeeze as much performance out if it you could delete all the faces that are not needed for the follicles. This way the evaluation is on a less dense mesh. This way you have just a sparse amount of floating faces that deform the same as the full mesh. Much less to eval and should give back some performance.