One Control, Four SDKed Blend Shapes, One Simple Facial Animation Setup

by Brian Immel

In this tutorial, I will lead you through the process to create one control object to handle four blend shapes at once. This setup makes facial animation much faster and cleaner to animate. This tutorial assumes that the user knows how to model simple heads using polygons.

Modeling the Visimes

Creating the four basic visimes for facial animation

1. With a perfected head, or something close to it, duplicate and offset the original head five times. Name the original head Base or something along the lines that it is the target or original head.

2. Select the fifth head and hide it (Ctrl-h) just in case you mess up any of the other heads. It’s always good to have an extra head lying around just in case….

3. Name each head according to what it is going to be:

4. With these four basic visimes, you can recreate any shape the mouth makes during normal speech. A visime gives the viewer the illusion that the mouth makes or nearly makes the shape its suppose to when speaking. Using a standard set of phenomes, one cannot take into account that these heads are designed to hit very specific shapes and allow only one way to form the shape of what is being said. Using visimes simplifies this process but still creates a pretty good representation of mouth motion during speech.

5. Model each of the four visimes according to their names.

6. Use any method available to create these shapes as long you are manipulating the geometry at the component level! Remember to keep volume where volume and displacement is necessary (lips, cheeks, etc.).

7. Regardless of any method you use to model the heads, be sure to Delete History off of each head. Select the head and go to Edit > Delete by Type > History. I often use this tool so I usually put it in a tab on my shelf. To add any tool or function to the shelf, hold down the keys Ctrl, Alt, and Shift and select any tool or function you want. A short icon will appear in the currently open shelf.

Top

 

Set up the Blend Shape

1. Select all the visime heads (Wide, Narrow, Open, and Closed). Shift-select the Base head last. When creating blend shapes, you must select the morph shapes and then the target, Base, last. You can tell which object was selected last by the color of the last selected object will have green edges. Not selecting the Base head last will cause the blend shape be attached to another head. Big no-no!

2. In the Animation Menu, go to Deform > Create Blend Shape > Option Box.

3. In the Create Blend Shape window, in the BlendShape Node, type in the word Basic_Visimes and hit the Create button.

4. Test out all the blend shapes before going on to the next step. In the Channel Box, select the node we named earlier Basic_Visimes under the INPUTS section. Select the attribute name and use the middle mouse button (MMB) to slide to the right or left over a viewport to test the blend shapes. With the attribute name selected and the MMB active, the cursor will turn into a left/right arrow.

Top

 

Create the Control Object and Set Limitations

1. Now we get into the fun stuff. By fun, I mean long, technical and wordy section of this tutorial. Create a locator (Create > Locator) and move it three units to the right of the Base head. In this example, the located has the position of Translate X = 3, Translate Y = 5, Translate = -2.

2. Name the locator Visime_Control.

3. What we want to do with this Visime_Control is to drive the blend shapes of all four visimes with one simple control. To do this we will need to limit the locator’s translation but before we do that we have to set the location of the Visime_Control to zero without moving it back to its original creation location. To do this we need to Freeze Transformations. With the Visime_Control still selected, go to Modify > Freeze Transformations > Option Box. Make sure the box for Translate is checked on as in. Hit the button Freeze Transform. Now our translations have been reset to zero without moving the locator.

4. Now its time to limit the movement of the Visime_Control. With the Visime_Control still select go to the Attribute Editor by hitting the keyboard shortcut Ctrl-a.

5. Click on the tab labeled Visime_Control.

6. Open the Limit Information window and expand the Translate window.

7. In the section for Translate X and Translate Y, enable the grayed out sections. The minimums should be set to –1 and the maximum set to 1. Now try moving the Visime_Control around. You will see that the Visime_Control cannot move beyond 1 and –1 on both X and Y.

8. Before we move on the final, and most entertaining section (wink, wink), we should lock the attributes we do not want to use and keyframe. The attributes we want to lock include all the Rotates, Scales, Visibility and Translate Z. To lock attributes, select the attribute name in the Channel Box and right-click hold over them, and select Lock Selected. Now these selected attributes cannot be edited, keyframed or changed in any way until we unlock them.

Top

 

Set up the SDK (Set Driven Keys) for the Control Object

1. The idea we are trying to set up is a 1,1 to –1, -1 grid. The upper portion will drive the Open blend shape, the lower portion will drive the Closed blend shape, the left portion will drive the Narrow blend shape, and the right portion of this grid system will drive the Wide blend shape. Refer to the illustration on the right for the visual layout. The controls won’t look like this image but this will give us an idea where and how this setup will work.

2. The values we are going to set up will follow this example:

3. Now we are going to set up the connections between the Visime_Control and the Basic_Visimes blend shape node. Through this setup, we can manage four blendshapes with one simple interface control. Will use the Set Driven Key (SDK) method to set this up. To open up the SDK window, go to Animate > Set Driven Key > Set > Option Box or select one of the attributes to be included in the SDK in the Channel Box, right-click hold and select Set Driven Key….

4. When this window first opens, the Visime_Control will be placed in the Driven window. We want to move the Visime_Control to the Driver window. To do this, hit the Load Driver button. As the name suggests, attributes in the Driver window will drive the attributes in the Driven window.

5. Next, select the Base head and select the Basic_Visimes blend shape node in the Channel Box. We are going to load this into the Driven window of the SDK window. In the SDK window, hit the Load Driven button. At this point, the SDK window should look like this illustration.

6. We are now ready to set up the connections between the Visime_Controls and the Basic_Visimes blend shapes. Highlight translateX of Visime_Control. Highlight Basic_Visimes and then the attribute Wide. We can hit Key at this point to set up a base for the controls between translateX and Wide. The method we will follow is like this: Select the driver translate attribute, select the driven blend shape attribute, set all values to zero and key, set the driver translate attribute to 1 or –1 and the driven blend shape attribute to 1. At no time will we set a blend shape attribute to –1!

7. If you haven’t already, hit Key to set translateX to 0 and Wide to 0. You will notice the Wide attribute will turn orange (in Maya 4.5 and below). This means that this value is being driven, keyframed or is connected to some sort of input.

8. Set translateX to 1 and Wide to 1. Hit Key in the SDK window. Now we can slide the Visime_Controls on translateX up and watch the blendshape change from the base shape to the Wide blend shape.

9. Set translateX to 0 for Visime_Controls.

10. Make sure the Narrow value is set to 0. Select Narrow and hit Key. Now the base is set for the Narrow controls.

11. Set translateX to –1 for Visime_Controls.

12. Set Narrow to 1 and hit Key. Test the control and blend shape set by sliding completely to the left and right.

13. Set translateX to 0.

14. Make sure both translateY and Open have the values of 0. Select translateY and Open and hit Key.

15. Set translateY to 1. Select Open and set it to 1. Hit the Key button.

16. Set translateY and Closed to 0. Hit the Key button.

17. Set translateY to –1. Select Closed and change the value to 1. Hit the Key button. You setting should follow example below. If all goes well, then you are now ready to start animating your head for visime based animation. Say Cheese!

Top