View Full Version : High detail eye/eyelash rig

09 September 2005, 11:27 PM
Hey all,

I have a full-frame shot of a person's eye that I'm setting up a rig for, and could use some help. Basically, here is what I need:

1) The eye to be able to look around comfortably, although it is very oblong shaped, and just rotating it causes interpenetration problems.
2) The eye to blink with some force. The animator has asked for more control than a simple blendshape or a one-bone-per-eyelid setup.
3) Completely prehensile, controllable eyelashes, where one can control a single lash for like 200 lashes.
4) A master lattice/curve/whatever that influences many of the #3 controls at one time, to generally shape the lashes.
5) Preferably a system that moves the eyelashes with the blink.

The model is finished, highly detailed, and cannot be modified for the purposes of this project. Here's what I've got so far. It's pretty circuitous, though.

1) Haven't figured anything out yet. Possibly pose deformer blendshapes.
2) I am thinking bones or a wire deformer for each lid. So far I did a rough test with a blendshape, but it wasn't detailed enough.
3) Each of the eyelashes is a nearly identical nurbs curve, with an extruded surface made from it. History on. I have made three point-on-curve constraints on each lash, to be able to control them. This works fine.
4) What I'm looking at doing is creating a very small nurbs sphere at each locator, and geometry constraining the locators to them. Then I use bones to move the spheres. This has worked okay in tests, I'm just trying to deploy it on a larger scale currently.
5) If I go with bones for #2 and #4, this could work okay.

I think this whole rig may be a little slow to animate, but it's the only way I could figure out how to do it. Does anyone have any suggestions?

09 September 2005, 12:01 AM
Sounds like fun :D

1) I think a good way to make an oblong eye move around is to start with a perfect sphere, and then match it to the shape of the eye with a lattice. Then when you rotate the eye, it will move in that deformed space, staying conformed to the shape you want. If the eye is simply a scaled sphere, this is pretty easy, you can just transfer it's scale values to a lattice, and then zero out the sphere. (if it's simply scaled, you actually don't even need a lattice, it could be joints or groups that are scaled, and it's child gets sheared when it rotates) If it's tranforms are frozen or it's verticies have been pushed or pulled it might be a little harder, you may have to have get a new model, or try and match a new model to the current one. So if thats the case maybe someone else has a better solution for you. :)

2) I generally use clusters for eyelids, because joints will collapse and penetrate the eye, and blendshapes dont rotate. Clusters will follow the curve of the eye. However, since the eye is oblong, you'd have to apply that same deformation or transformation mentioned above to the eyelid, which might get a little messy. Wire deformer is an interesting idea....never tried that before.

3) I'd probably use joints for this.....but surface with history is probably just as well.

4) I don't understand.....but it sounds cool!

5) You might also try a script calllled.....rivet? I think? It was a really cool geometry constraint script that can maintain position and orientation (I think) to geometry.

09 September 2005, 02:16 AM
Thanks for your suggestions. I've got a pretty well working rig right now, though will end up messing around with it more tomorrow. Here's what I did:

1) I don't think I'll have the luxury of being able to remodel the eye, sadly. This is one part I haven't touched yet, although I will likely end up trying clusters tomorrow. The lattice idea is pretty awesome, so if I can figure out a way to sneak by a new model, I'll probably do that. No guarantees, though.
2) The wire deformer seems to work surprisingly well. I found that to get good results, I absolutely had to choose the vertices I wanted to be affected before I applied the deformer. I made sure to exclude verts by the tear duct and the corner of the eye, as well as verts around the upper ridge, where the eyelid was clumped up a bit. I had to use holders to define the falloff area, as well as falloff locators -- which I used to taper the effect around the corners, so that, say, the upper lid curve wouldn't grab verts from the lower tear duct.
3) I'm using the point-on-curves because there was some talk of using riCurves instead of geometry. We wanted it as an option, in any event.
4) Ah, by locators, I meant the points-on-curves. Since they're driving the lash motion, I was geometry constraining them to a tiny nurbs sphere. The large number of nurbs spheres were then skinned to 4 or 5 joints, which I could use to move the locators around en masse. It works pretty well, just a little slow.
5) I parented the controllers for the spheres to the locators driving the wire deformer, so it drives the lashes now too. Victory!

09 September 2005, 03:45 AM
well, this would be super heavy, but what if you got a sphere in a lattice, and tweaked it yourself until it got as close as it can to where the current eye is, and used a wrap deformer to drive the hero eye with your eye. To make it lighter, the animators could animate with the hero eye hidden, so they can just see your eye and the wrap deformer doesn't evaluate. Then you can swap them for rendering.

the surface>extrude>curve>point>geoConstraint>sphere>skin>joint sounds really heavy, but whatever works!

CGTalk Moderation
09 September 2005, 03:45 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.