The Auto Eye Rig

As I said before, the facial auto rig is almost done. while I was testing the rig on a stylised character, I noticed a problem I had ignored previously. I wont go into the details of the problem too much as it would require me to explain in detail the logic of the placement of joints for the eye. But in short, I want the eye lid joints to move in an arc (obviously). I place two 6 joints for the top eyelid-3 on outer edge and 3 on inner edge. The 3 joints are near, center and far on the eyelid, with near being closer to the nose and far closer to the ear.

So, as each character can have different eye shapes, and that includes non spherical eyes, I am now faced with a problem of moving these joints in a curve when the eyelid opens and closes.

A small diagram will explain the problem:


The second drawing doesn do justice a lot. So, I will show the 3d snapshots:


These are the end/Far joints of the top eye lid. The problem is the position of the end joints can be very different depending on the shape of the characters eye. so when the bottom joint is rotated up, you would expect it to go meet the top eye lid joint. But it does not. See below. (The joints have been oriented)


So, we see that just orienting the joints is not going to be enough. We need to rotate the eyeLid lower joint chain in Y by a certain amount to make sure the joint travels in a curve and meets up with the top joint.

THAT is the problem statement. How would you go about doing this? Each character is so different that the auto rig needs to be able to calculate by how much it needs to rotate the Y axis in each case. This is where I am not able to figure out my next step.


I have designed this entire facial rig with one main goal. Simplicity! The entire rig now is built with just parent constraints and orient constraints. So, I am thinking of a solution using just these. I feel like that should work. After all, we are trying to orient this lower joint chain with the top one. But, I have not figured out how to do it yet.

hmm…. I need some MEL brain waves now…


One Comment to “The Auto Eye Rig”

  1. I meant to reply earlier to this problem. just got around to doing it though….
    The fix is easy…

    – The joints need to follow a curve path.
    – Then, the curves can be drawn vertically on the eyelids, and the eyelids made to follow this curve.


    – Create a curve.
    – create 3 joints.
    – select each joint and attach it to the curve
    – now, you will see all three joints have snapped to one end of the curve. By scrubbing through the timeline, you can see the joints move along this curve. The rate at which the joints move is controlled by the number of frames you had set when attaching the joint to the curve.
    – All you need to do is select a joint, then in the inputs section of channel control, you will see a uValue that has a key on it. This is the value that decides the rate of movement of the joint. Break the existing connection. Scrubbing through the timeline has no effect on the joint.
    – However, manually changing the value of this attribute now makes the joint move along the curve. use this as a set driven for controlling the position of the joint along the curve.

    So, i just need to modify the script to accommodate this change. Will post a demo of it once its ready. I just need to find some free time to be able to get to it.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: