Eye Brow & Eye Lash Controls: A Closer Look

A place for unofficial tutorials posted by MH users

Moderator: joepal

Eye Brow & Eye Lash Controls: A Closer Look

Postby brkurt » Thu Feb 23, 2017 3:43 pm

I've been working on a new approach to fine control of eyebrows and eyelashes.

The first step

is to use Manuel Bastioni's eyebrow and eyelash design. He advocates individual meshes for clumps of hairs.

If you have ever watched young women do their eye makeup (I had three teen-age sisters), you'll know that this is what they do.

The second step

After that, I created a variation of the eyebrow rig. The sequence is backward from the default rig, with a target IK bone added.

I'll use the left eyebrow/eyelash system for my example:

eyeBrowTargetIK_L --> innerEyeBrow_L --> middleEyeBrow_L --> outerEyeBrow_L

Moving the IK bone creates very natural-looking movements in the eyebrow (both flesh and hairs).

The third step :

is to create upperEyeLash and lowerEyeLash Bezier curves as modifiers to the eye lashes.

(This supposes that one has created upperEyeLash and lowerEyeLash vertex groups in your meshes.)

Don't forget to CurveStretch your meshes here.

Here it gets a little hairy (pardon the pun): the Beziers curves need to be subdivided (once) and three Hook modifers need to be added to each curve.

What you get from this are three Empties (I suggested resizing the arrows to .125) ; they will allow you control a third of the meshes in XYZ axes.

From here, you can choose how you want your eyelid to function. I created eyeSocket vertex groups, and then divided them into six, one for each of these rig bones:
innerEyeLid_L; middleEyeLid_L; outerEyeLid_L; innerEyeLid_R; middleEyeLid_R; outerEyeLid_R.

You'll probably have to do this manually, because Automatic Weighting doesn't do that great a job.

Because of that, it is important the weight-paint the lid vertex groups so that they interact in a natural way. My approach so far is to start with a central weight of .50, and use .25 on the common edges of the vertex groups, marked in gold.

Here is a quick sketch of what I have described. I'll do several screen captures of models later on.


And here is what the controls (rig, curves and hoooks) looks like full on:


and here is what a Left Blink looks like in OpenGL:


and a simple UV texture map render:


Is is perfect yet? No. Both lashes are too close to the bridge of the nose. But it is perfectly controllable; the curves can be adjusted. :)
And not just in Blender; everything I've done here can be recreated in Maya, Cinema 4d or Modo. But I'll let others do that. ;)

Ten years ago I was knocked over by the Geisha Project, and I've spent a bit of time figuring out what the original artist did. :D

http://www.cgchannel.com/wp-content/upl ... man100.jpg

I'll make this model uploadable (in a newer, stable version of Blender) in a couple of days.
Posts: 1091
Joined: Sun Feb 17, 2008 8:49 pm

Re: Eye Brow & Eye Lash Controls: A Closer Look

Postby brkurt » Mon Mar 19, 2018 4:31 pm

Okay, another refinement. This one is based on the previous steps: (1) create eyebrow hairs using Dupliverts; (2) convert to a mesh; (3) parent that mesh to an armature.

The problem becomes "How are these hairs going to be controlled in a facial expression.?" The answer is to apply a Curve Modifier to the eyebrow mesh, which seems simple enough, but isn't.

Since these next steps are little-known, I don't expect the latest versions of Blender will have changed them much. If someone requests, I'll try this in 2.76b.

So..here is the model, with eyebrows, curve modifier and....Empty objects at each end of the Bezier curve. This allows the curve to be moved.
The weird part (for me) is that all I did was parent the curve object to the armature, and everything work. So, the curve must be parented to the root bone.

Okay, I've found out the right way to do this. The curve doesn't automatically parent to the root bone; it is just a question of the place of the curve modifier on the stack. :D The eyebrow mesh modifier must be: curve first; armature second. This is one of those 'grey areas' in Blender; random placement on the stack will give unpredictable results. Blender 2.6x and up throws out a warning for this. :geek:


and a quick render, with eyebrows arched, mouth open, and head thrown back.

Posts: 1091
Joined: Sun Feb 17, 2008 8:49 pm

Re: Eye Brow & Eye Lash Controls: A Closer Look

Postby maddes8cht » Wed Aug 22, 2018 4:35 pm

When it comes to eyebrows, female eyebrows are placed higehr than male ones.
https://secure.i.telegraph.co.uk/multim ... 49636k.jpg

https://www.google.de/search?q=eyebrow+ ... e&tbm=isch

All (female) eyebrows fel somehow strange to me, since it is not possible in Makehuman to simply place them higher on the skin.
I would really like to have a control for this.
Posts: 1
Joined: Wed Aug 22, 2018 4:21 pm

Re: Eye Brow & Eye Lash Controls: A Closer Look

Postby Hellokate » Wed Aug 29, 2018 1:16 am

maddes8cht wrote:All (female) eyebrows fel somehow strange to me, since it is not possible in Makehuman to simply place them higher on the skin.
I would really like to have a control for this.

I actually came here looking specifically for this, too. I'm so new to this that I would have no idea how to make my own target, but a simple up and down for the eyebrows would be awesome. Thank you.
Posts: 1
Joined: Wed Aug 29, 2018 1:11 am

Re: Eye Brow & Eye Lash Controls: A Closer Look

Postby jujube » Mon Sep 17, 2018 12:34 am

Some technical info on targets: All possible targets can only be made with things included in the "fit tools" (maketarget) / " with helpers" (makeclothes) models in blender. It has eyes, eyelashes, tongue, teeth, and hair, but no eyebrows, so there can't be an eyebrow target. Or not directly. The eyebrows move with the skin on the forehead, so there would either have to be a forehead target affecting whatever part of the head the eyebrows are "attached to"*, or a new, better set of eyebrow models.

*using vertex groups

Better eyebrows would be pretty nice, actually...
Posts: 404
Joined: Fri Aug 14, 2015 10:46 pm

Re: Eye Brow & Eye Lash Controls: A Closer Look

Postby blindsaypatten » Sat Oct 06, 2018 2:43 am

I can remember doing a deep dive on eyebrows a year or so ago. They are very challenging because the standard mechanisms fundamentally don't work.

As jujube said, real eyebrow movement involves skin sliding over bone. Targets don't work because they move any given point in a straight line, sliding over the brow bone is impossible. While armatures can move in curves there still is no way to move the eyebrow hair without moving the underlying bone structure as well.

My "solution" was to place the eyebrow hair on a separate mesh and then use Blender's shrinkwrap so that the hair mesh would follow the bone structure contour as the armature moved the eyebrow mesh up and down. That worked reasonably well. One complication is if there are features like freckles because they would fail to move along with the eyebrow hair. I guess you could shrinkwrap the surrounding skin too, although where to put the edges might be an issue...

After looking at many many eyebrows I saw that, in general, the top of the eyebrow hair was at the brow ridge in the center by the nose, and the bottom of the eyebrow is at the ridge on the outside (the eyebrow is below the ridge in the center and above it on the outside). This means that you have to deal with brow ridge topology if you want to be realistic.

If you look at the expressions or expression mixer in MakeHuman you'll see that the brow ridge moves along with the eyebrow hair.

For many purposes of course, the moving brow ridge is not a show stopper.
Posts: 586
Joined: Tue Mar 14, 2017 11:16 pm

Return to Tutorials

Who is online

Users browsing this forum: No registered users and 1 guest