Skip to main content
Known Participant
September 7, 2021
Answered

HELP! 2nd Viseme Mouth in Swap Set Not Working Correctly

  • September 7, 2021
  • 1 reply
  • 1328 views

Hi,

 

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!!

Thank you

 

 

 
 
 
 

 

 

This topic has been closed for replies.
Correct answer alank99101739

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!

1 reply

alank99101739
Legend
September 7, 2021

What I normally do is create a hierarchy more like:

- Expressions

- - 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.)

Known Participant
September 7, 2021
Thanks. But isnt that basically what I have here?

[image: image.png]

--
Woody Abbott
(214) 725-7377
alank99101739
Legend
September 7, 2021

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.)