How to rig a stretchy cartoony eyelid?


A couple of years ago I saw Marco Giordano’s tutorial on rigging cartoony eyelids. I always wanted to make it stretchy, but that step was left out. I’ve been thinking about it a bit, but I’m curious if someone has a simple solution to make the joints stretch to follow the shape of the deforming eye.

My initial idea is to use a “closest point on mesh” node and have the eyelid joint, scale to hit that point. But I’m not entirely sure how stable this is. Would like to be able to undo and reset my eyelid rotations without making it get stuck as I’ve encountered in the past when working with surface constraints. Had to scrub the time line for it to evaluate correctly iirc.

Thanks for reading as always. Love this community!


Admittedly it’s been a bit since I watched or followed Giordano’s cartoony eyelids, but the problem as I see if with using a point on mesh node is that you don’t want the eyelids to rotate along with the eye (or, rather, look for their deformed point on a rotated eye mesh). Also if you’re using a single bind skeleton, having its outputs re-enter seems messy. Taken together, I think these two issues point towards a possible solution of using a dummy shape which is deformed identically to the eyeball, then inverting its rotations (to preserve eye-eyelid sliding), and using that with point on surface/mesh nodes.

If the deformations that the eye will be seeing (hehe) are simple, all that may be overly complicated. If you’re just going to be moving & scaling it in the usual channels, you could pretty easily just push those xforms directly to the eyelids (or a parent thereof).

I hope that helps - might need some more info to give much beyond that.


Thanks. Yes I think I need to create an example scene, but basically what Giordano and others are doing is creating joints that go from the center of the eye to points around the eyelid. Then it can easily be shaped and seemingly have the eyelid slide over the eye.

I’m having the same idea you’re having with the dummy object that will be the deformed one, then the eye is free to rotate inside that shape.
Need to do some tests on that closest point on mesh node. Just not sure about what I mentioned earlier about its evaluation, whether it will be stable or not.


So I created this scene to illustrate my idea.
By rotating the “joint1”, the small sphere rides on the big sphere and it’s distance from the center to the small sphere is piped into the length of the joint that is parented under “joint1”.
However. This setup is far from stable. Scaling up the big sphere and rotating “joint1” soon makes the small sphere to jump off its intended position.