[Rigging] Controllers following mesh when using blendshapes


Hey there!

I am having a really hard time trying to figure out how to rig a cartoony face.
What I am trying to find out right now is how to make mouth controllers that follow the mesh when using blend shapes?

In the setup I am working on right now I just dropped some cluster controllers inside the group I am deforming with my blend shapes. So when I set up some shapes, the controllers follow — but stick to their places when I am trying to move them in animate mode.

(Here is the file: http://cl.ly/35242n2y3Q0r )

Do you have any idea how to make this work, or can you show me an approach people use normally for this task?

Thank you!



I found a tutorial for maya that shows EXACTLY what I want to do… in maya.
I tried to apply this to C4D, but I don’t know enough about maya to know what’s the equivalent function in C4D… :\

Do you know a similar tutorial for C4D?



Hi there,

what I would usually do is rig the controls to symbolically follow the deformation, rather than stick to the surface exactly. It’s a lot simpler and lighter to setup.

Other than that, that’s a pretty cool tutorial. I made the same setup in C4D if you want to take a look. It’s just an example with morphs, they are only rigged on their Y axis.

It’s a little complex since I have to have separate tags to handle the priority orders. But other than that it seems to work pretty well.

Keep in mind clusters are a different story, they are not very intuitive and straightforward in C4D. It would be best to make extensive tests with them to make sure you understand how they work before trying to make the setup more complicated by inserting them directly.


Hey 51Mon,

thanks for your reply! :slight_smile:

I don’t know if your approach would work for the kind of character I want to create, because it doesn’t look like it is flexible enough (I can’t push or rotate the controllers wherever I want, because they control a predefined BlendShape).

But in another forum someone showed me this link. I didn’t tested it yet, but it seems to solve my problem, because the controllers are really flexible:



The above attached example is just an example to show how it works with 2 morphs. If you rig more morphs or local space clusters, it should probably be working ok.

I’m aware of Andy’s example. We have tried numerous of doritto’s setups, many of which was problematic, and the Maya tutorial you posted seems to be a pretty solid and straightforward approach that translates nicely in C4D.

However I can’t be sure it works reliably until I try it in a fully rigged setup.


Ah, okay, so I need 3 morphs per controller, one per axis, and then combine them in xpresso? Or how do you do this?


It depends how you want to build it. If you want most freedom and rotations you could go with clusters. Otherwise you could go with morphs or joints.

Edit: I mention joints last because it would be trickier to make the surface controls for the joints.


Hmm… I guess I have to try both methods to know what works and suits best for my needs.

Right now I think that I will need great flexibility, because my character is really cartoony and the mesh transforms dramatically during different expressions.
I will also need to set controllers that are just visible in one blend shape:


I tried the method from the video and until now it works like a charm!
Just rotating the controller will misplace it. So it still works (the controller follows the mesh) but it is not positioned correct.
Also the mesh doesn’t scale (stretch) the points if I try to transform the cluster object.

Is there anything I could do to improve/achieve this?

Here you can download my current setup:



There is even more “procedural” approach to this inside C4D.
You can use Correction Deformer to store morphed points before cluster is doing any deformation and constrain parent of cluster controller to points of Correction Deformer .



So the benefit of this is, that I don’t need 2 Morph Tags, or am I missing something?

EDIT: Ah, now I get it. The Solution described in the video will not work with joints, yours does. Thank you very much!

Do you also have a solution for better rotation?



I asked the exact same question about 3 years ago. Here is the thread :slight_smile:


It is working really well. Some work to set up, but it is working great :slight_smile:



Hey Anna,

I did found this thread before I asked, but I were not able to make it work.
All the time some crazy deformations happened and I couldn’t figure out what I was doing wrong.

Could you post a rig or an example of this method? Or is it the same as in the video I posted earlier?


Hey Creeze,

Sorry if I don’t understand your problem correctly - but is this what you’re after?

  1. make your Controller a child of your Rendermesh (+ Blendshapes)
  2. on your clusters set Transform to world
  3. under offset click the maintain box.

Hope that is what you wanted.


Hey Matt,

I don’t know if I am doing it right, but this is not the solution for my problem. (But I posted a working file earlier, that comes close)
Anyway: thank you for the hint, this could improve my solution :slight_smile:


DID IT! :beer:

After a long, long journey and the great help of Anna I found the solution for secondary controls that fit my needs!

This solution is far more flexible than the one from the video, because it attaches the controllers directly to the original mesh, not just the blendshape. So it also works with joints and the controllers can influence themselves.
Some xpresso was necessary to make it work, but I think it’s worth it.
Rotating doesn’t reposition the controller and even scaling the clusters is possible (it has always been, I just had to do it in object mode)

To reposition the controllers to it’s original place I PSR constrained (locally) some nulls to the controllers to get their position and then deleted the constraints.
If I hit the “reset” button now, the controllers take the local matrix from the nulls with their original position.

I guess there should be a simpler way in xpresso that would make the nulls obsolete, but I couldn’t figure it out so far.

I also tried to make the constraints on the mesh reorientate like normals but I couldn’t make it work. The surface constraint is a bit too buggy for this, I guess :stuck_out_tongue:

Here is the file, if anyone is interested:


Hi creeze, I’m looking for the solution to this problem too, but unfortunately the file isn’t anymore available.
Is there a way to get the file, to better understand the solution you have found?