Mecanim is not playing facial animation.

So trying to get accustomed to the new animation system and upgrade all of our animations. Problem I am currently having is that when I preview the animations in the inspector, the character animates as he should. However, when I assign any of the clips to the Animator controller for my character, the body moves just fine but any animations that should be driving the face are not working. Any ideas?

I think this is a bug, I also got the same problem and still have not found a solution.
I have used masking and assigning the face bones in the Avatar which makes things even worse. You should submit a ticket I think.

I sent in my project to Unity. It has been forwarded onto the dev team. For now my fix is to just use generic for the rig.

I was told on the forum that this is the solution :
"Wow, slow down SilverStorm, 5 hours of bumping a specialized question on a public forum? Please don’t bump more frequently than once per day!

The feature is called Additional Bones… and if you check this feature both when you import the Humanoid model and the Humanoid animations this should work out of the box."

For me this has not worked. But maybe I did something wrong, try that out for yourself and let me know how things go.

Hi, I don’t know if this is too late, or if your’e problem has been resolved, I have Unity 4.1.2f, and have setup a character with a face rig bones only, (Brows 2, Cheecks 2, Lips (4 bones), Jaw 1), very simple and basic face rig I must admit.

And created a few expressions using motion builder, when I imported this , I checked the “Keep additional Bones” (my character and animations are all in 1 FBX), and setup using Humanoid, the animation clips played fine on their own. (I have 2 idles, and facial expressions, to test)

It is using Mecanim, and I setup the base layer of the Animator for this character, to only alternate between 2 idles, and then created a separate layer for the Face, I used a body mask (Head only), and set the layer blend mode to additive.
*I did not set sync or IK Pass, basically default

anyways, when I played the Scene, only the base would play, and I figured (via this forum)
that the default layer weight is 0.
So I attached a script to the character, on start. (C#)

Animator animator = null;

animator = GetComponent();
animator.SetLayerWeight(1, 1.0f);

And it worked, no problem.
The facial expression is playing, while the body is doing something else.
The head is also being turned by one of the idles, and as that happens, the facial expression is also blending with it.

If your animations aren’t even working in the clips, then I guess it is something else, just wanted to say this.
Regards.

Here is my youtube clip, showing my Facial animation with idle animation, using only Mecanim and a body mask.

Note that if other animation plays, this is likely a Modeller problem and not a Unity one.

If your Facial Animation is performed with Bones, this is not so hard.

With Blender :

Keep the Facial Rig and the Main rig separate. Combine them to the Master/Root bone using the Child-Of BONE constraint in Pose Mode.

When Keyframing, only select the bones you wish to OverRide completely with that current animation.

EMPTY INFORMATION IN A BONE WILL CAUSE A NON MOVING RIG IN UNITY. Unity will do as it is told and keep the bone still as the animation is telling it to. Only keyframe the bones you want. This is easier achieved with the Child-Of constraint.

When importing the model to Unity you will see (in the latest builds >4.5) that the rig and face animations appear in the same list

Face | Smile
Face | Frown
Body | SpontaneouslyExplode

And despite being separate subobject can all be animated with the same animator on the Top-Level object, no Body-Mask required.

Yeh, it’s basically a human rig with the facial controls (joint based, and weighted) working from a selection of joints that are under the head joint so that they move with this joint, but all part of the same joint chain hierarchy, and children of the base root.

Do you mean they have to be directly under the root joint or is this method what you’d expect to work?

Sorry if the terms are a little vague!