Introduction for this tutorial
Rig Walkthrough: Simplified Version
This tutorial goes through the rigging of an eye in Maya with full skin follow. This is a simplified version of the rig used in the drag and drop face rig. A very simple yet powerful setup, and it’s fun to get stuck into nodes to see how they work.
Contents (1:03 hrs)
1.1 – Introduction
2.1 – Joint Creation
3.1 – Add Joints To Skin
3.2 – Range Of Motion
3.3 – Skinning
4.1 – Explaining Follow
4.2 – Setting Gimbal
4.3 – Edge Joints
5.1 – Building The Control
5.2 – Eye Ball Rotate
5.3 – Cntrl Follow Head
5.4 – Creating Attributes
5.5 – The Blinks
5.6 – Roll/L/R Setup
5.7 – The Auto Follow
6.1 – One Eye Finished
6.2 – Mirroring Joints<
6.3 – Mirror Skinning
6.4 – Mirroring The Control
|REALISTIC EYE RIG
1. INTRODUCTION, EXAMPLE OF WHAT WE’LL BUILD
Characters with rounder cartoony eyes may require more detail in a variation of this setup.
This setup works great for fairly realistic stylised eyes as seen here.
In this section we’ll create the joints for this setup which relies heavily on joints and skinning.
|JOINTS AND SKINNING
2. BUILDING THE EYE JOINTS
Now we’ll move onto skinning the mesh
|3. ADDING THE JOINTS TO THE SKINNED MESH|
|4. PREPARING RANGE OF MOTION (ROM)|
|5. SKINNING THE EYE|
Now we’ll get into the deeper aspects of this rig and find out how the lid follow effect works. We’ll do a bit of preparation before building the control that will control all the elements.
|6. AUTO EYE FOLLOW INFORMATION|
|7. SETTING THE GIMBAL ORDER OF ROTATION|
8. CREATING AND SKINNING THE EYE EDGE JOINTS
Here we’ll build the eye control that the animator will use to control the eyes. Then it’s into the real core of the rig, hooking up all the attributes and nodes to drive the eye automatically.
|THE EYE CONTROL CURVE
9. BUILDING THE EYE CONTROL CURVE
|10. ROTATING THE EYE BALL|
|11. PARENTING THE CONTROL CURVE TO THE HEAD|
|12. CREATING CUSTOM ATTRIBUTES|
|13. HOOKING UP THE LID BLINKS|
|14. HOOKING UP THE EYE LID ROLL|
|15. HOOKING UP THE AUTO EYE LID FOLLOW|
Now we’ll finish up the eye and mirror it to the other side which can be a little tricky.
16. SINGLE EYE COMPLETED
17. MIRRORING THE JOINTS
|18. MIRRORING THE SKINNING|
|19. MIRRORING THE CONTROL CURVE
Note for the Version 2 Setup
This setup will provide adjustable eye driven deformation around the lids. We’ll have two methods for animating the eyes, fk controls at the eye’s pivot which will be the main control. We’ll also have a look at control (eye aims) for those who like to animate with look at, though this control will be secondary as these controls are a pain to animate.
We’ll have switchable world/local space so the eyes can be animated in world space or local head space as both methods are often needed by animators depending on the situation.
The joints will also control blinks.
And we can put some blendshape deformation for squints, smile angry shapes etc.
This setup will also be compatible with the cutoff head rig and scaleable.
Advantages of a Joint Based Eye Systems
Importance of Topology
??Perhaps Get the eye follow to work??
Actually is pretty easy to switch
The Joint Hierarchy
In this variant we’ll use 6 joints per eye, a top lid and bottom lid then two for each edge. This is usually enough for most regular eye setups. We can always add corrective blendshapes if needed to fix minor details. In some situations it may be ideal to have many more joints depending on the needs and accuracy of the eye setup.
So in this version each eye has 6 joints
1. bottom lid
Each joint will pivot from the center of the eye. Because of a mirror skin weights problem in Maya it’s best if these pivots are locators rather than the joints themselves as joints in exactly the same position will often cause errors while mirroring skin weights.
We also want to double up the pivots for driven keys so that the animator has access to a control they can key manually if desired. And extra grps for zeroing rotations.
So for each joint the hierarchy will go
bottomLid_grp (to zero rotations/translation)
Setting Up Gimbal
In this case all pivots relating to the eye control will have to be switched from xyz to…
Adding The Lid Up Down
Next we want to bring it up in the node editor along with all the topLid dk locators.
Now we’ll connect the topLidUpDwn
2. Create two multiply Divide Nodes
3. Connect the inner and outer using the multiply and divide nodes
– eyeJoints_grp_L (topLidUpDwn) > multiplyTopLidInner_L (input x) >
Now we can animate the eyeJoints_grp_L (TopLidUpDown) and test the eye setup and adjust the multiply and divide nodes to suit our character’s inner and outer eyes.
Now we’ll connect the eyeJoints_grp_L (botLidUpDwn) using the same technique but with the bottom lid connectors.
Skinning The Lids
Set keys on the attributes
And then skin the eyes. We’ll also want to check a correct blink position too. With the bottom lid only coming up slightly to meet the top lid which comes down about 75%.
Eye Lid Left and Right Slide
After we’ve adjusted all the nodes we need to test out the Range of motion with the slide going left and right to see if it looks right. Adjust the multiply and divide nodes accordingly for the edges, a value on .2 works well for the inner and outer edges as we don’t want these moving much.
Repeat this for the top and bottom roll for the eyes (z rotation)
The Eye Controller and eye rotation
Create the control and make sure it’s grouped and zero’d and in the center of the eye.
Now group the eye geo L and make sure the pivot is in the same place, in the center of the eye. Make sure the eye group has the same rotate order zxy.
In the connection editor connect the rotate of the controller to the rotate of the eye.
(could also have a joint and skin it)
Eye Lid Auto Slide and Blink
We’ll also nodes to reverse the bottom lid so the the blink meets half way and use the multipliers to set the range so that the blink default is 1 on both attributes.
Adding The Eye Aim
Position them exactly in front of the eyes but away from the body. Group each control so that they’re zeroed, but make sure that the pivot of the eyeFollow_grp matches world_faceControlsMatcher_loc, this will help us later with scale constraints.
Group the original eye control eye_cntrl_L to create a new group that we’ll use to switch the world space of the eye.
call this group eyeCntrlParentSwitch_L
Duplicate eyeCntrlParentSwitch_L and delete it’s contents call it eyeCntrlAim_L, this will be the group we aim the eye with.
Set up the aim Constraint
Have the Seek follow the Follow cntrl
Constrain eyeFollow_Cntrl to eyeSeek_cntrl_L
Follow World or Seek
Now the eyeControl will follow the seekControl but the eye mesh will not. To get the correct orientation of the eye mesh we need to add both the EyeControl and the eyeCntrlParentSwitch_L with a plusminus average. Do that.
We’ll also need to change around a couple of values to get the aims to affect the lids.
Add attributes to the eye control
Connecting the showSeek
Connecting the worldNoSeek
Connecting the seekSpace
At this stage we’re pretty much done with the eye joint setup. We can add blendshapes later. Clean up the head rig folder so that you can only see…
we should be able to select the two groups
And scale them and the head should scale correctly (eye balls not included). Not that this should matter much as the head will be scaled with the rig.
Mirroring The Setup