I’ve looked at quite a few tutorials, but this seems like an issue where I may be needing to change my approach, or the topology of the actually eyelashes.
Basically, I have this cute cartoon styled character, which I of course would like to rig with the eyes being able to open and close. Eyes and eyelids are one of the trickiest things for me as a blender user, so for the eyes closing I have a shapekey, as well as a corrective shapekey for when the closing eyelid clips through the eye. Here is a snapshot of the character:
The first option I’ve tried is manually adding both a shapekey AND a corrective shapekey to both the face and to the eyelashes. This, even though it’s usually what I’ve done up until now, is tedious and can make things complicates when animating or wanting to have a precise expression (like only having one eye closed, or one eyelid raised or furrowed, etc.)
I also tried to create the eyelids from the base mesh AFTER adding all the shapekeys I needed, but then this resulted in the eyelash looking squished/deformed in areas when it was closed.
Another option I tried was with using standard rigging with bones. but I still can’t seem to get the rotation of the eyelids or eyelashes correct, which might have to do with my topology…
The third method I tried was using empties parented to specific vertices, and then using hook modifiers to parent vertex groups of the eyelash to the empties. This looked like it was working pretty well…
So, I’m not quite sure how I should approach this problem and how I can fix it, or if it’s more of a rigging issue or a topology issue. If it helps this is what my topology looks like.
This is quite a long post, so I appreciate anyone who has taken the time to look through it all! And I would love to hear possible methods I could take to rig this character correctly.
You’ve already been working with shapekeys, and they seem to work for you, so keep doing that.
Separate the eyelash from the head. Pin the head with eyes closed shapekey. Edit the eyes closed shapekey on the eyelashes to where it looks good. Drive the eyelash shapekey from the head shapekey value.
Like I said, you’re good at shapekeys, so work with shapekeys. But your issues with your bones are 1) your weights aren’t good and 2) the bones aren’t rotating to push the eyelid outside of the eye. The issue with the hooks is basically the same (there’s not really a big difference between hooks and bones, except hooks act in order and bones act simultaneously.)
Well, Rigging Eyelids and Eyelashes in Blender for dynamic Expressions is actually extremely challenging.
For the Eyelids, one major problematic involves having the Mesh follow the curvature of the Eye Surface without visible Interpenetrations. A vast amount of methods have been developed to solve this; but to my experience, a Shrinkwrap Modifier active on the Face Mesh with an ‘Eyelids’ Vertex Group, Targeting the Eye Mesh Object, is underrated. If Object Modifiers aren’t allowed because of Exporting reasons, then Shrinkwrap Bone Constraints, for a ‘legion’ of Eyelids Deform Bones, can do the job but usually with less quality; at least these allow Baking 3D Animation that should would work out of Blender.
In the case of Shape Keys for the Eyelids Rig, Shrinkwrap Modifier also can be added naturally: they will make the Eyelids (Vertex Group) stick to the Eye surface (Object Target), while the Vertices try to move up and down while Morphing. This means the Morphing Eyelids Vertices will be largely constraint in 3D space to the curvature of the Eye Surface: but for a good cause. This thread presents this approach:
There also exist a very clever free Addon from Hollowpixel that makes an analysis of the 3 Transforms’ Axes for Vertices which are part of the Morph Interpolation of a Shape Key. This means that playing with the Graph Editor becomes much more intuitive, allowing to mimic the complex curved shape of Eye Surface with… 2D Curves, as these have been decomposed individually (X, Y, Z). This method is presented here:
Beyond the problematic of solving the Eyelids Mesh to follow the curvature of the Eye Surface, there is yet another big challenge; which consists of making the Eyelids Expressive ‘on top’ of the Eye surface, more than simple, neutral Eyeblinks. The solution to this usually involves adequate Mesh Topology, enough Mesh Geometry, very careful Weight Painting on the Eyelids Mesh, and a good Deform Bone structure (whichever method is used). Personally, I’m adept to Spline Skinning method employing Bendy Bone Splines for 3D Cartoon Facial Rigging. It certainly has its own problems, but the good thing about Bendy Bones Splines is that they are extremely dynamic in all directions, and particularly good at Stretch & Squash features; they can easily solve smooth curving Deforms with just 1 or a couple of BB Splines… snakes, tentacles, Eyebrows, and the Eyelids contours, and even Profiles. Here I have made myself a tutorial using BB Splines for Eyes Rig; but it’s very long and would require some updates; the fundamentals are there though. This approach also employs the Shrinkwrap Modifier.
For Eyelashes Rig, this is yet another weird domain. They might not be as complex as Eyelids Rig, because the Eyelashes aren’t exactly in the interface between so many things as the Eyelids are in my opinion. I don’t have good experience Rigging Eyelashes using a Separate Mesh; I usually work with Connected Eyelashes Mesh to Eyelids Mesh, but treat them as radically different Vertex Groups for plenty of reasons. The biggest challenge I’ve found in Eyelashes Rig, is how to ‘carry’ the Eyelashes Mesh slightly ahead of the Eyelids contour, while, beyond the simple requirepment of preserving shape and volume, also have the Eyelashes adapt to stylistic Character Design on a particular Eyelids Expression. It is likely Shape Keys can solve such adaptations well enough, but it’s not that easy. My early attempts (with Shape Keys) gave me the idea this is a bit too abstract and stiff method, and I wanted to explore a more dynamic proposition (also, because I’m an animator), which lead me to investigate Armature Deform alternatives (which are usually pretty daunting, especially when there is little reference or resources available; this reality is gradually changing).
Whichever approach you decide for, I hope this helps out with better insights.
PS: For a Separate Eyelashes Mesh(es), I believe this should be a bit like Cloth Rigging. you need probably to reuse the same Eyelids Deform Bones in order to Transfer Weights between the 2 Mesh Objects, from the Face Mesh to the Eyelash(es) Mesh(es). Shrinkwrapping a ‘basal’ Eyelash Vertex Group of an Eyelash to its respective Eyelid contour might be required in addition to Weight Paint, in orderd to guarantie gluing feature. Naturally, the Eyelash Mesh Object(s) must be Set Parent to Armature Deform to the Rig, just as the Face Mesh Object. Depending on how successful or not such approach would be, it is plausible that the Eyelashes Mesh require additional Deform Bones of its own; these Deform Bones should probably be moving in synch with the Eyelids Bones (if these exist), but perhaps requiring to diverge slightly; this may need automation, maybe playing with some sort of Bone Constraints’ varying Influences, something like ‘Proportional Posing’ feature; if ever required, this is a problem of its own; technically, it could be considered Intermediate.
Another possibility, in the case the Eyelashes Mesh is inside the Face Mesh, Connected or Disconnected, would be a ‘Deform Bone-Carrier’ Rig system; this technique is more closely related to methods involving Automatic Weights and Normalization features, because there is frequently the negation of Blended Weights on very close Meshes; although a Mesh cannot Deform without Weight Paint, it can still be transported, in the case its respective Deform Bones are carried away by just, for example, a Parenting Relation where the Parent Bones moves Locally, and makes the Deform Bones be displaced Globally (but without causing any Deforms on their Influenced Meshes since these Deform Bones are not Transforming Locally); in this fashion, even Eyelashes can be transported as a ‘block’; but there is no guarantee this gonna solve good Expressions for Eyes Rig, although it could help in some cases. Personally, I’ve never attempted this for Eyelashes Rig, but if you do, please let me know.
Wow! That first video helps a ton!! However, since I already have a corrective shape key (sk), I tried copying a driver from the main blink shape key, and then pasting that to the corrective shape key. I want the corrective shape key to start at 0, go to a value of 1 when the blink keyframe is at 0.5, and then back to 0 when the blink keyframe is at 0.5. I thought it would be easy to edit the graph accordingly, but I’m not sure how I can add another handle when the value of the blink SK is at 0.5. The graph is also behaving unexpectedly when moving either of the existing handles. Below is a sample file with the unnecessary bits taken out.
Well, I used to struggle a lot with the Drivers Editor; I haven’t been using it for a while. But for that problem, it’s simple: just press [ Shift+D ] on a Selected Control Point to Duplicate it; it will work like an Edge Subdivision of the Interporlation Curve. This Operator (and many others) you may find in the Key Menu in the Header Region of the Drivers Editor. Remember those elements should be part of Splines in Blender (also found in Curve Objects for example): so it’s the same behavior: each Control Point possess 2 Handles.
I’m sorry, It’s not clear in your post if you are using the Addon already, or are attempting a more conventional Corrective Shape Keys for Shape Keys. I’m not sure, because I’ve not being dealing with those features for a while, and that (more conventional) method, taken crude, is a complete headache, very inconvenient and often, also, very innefficient for Organic Rigging purposes!
Of course, it is possible, but usually in a very truncked process. My assumption is that, with the help of the Addon (and by being able to analyse/separate the Axes, and with the possibility of shaping the Interpolation Curve with changeable amount of Control Points that you were also looking for), that should render such particular use, of an extra Corrective Shape Keys (for Shape Keys), perhaps obsolete in many cases; that means, in principle, by using the Addon + Drivers Editor, the own Shape Key should be able to ‘correct’ itself from 0.000 to 1.000, no longer requiring a Corrective Shape Key for itself. But I cannot totally certify everything I’m telling here at this moment, because Shape Keys is not my specialty; sorry. I just know that the Addon is great and still works, and it’s true that the analysis process is just ludicrous regarding the current limitions of the Shape Keys in Blender; but when I understood it, I was already using other methods. My engines are ‘out of oil’ for addressing this problematic in details. But I hope you are able now to figure it out, whatever approach you take?
Hope this is helpful.
Maybe someone else can take a look at the file?
Hmm whenever I duplicate the handle it wants to snap to one of the sides… It seems like nobody else has looked at this so maybe I should start a new thread?
Apparently, the Drivers Editor, may have some sort of Auto-Snap to Grid that cannot be turned off in the UI of that Editor (?); or is something related to certain cases, like editing Shape Keys.
However, by Zooming In into the graph’s Grid, Grabing [ G ] a Control Point and [ Holding Ctrl ], it is possible to Snap a Control Point of one of those F-Curves, in middle positions that do not require to be Integers (0 or 1); so can Snap the Control Point to 0.5, 0.2… depending on the Zoom. Any new made Duplicate Control Point/Key Frame, must be immediately Repositioned to the side, with [ Hold Ctrl ], before or after ‘in time’, using the Zoom In and Grid Increments, otherwise that Duplicate will just Re-Snap and Merge itself automatically, with the unique value possible ‘per time’, as in conventional maths.
There’s also a command using [ Ctrl+G ] while Multi-Selecting Control Points/Key Frames, it will mark a mean position, that can be used to set a Duplicate I guess.
I think with this you’ll be able to make progress.
Sure, well remembered. Examples would be much better.
For some reason, this time (I’m not sure why), I had to push the outside Control Point to the middle area of the Graph, in order to have it ‘subdivided’ in some way, by Duplicating it and letting that extra Control Point stay to to far right side instead. So, in the end, I had 3 Control Points instead of 2, and the middle one could go anywhere in the middle area, provide Zoom In was powerful enough to have the Control Point Snapping to smaller Increments of the Grid.
Check this record:
I can tell: working on that UI can be really puzzling; I barely know what I’m doing.
I would link you some good introduction tutorial(s) for manipulating the F-Curves in this particular Graph UI of the Drivers Editor, if I had a reliable reference right now in my Youtube collection…
I’ll be look into it; but if you’re researching as well, it should be a good idea.
Always remember to consult, on occasions, the Blender Manual for specific UI topics (like in this case, the Drivers Editor). There are basal and valuable information there, that we might seldom meet anywhere else: https://docs.blender.org/manual/en/latest/editors/drivers_editor.html