Creation of a simple soft eyes effect for characters.
Our eye rig previous to this effort consisted of a very simple setup; a joint to control the eyeball orientation and two further joints to control the upper and lower eyelids. We wanted to do an upgrade which got more of the subtlety of the eye motion, especially the ‘soft eyelids’ effect, while still being lightweight and relying entirely on joints.
For each side the final setup added three extra joints, two for the soft eyelids and one for the pupil, and a couple utility nodes. The key to the setup is that the eye and eyelid joints are located at the center of the eye and share the same orientation so that we are only dealing with adding, subtracting and multiplication of rotation values.
For each eyelid we have two joints; the soft eye joint and its child the blink joint. When the the eye joint rotates this drives the rotation of the soft eye joint through a utility node giving us simple soft eyes. The blink joint can be rotated to open or close the eyelid and because it operates as a child of the soft eyes joints it doesn’t fight with the effect of the soft eyes. The softness of the eye lids, or more accurately the degree to which they are driven by the eyeball, is parameterized horizontally and vertically which is useful to really dial thing in for different characters.
For such a simple setup I was really happy with the results; it gives a much more lifelike appearance and can integrate easily into our existing rigs and animation since it all operates under the hood and doesn’t require additional controls. Additionally it would also be fairly straightforward to translate it into Unity for use in cases where the gaze was driven dynamically.