Mouth Blend Shape Workflow


Expression Fix – Corrective Blendshape With Jaw Opening
Expressions are usually modelled for the closed mouth position. Opening the jaw will often mess up those expressions slightly. We can correct this with a corrective blend. It’s easy to do but there’s a lot of steps steps since we are mixing other correctives, jaw joint rotations, plus we have to work out the difference between the fix and the original blend.

Part 1 Sculpting the Fix
1. Open the jaw to a known value ie. -20 degrees. I usually pick a rotation that is not too wide.

2. Key the jaw opening from closed at frame 1 to -20 degrees at frame 10.

3. Create an attribute on the DaisyChain Face, call it jawOpenMarker

4. Create a Driven Key so when the jaw is closed the attribute jawOpenMarker equals 0 and when open it’s 1, make sure the curves are set to spline and not auto tangent.

5. Make sure all controls are zeroed. We should have the facial expression (say smile) on, the jaw open corrective firing, and the jaw joint opening. No other shapes should be firing.

6. Goto frame 10 with the jaw open to -20. Extract the face shape for the sculpt fix, I use icDuplicateSkin a Extract Deltas tool (green icon). An alternative is to duplicate the skin and unlock the transforms but icDuplicateSkin is faster.

7. Sculpt the fix, either in Maya or a sculpting package like Mudbox. Bring the fixed shape back into Maya.

Part 2 Extracting the Delta (removing the jaw rotation)
8. Delete the blendshape on the main face geo, we need to do this so extract deltas works correctly.

9. The main face should have only a skinCluster and Tweak node in it’s input history.

10. On frame 10 with the jaw open to -20 use extract deltas to extract the blendshape joint corrective. Select the skinned mesh then the fix and press the Extract Deltas icon.

11. The blendshape created lets call it “ExpressionJawOpenExtractDelta” should be the fix with the jaw rotation taken out, we still have to remove the jaw open corrective blendshape and the facial expression blendshape.

Part 3 Removing the Expression and Jaw Corrective blendshapes
12. Grab the original mesh with no skinning at the default pose, duplicate it. Lets call this newOrignial

13. While still on frame 10 with the jaw open. Select the
– DaisyChainMesh then the
– ExpressionJawOpenExtractDelta then the newly created
– newOriginal mesh.
Create a new blendshape on the newOriginal mesh. The blendshape should have the attributes

14. Set the daisychain value to -1 and the ExpressionJawOpenExtractDelta to 1. This will remove the jawCorrective blendshape and the facialExpression and leave the difference. This new mesh is our fix!

15. Delete the history on the newOriginal mesh and rename it to expressionOpenFix.

16. I usually break the expression up into a left and right fix. So use BlendshapeMirror in the custom shelf to extract the expressionOpenFix into a left and right version
– expressionOpenFix_lft
– expressionOpenFix_rgt

17. Add
– expressionOpenFix_lft
– expressionOpenFix_rgt
to the blendshape on the daisy chain using
Edit deformers > blendshape > add

Part 4 Checking The Fix
18. Lets reconnect the daisyChain to the main face now that we’ve finished with extractDeltas.
Select the
– daisyChain then the
– SkinnedHead
and create a new blendshape with front of chain set in the options.

19. Switch the blendshape on the SkinnedHead to be on.

20. Now we can check to see if the blendshapeFix worked! In the blendshape on the DaisyChain, scroll down and find the attributes
– expressionOpenFix_lft
– expressionOpenFix_rgt
Switch them to on (1)
The mouth should be open with the facial fix!

Part 5 Automating The Fix

We now want to automate these fix shapes to switch on when both the jaw is open and the expression is set to 1. We do this by using a multiply divide node and using the simple equation

DaisyChain (jawOpenMarker) * DaisyChainBlendshape (FacialExpression left) = DaisyChainBlendshape (facialExpressionFix left)

and for the right

DaisyChain (jawOpenMarker) * DaisyChainBlendshape (FacialExpression right) = DaisyChainBlendshape (facialExpressionFix right)

21. Open the node editor and create a multiplyDivide node.

22. Open the connection editor and set the DaisyChain mesh to the left outputs, and the multiplyDivide node to the right Inputs

23. Connect
DaisyChain (jawOpenMarker) to multiplyDivide (input1 > Input1X)
DaisyChain (jawOpenMarker) to multiplyDivide (input1 > Input1Y)

25. Now reload the blendshape of the daisy chain in the Outputs column (daisyChainBlendshape)

26. Connect
daisyChainBlendshape (weight > FacialBlendshapeLft) to multiplyDivide (input2 > Input2X)
daisyChainBlendshape (weight > FacialBlendshapeLft) to multiplyDivide (input2 > Input2Y)

24. Now reload the multiplyDivide node to the Left Outputs Column and get the blendshape node on the DaisyChain in the Right Inputs.

25. Connect
multiplyDivide (output > Output1X) to DaisyChainBlendShape (weight > FacialBlendshapeOpenFixLft)
multiplyDivide (output > Output1Y) to DaisyChainBlendShape (weight > FacialBlendshapeOpenFixRgt)

The fix will now turn on when the jaw opens and the facialBlendshapes are on. Cleanup and delete the used meshes, it’s good to keep the meshes
– expressionOpenFix_lft
– expressionOpenFix_rgt


Andrew Silke

Leave a reply