I've created a Mouth swap set, consisting of 2 Viseme Mouths and 2 single expressions. The swap set is working correctly for the most part, but when I try and use the 2nd Viseme Mouth, it simultaneously shows all the viseme mouths in the set (Aa, D, Ee, F, L, etc) at once rather than alternating from one ot the next.
The Viseme Mouths are labeled as Normal and Upset. The single expressions are labeled as Shocked and Surprised.
I've attached a picture of the rigging. If anyone knows how to correct this, it;d be greatly appreciated!!
What I normally do is create a hierarchy more like:
- - Happy
- - - Mouth
- - - - Ah
- - - - M (etc)
- - Sad
- - - Mouth
- - - - Ah
- - - - F (etc)
Not sure if still true, but I though I had problems sometimes if the visemes were not an immediate child of the layer tagged with Mouth. Also I always forget which one, but one behavior wont bind to multiple children (might be Lipsync...) so you need to add a behavior per mouth layer (e.g. on Sad, Happy, etc).
You can check what Lipsync has bound to by expanding the "Handles" and "Views" etc layers in the behavior. If you look at "A" etc and see what layer(s) it bound to, you can see which one worked. I suspect it has only bound to the first set of visemes, so it does not control the other ones correctly. If that is happening, I suspect you need to add the extra behavior per expression so they all work. (Sorry, at work, cannot test it just now.)
The difference is I had Mouth under each expression (you have expressions under mouth). If you have not fiddled with tags by hand, then your "Mouth" layer will have the "Mouth" and "Mouth Group" tag on it. The Lipsync behavior will then find the *first* Ah, L, F, etc viseme layer under it (inside the first child expression). It will not look for a second one (under the next expression) because it thinks it has done its job already.
I did a quick test and as soon as I had SAD/Mouth/Ah, SAD/Mouth/F, etc plus HAPPY/Mouth/Ah, HAPPY/Mouth/F, etc then the Lipsync behavior found both sets of visemes.
If you look on the left you can see the hierarchy I played with. Over on the right, see how I expanded the "Lipsync" behavior (click on "Emma" above the hierarchy on the left to see all global behaviors) and expand the Handles section and you should see "Mouth" plus all the visemes. If there is a "2" it means it found 2 layers - if a "1" it means it only found one. If it only found one Mouth layer, then it will only look for one of each viseme under each mouth.
You can tag layers by hand - e.g. remove the "Mouth" tag from the Mouth layer, then manually add it to each expression. I find this confusing in the long run however - I change the puppet structure so auto-tagging does not mess your puppet up each time you make a change. (The auto-tagger adds tags to layers that match tag names to save you the effort.)
Sorry, ignore the "Handles" section - many of the behaviors hide the extra level of details under a "Handles" section - Lipsync has nothing else, so its just all there. (E.g. if you expand Face behavior, there is a Handles section that does the same thing - shows what it is bound to.)
Your answers are super helpful; not sure why I' m still stuck! I feel like I'm close but when I try and use the new Viesme Mouth "Upset", the mouth dissapears during the lip sync. The normal view isn;t working now either but hopefully if I can adjust this rigging issue they'll both be working.
What am I missing?!:
Also, on which layer ("mouth" or "happy"/"sad"/etc) do you suggest applying the LipnSync behavior?
It looks like the extra behavior is not needed. What it needs to find is every mouth group under the "Mouth" in LipSync (at top of your latest screenshot, with 4 of them). It then looks under there for visemes.
Now there are two tags in CH, "Mouth" and "Mouth Group" and I always forget what the two mean (blush). Its confusing because the LipSync behavior documention talks about "mouth groups" but only bolds "mouth". Also, if you have a layer called "mouth" (at least without a Mouth Group layer in use) it will tag it with BOTH tags. So it always confuses me. I just normally never have a layer called Mouth Group (only Mouth), and that has just always worked so I never looked into it further.
Backing up on tags - normally what happens is if a layer matches a tag name, the tag gets added automatically. This is true for subsets of words. For example "Sad Mouth" will match "Mouth" as well and get tagged.
But over time, tags and behaviors changed here and there, so it might be that a layer containing "Mouth" anywhere in the name always gets tagged as "Mouth" AND "Mouth Group" for historical reasons.
See how you have ..../Frontal/Expressions/Shocked/Mouth as one of the 4 "Mouth" paths? It will then look for visemes nested inside this layer. You did not expand that part of the rigging, but I am guessing there is no Ah etc inside. So the Lipsync behavior said "well, I'm told its a mouth with visemes, but it cannot do the Ah sound". If "Shocked" is just a single mouth drawing (not a series of visemes) then you don't want to have a Mouth layer for that expression. The expression swapset hides any other Mouth tree of visemes when you trigger the shocked expression with the keyboard. Shocked in this case is not a viseme understood by ch (only Smile and Surprised and Ah/E/F/... sounds are visemes) - so it should not appear under Mouth. If you want a set of Ah/E/F/... for happy talking, then you would have a .../Head/Expressions/Happy/Mouth/<visemes> hierarcy.
Not sure if that helped. Let me try another way.
* First decide which sets of mouths are going to have multiple visemes. In your case, you are going to at least have visemes for the profiles and frontal. You *can* also have multiple mouths for different emotions (a set of normal mouth visemes, a set of happy mouth visemes). Decide if going to do this or not.
* Then decide what other expressions you want (as a single drawing - e.g. shocked might be such a single drawing).
* Then, for each profile, have an Expressions layer with children of the different expressions (default, shocked, angry) - but not Smile and Surprised (because they are considered visemes!)
* For each expression with multiple mouth visemes, create a Mouth layer and put the visemes under Mouth.
* Create a swapset on Expression layer with the default expression as the swapset default, so you can trigger Shocked or Angry and it will hide the default mouth.
* For single layer Shocked or Angry etc expressions (that is, no visemes!), DO NOT have a layer called Mouth.
I hope that helps - you are really close, its just a little funky and I could not see what you were doing inside the Shocked layer from the screenshot. I should have probably just asked for that Lol!
No Venmo, but sharing a short video here (if you are able to) from the final project is always fun!