- Home /
Mecanim 'Locking' my facial blendshapes
I have an animator component that controls blendshapes on a model's face. This animator is working fine for lipsyncing different animations, and only affects 7 out of the 28 blendshapes on the face.
I want to control the other 21 blendshapes independently of the mecanim system - making the eyes blink randomly, eyebrows arch in surprise etc. To my surprise, I could not change any of the other blendshapes while the mecanim animator was active. Only after setting animator inactive could I get the blendshapes to change. This occurs even when playing an empty node in the mecanim animator.
Is there something I am missing here? I don't think baking random blinking into hundreds of dialogue animations is a solution, and it probably won't achieve the desired effect also. Animation blending is not the correct solution as well because the desired effect is not a blending effect.
How can I change unaffected blendshapes (like eyelids) manually when the mecanim animator is active on the face?
checking back in after a month. anybody have any experience in this or have seen a question that's similar? haven't been able to find a proper workaround for this.
Answer by byrne · Feb 13, 2015 at 08:15 AM
I finally got back to researching it, and I'm going to answer my own question after a few months. haha
In the animator window, using multiple animation layers with the blending mode set to 'additive' will combine animations.
Hi @Byrne,
I am having similar issues (I think). I have imported animation in FBX files, which are animating blendshapes.
In code (C#), I need to modify some of the blendshapes while the original animation is running. I was hoping you could help me by detailing how I can either create the "new" animation and add it to a layer in code, or how I can specify that a certain combination of animation should play at one particular time from code.?
Thanks for your help. I've been looking for weeks and have this is the last part that I need to solve... its killing me slowly ;-)
Thanks.
Wow. I wrote an entire reply over the course of 1 hour ( was working while typing halfway ) and lost the entire post because I wasn't logged in after clicking submit. Great.
Anyhow, here are my points.
Use your base layer for idle animations.
Create a layer below it that has your blendshape animations.
Set triggers that call your blendshape animations.
The idea here is that the bottom animation layers will override the top. If you have a blinking animation that only applies to the blink blendshape and it is set on the layer below the base, it will override the base and apply blinking on top of the idle animation.
Hope this helps Byrne
Answer by Laiken · Jul 06, 2018 at 01:37 AM
I had a similar problem with a single blendshape out of 20+ blendshapes that my skinned mesh had. It was happening because one of my animations inside the animator controller modified that blendshape. The blendshape was locked even if that particular animation was not playing at the moment. What I did was opening that animation with the animation window (ctrl+6) and removing the change to the blendshape. That made the blendshape be unlocked for that animator controller.
Your answer
Follow this Question
Related Questions
Importing humanoid animation with blend shape animations? 2 Answers
old animation system 0 Answers
Twisted hand using Mecanim 0 Answers