As Kyle was rigging the body, and Mona was working on texturing the props, I was going to work on rigging Lily's face rig.Made a list of all the blendshapes we would need, well a "rough" list, that mostly only made sense to me! It included all the different eyebrow shapes, eyes, eyelids, nose, mouth and jaw. The number of blendshapes I would need to do would be double for each side of the face, for example, left eyeblink and right eyeblink.
Thankfully, I fould a great method for mirroring blendshapes, which can't just be done by scaling one blendshape to -1 to mirror as that doesn't work. Here is a great tutorial about how to mirror blendshapes:
1. Duplicate your normal face (the final one on which you need all the blendshapes) and name it "blend". Move it out into a new space. 2. Rename your blendshape (that you need to mirror) to Left or Right, whatever is appropriate. For this example, lets say Left. 3.Duplicate Blend and name it "Right" 4. Make sure your animation menu is selected. Select Left, shift-select Blend and Create Deformer ---> Blendshape. 5. Select just Blend again, and scale X to -1. 6. Select Right, shift-select Blend and Create Deformer ---> Wrap. 7. Open your blendshapes window. Turn up the blendshape to 1. You will see that it affects Right. 8. IMPORTANT: Select Blend from the outliner. Edit ---> Delete by type ---> History Select Right. Edit ---> Delete by type ---> History 9. Delete Blend and blendBase (which was created from the wrap deforemer in your outliner) 10. You have your mirrored blendshape! Check that you did everything right by creating a new blendshape of your mirror with your normal face to see if its working.
I generally like to create quick shortcuts in my custom menu for Delete History, Create Wrap deformer, Create Blendshapes to improve workflow and make things quicker while mirroring.
Here are some of the blendshapes I created for the eyes, eyebrows and nose:
The eyebrows on the face was a seperate geometry that I combined to the face geometry so that it would look more real if I could move the skin on the face rather than just the eyebrow. There were 3 points in each eyebrow, plus the whole eyebrow being lifted up and lowered down.
The eyeblinks were a bit of a pain to do as the eyelids kept intersecting with the eye geometry. But I figured out a way to add an intermediate blendshape at a certain point in the middle of an existing blendshape so that it could prevent any unwanted deformation from happening. For example, instead of just position A to position B, I could create a C in the middle so the new deformation would be A to C to B, thus preventing any intersection at point C.
Then, I needed to create a GUI (user interface) which would have controls to move each part of the face, or in different words, trigger off those blendshapes. I created this using NURBS curves:
I attached each blendshape individually to each control. For example, if you move the left eyebrow control up, the LeftEyebrowUP blendshape would activate and give the face that deformation. I did this using set driven keys to connect the curves to the blendshapes. Then I added limit information to the curves so that they wouldn't move more than required. For example if the eyebrow could only move up and down from -10 to 10, I limited the translate Y of the curve from -10 to 10 so the animator would know it is the maximum it goes and it would avoid any unwanted deformations.
Here is a little demo of Lily's face rig: