Thursday, April 26, 2007

Some Misc. Eye Rig R&D

Awhile back someone emailed me about how I rigged the eyes for this character. (click to watch a movie of him being posed)
Anyhoo… I wrote back explaining a few things. Earlier this week I was going through my sent email looking for something else and I found my reply. I thought- Hmm. This looks interesting. Might make a nice little blog post. So here goes…
I’m just using “clam shell” eye lids. The lids aren’t modeled into the over face mesh but are just two half globe shells that rotate around the eyeball. This makes them easy to set up for a system like this. Plus I’m not a gifted modeler and it’s always hard for me to get the built-in lids to look/work well. For the rendering style I hope to use for this guy it doesn’t end up being a problem with the clam shell approach. The actual shells are nurbs revolves.
Each lid is then deformed by a series of clusters that work together like a folding fan along a hull of the NURB. Each cluster is centered at the eyeball center and each one is driven a certain percentage to create a smooth, fanned out deformation to shape the lid.
Then I put an FFD (free form defromer- aka: Lattice) around the whole eyeball/pupil/lid system. The idea here is that when the lattice is deformed the whole eye system shares that deformation. This way I can layer the clusters that shape the lids underneath the larger lattice that shapes the whole eyeball/lid complex.
Then the lattice is deformed with a wrap deformer. A wrap deformer in Maya is like using any geometry as a kind of lattice itself. In this case I’m using the face rig mesh to deform the lattice. So if the brows or cheek are deformed using other controllers this deformation then affects the eyeball/eyelid complex at the same time. So with one controller I can shape the brow and shape the eyeball shape as well and still have the lids rotate around the eyeball and be deformed themselves. This is how you get the eye to deform with the brows all at once.
clameyebrowdefod.jpg Here you see the grey mesh has been deformed. This grey mesh then drives the grid lattice around the eyeball system which then deforms the eyeball and the lids all at once.
One caveat to a system like this is that it doesn’t play nice when it moves through space. To solve this I rig my facial system on a seperate copy of the rig that only works for the face. It’s still in the main rig file- just hidden from the animator. The animator controls the face with controllers on the main rig, but the output of the controllers affects the face rig. Then the deformation result of the face rig is piped back onto the main rig using a morph target blendShape. So animator controls main rig A for all body & face animation, but any facial controllers really affect face rig B and the result is then piped back onto main rig A. This is a fairly common approach in rigging these days- to use a seperate face rig that doesn’t move through space. It’s hard to do complex facial set ups right on the body deforming mesh. The key to having the facial output and the body rig play nice is to keep the face blendShape input come lower in the input list for the body mesh than the body deformation stuff.
OK, that was real geeky. Rigging is one of those black arts that makes CG so much more of a pain in the butt to do than other forms of animation. It’s a bit of a puzzle solver’s game that requires a person to be extremely creative but not necessarily highly artistic- if that makes any sense.
But for those who are interested in this kind of stuff, there you go.

No comments: