What is the best way to do an eyelid ?.

I crceated some character, with spherical eyes.
And wanted to be able to have it close its eyelids.
So i made a shapekey.

But then i encouter some problem with it, the closed eyelid follows the sphere shape of the eye.
But between closed endposition and eye-open position, if its half closed.
Then the eye comes trough the eye-lid.
Then i made a shape key for an eye 50% closing and another one based on that to get it 100% closed.

Well its not realy handy to control that way.
Maybe a driver could control it but not sure what math to use for it.

Or shouldnt i use shapekeys at all here but only bones ?.

Shapekeys are fine, but like you said, you will have to create a driver to apply your second shape key to solve the intersection problem. The easiest way to create that driver without math, is to plot the influence on the graph in the driver editor.

I am using bones more often then shapekeys lately because that method seams to be better for a non-destructive workflow. After you have made a basis and many shapekeys, you cannot change your mesh. You won’t have that issue with bones and weighting. You can change your mesh as much as you want.

I still use shapekeys when all else fails or to get a final polished look for some extreme rotations.

Good luck!

p.s. Look at the Flexrig by CGCookie for an example that uses bones for the eyelid as well as shapekeys for the tweaks or the standard Pitchipoy Facial rig that uses only bones.

“The easiest way to create that driver without math, is to plot the influence on the graph in the driver editor.”

aha thats something new to me i’ll give it a try

IMHO… using bones for eye lids just solves a lot of problems… it’s just too easy to get the eye lid to do what it needs to do which is move along an Arc… bones do animated arcs very well without a whole lot of work… save yourself some frustration and use a bone for that particular task… Shape keys are great for some things… and bones can’t do everything… but eyelids… bones IMHO… are the way to go…

You can also use a sine function in the driver for the arching shapekey (the one that goes outwards).