Skip to main content
Inspiring
January 21, 2022
Answered

Half-Smile Lip Sync / Additional Mouth Pose

  • January 21, 2022
  • 2 replies
  • 1487 views

Hey all, 

I've taken a deep-dive into Character Animator within the last week (watching nearly all of Okay Samurai's youtube tutorials). I've got a character working pretty okay using both a standard mouth set and an alternate mouth set, as well as a smile. However, I'd also like to set a half-smile with a trigger, not to be controlled by the camera or sound so that I can pose it as needed. But when I put it into the existing swap set that I made between the regular and sad mouths, it just makes the whole mouth disappear. What am I doing wrong and any ideas on how to make this work?

Thanks!

This topic has been closed for replies.
Correct answer alank99101739

Sorry, *not


Sorry I was not clear. The "Mouth" layer should contain visemes that are known by the Character Animator behaviors and nothing else. So the LipSync Aa, F, M, etc visemes (identified by sound analysis) and the two Face behavior visemes Smile and Surprised (identified by webcam, not sound analysis). If you expand the "Handles" sections you will see they look for a layer tagged with "Mouth", then inside that will look for the visemes.

 

If you want to add additional expressions (common!), then you need to use things like keyboard triggers. The Face and LipSync behaviors cannot be extended.

 

The solution is to have a swap set that displays a Mouth group OR your new additional expressions. You cannot put your expressions inside a "Mouth" layer or else it confuses the behaviors (they think they have exclusive control).

 

But, to make it more interesting, you can have multiple "Mouth" layers (e.g. when happy and sad) with multiple visemes in them. You might (cannot remember!) need multiple behaviors to control each Mouth group. Any layer name with the word "Mouth" in it gets tagged as a mouth layer (hence, avoid using "Mouth" in layers that do not include visemes. (Gotcha: "AltMouth" won't get tagged but "Alt Mouth" (with space) will get tagged.)

 

So, putting it all together, you normally do something like

 

+MyCharacter

. Head

. . Eyebrows...

. . Eyes...

. . Nose...

. . Mth Expressions (spelt wrong on purpose) - put a swapset on this to choose ONE of the children

. . . +Mouth

. . . . Neutral

. . . . Aa

. . . . (all the other visemes)

. . . +Sad Mouth (a different expression that needs multiple visemes to talk when Sad)

. . . . Neutral

. . . . Aa

. . . . (all the other visemes)

. . . Angry (artwork for an angry mouth)

. . . Confused (artwork for confused mouth)

 

So, the Mth Expression has 4 children (Mouth, Sad Mouth, Angry, Confused). Add a swapset to you choose one of the 4 children. The default is "Mouth" (which contains all the visemes). A sad trigger can flip it to a different set of visemes. The angry trigger would replace that with a single static image (no viseme control).

 

But as soon as you have Neutral/Suprised/Smile/Aa/F/... in same folder as your own new expressions, its probably wrong. You have triggers and LipSync/Face behaviors fighting over control.

2 replies

amanullah al sani
Participant
January 26, 2022

 u

alank99101739
Legend
January 21, 2022

Can you provide a screenshot of the rigging hierarchy -- and ideally the triggers panel to see what triggers and swapsets exist. Trying to understand the nesting you have.

Inspiring
January 23, 2022

Here's the rigging hierarchy (there are a couple more things under the body, I just couldn't scroll all the way.):

And here is the triggers panel:

I really appreciate any help you can give. Thanks!

alank99101739
Legend
January 23, 2022

Ah! Smile and Surprised are built in vizemes. Don't put your own expressions inside.

 

I would create a new group like "MthExpressions" (avoid "mouth" in this layer name!!!) and Put your half-smile as a sibling of Mouth and AltMouth, (and SadMouth?) and have a swap set for Mouth/AltMouth/half smile. 

Never put your own expressions in the Mouth group of vizemes that Ch controls. It goes wonky.