Interactive Eye Highlighting

eye_post

To make characters appealing, it’s important to get the eyes right; and one of the most important aspects of appealing eyes is the right amount of specular highlight. In most cases the best position for a highlight is within the area of the iris, but not right in the pupil.

scribbles

The best way to get this effect is of course by tweaking the actual lighting in the scene so it results in nice lively eyes. However this can lead to continuity issues, shadows start pointing into the wrong direction, etc. To solve this, the eye spec has to be separated from the scene light.

Since we’re making a cartoon we can bend reality a bit further, the specular reflection doesn’t have to be 100% in the same place as the scene lighting… BUT it still has to be believable.

In Big Buck Bunny for example, the highlight was a separate – specular only – light (often one for each of the characters) which enabled us to put it exactly in the right spot. This technique is still very fiddly and it takes a while (and a lot of re-rendering) to position the spec exactly where you want it.  Another challenge: Since we render in Cycles there is no easy way to use light-groups, AND all our characters are linked into the shot files as groups – which means we cannot tweak material properties on a per-shot basis and per object, this gets a bit more tricky. But only a bit.

For Caminandes we chose a more flexible solution that allows us to control the highlight interactively in the compositor using normal passes (and for each shot).

eye_steps

  1. In the character library file, define a material/object ID for the eye
  2. In the shot file, render a Normal Pass for the entire image
  3. Enable ID passes for objects/materials to isolate the eye from the rest of the image
  4. Using the compositor, apply a color ramp on the dot product of the normal pass using the Normal node.
  5. The Normal node is used to control the direction of the specular reflection, it needs a slight tweak to shift the vector around and make it more user-friendly.
  6. Add the fake spec to the image by using the ID pass as a mask (or multiply the spec with the ID mask, and then add)

Sounds confusing? it’s actually a pretty simple once you get the concept. here is the setup:

eye_nodes

and a simple blender file with the node setup in a group: eyelighting.blend

Of course, the position of the specular has to match the general light direction. The eyes still get reflections from the scene, but the specular highlight adds to the appeal.

Cheers!

.andy

13 thoughts on “Interactive Eye Highlighting

  1. Hello ! Good tweaking !
    I have just a little question.
    Why invert RGB channel for the normal. I tried with blender internal, the tweak works without flipping vectors, but in Cycles, we need to flip vectors.
    Is it a bug ? Do you know with normal passes are not similar in BI and Cycles ?

    Thanks for sharing,

    1. It’s seams that Normal Pass in BI is camera relative
      and Normal Pass in Cycles is world relative

      So on a single Sphere, vectors would change when camera moves around.

      That is really strange, is’nt ?

  2. man, awesome, but check out what the guys from kiribati did, it’s simillar but you can have realtime cycles rendering, and with a bit of rigging skills you can probably create a little widget controller to move it in the viewport: I’m using it in the new overhauled version of my lollypopman character, and it’s gorgeous https://www.youtube.com/watch?v=5luvZw1J9ws

      1. However, he makes a good point about linking it to the rig. The movie I worked on a few years ago did this; the animators could control the size and position of the highlight in the GL viewport.
        Too late for that in this one, but worth noting for the future.
        (BTW – great stuff Andy!)

  3. I’ve painted eyes and eye surgery for 35 years, and –tis true– the specular placement is *important. I use it to break-up the circle-in-circle effect of the iris:pupil —*that can be sooo distracting. Just FYI, its because our brains are hard-wired to identify eyes, even far from the center of attention.

    You can ‘kill two birds’ with one specular ‘stone’ if you cross the border at the iris (color) and pupil (black), if there is little contrast there, cut the iris edge

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>