Rich Shading in Adobe Illustrator

Posted on Feb 1, 2012

In improving the workflow for drawing colored comics, I obsessed for several days in Illustrator, and arrived at a smooth workflow for some nice-looking shadows and highlights that I’ll share in this post.  This tutorial is intermediate-advanced in technical aspects of Illustrator CS5, with basic color theory mixed in.  The graphic style file I arrived at can be downloaded here.


At the outset of this exploration I was dissatisfied with how I shaded shadows in Illustrator.  Consider the following beige cylinder with light coming from the upper-right:

Unshaded Cylinder

To shade this I would often lighten the top by picking a brighter fill color (A), and then apply an additional fill for the form shadows (B).



This suffers from being “bleh” and not structured.  Let’s talk about this one at a time, the “bleh” part first.  To speak about color in HSV (hue/value/saturation) space, I’ve attempted to put down shadows and highlights by simple changes of values. Real shadows and highlights isn’t flat out go along the black-white axis (value), but also differ in the hue and saturation dimension as well; the absence of differences in the last two dimensions is what cues us that the illustration is shallow.

While the specific changes in the hue/saturation dimensions depend on the lighting and environment, there are some generalities.  In the hue dimension, most day-to-day light sources are biased to the yellow-orange (think daylight, fire, or (North American) light-bulbs); this generally tints the highlights and specular to be slightly yellow, and the shadows take on a complementary shade of blue-purple.  Along the saturation axis, the shades are traditionally painted with more saturated darks – I’m not sure why this is, but I think it might be related to (and compensates for) our heightened ability to distinguish darker colors.  (If you have a good source for this, please point me to the right reference!)

So going back to our cylinder, assuming a generic lighting situation, what we really wanted is for the top to be lighter, yellower/warmer, and less brown/saturated (C); the form shadows to be darker, colder/bluer, and more saturated.  So the result would look like D:

Richer shadows

To see this clearly I’ve extracted just the form shadows and placed them side by side.  On the right is the value-only shadow, and on the left is what I’ll refer to as “rich shadows” in this post.  I think we’ll agree that the rich shadows just look better :)

Rich Bland Shadows Comparison


My second objection is to the “structureless” of the way shading was applied.  Say I’ve drew 10 cylinders, and later decided that, gosh, I really don’t want the all cylinders to be beige, but rather half should be green.  Global colors won’t help here, and by having tons of hand-picked colors and gradients, I’ll now need to track down every instance to change them.  I want a clean way of creating shadow shapes, flexibility to modify the base colors independent of shading, and an organized way of locating them.  I’ve made some headway towards those lines, and this is what the remainder of the tut is about.

Highlight/Shadow Shape Creation

My workflow consists of creating closed shapes for highlights and shadows, assigning “rich gradients” to them, and keeping them in separate layers.  In this section we’ll talk about the different ways of creating the shapes.

Many shades begins right on the edge.  There are several ways one could go about this:

(i) drawing the shadow shape as close as possible to the outline,

(ii) using “draw inside” mode,

(iii) using the pathfinder/shapebuilder tools.

The first option — don’t do it (despite what tutorials online might have told you).  Tracing outlines with a pen once takes time, and tracing it a second time takes an equal amount of time.  Not only is it clumsy: what do you do when you’re drawing things with no strokes?

Draw Inside

The “draw inside” mode is the little icon underneath the toolbar, which becomes active when a path is selected:


I usually access this using the shift-D keyboard shortcut, which cycles between normal drawing, draw behind, and draw inside modes.  You know you’re in “draw inside” mode when you see bracketing dash-lines around your shape:

DrawInside mode

And now when you draw new paths crossing the shape, Illustrator will use the path as a clipping mask so that only what is inside the shape is displayed:

Effects of Draw Inside

While this is a usable (and oft convenient) solution, I find it clumsier than the Shapebuilder solution (next section) because it converts the whole lot to a group with a clipping mask,


which besides meaning that both shapes must reside in the same layer, also means that in outline mode (cmd-Y / ctrl-Y) you see both complete shapes:


And when you’re working with a complex illustration in outline mode (which I often do — I paint analytically :| ), the superfluous lines quickly becomes an annoyance.


The best solution I’ve found to date is to use the Shapebuilder tools (pathfinder if you’re using pre-CS4 Illustrator).  You simply draw the base shape, and add the shadow as a closed shape on the top (holding alt will give you closed shapes), not caring about the parts that protrude:


Then, selecting only these two shapes, press shift-M to activate the shapebuilder tool.  The icon would now change to an arrow with a plus sign; click outside the shapes, hold alt, and drag over the parts you want to remove to give two overlapping closed shapes:

Effects of Shapebuilder Removal


You can now happily move the shadow and highlights into their own layers (if you, like me, are obsessed with structure), and the view from outline mode is clean as well.

A few notes: make sure that both of these are closed shapes.  This will not work / act strangely when performed on open paths.  When you are constructing a complex illustration, you’ll probably have many overlapping shapes; the shapebuilder will treat all unselected shapes as if they don’t exist, so by only selecting the shadow and the base shape, you make sure that the cutting and removal goes exactly the way you want it.  Earlier on I habitually goes into a select allshapebuilder workflow, which often means multiple add and subtract to get the shape right; by precision selecting and removing, this also simplify your scene, as shapebuilder on irregular paths tend to generate large numbers of anchor points.

Great!  You can now create shadows that starts from the edge, and goes into the form in an arbitrary shape you’ve defined with a path.  We’ll now assign highlights and shadows to them.

Rich Shading

In the attached graphic style you’ll find a total of 8 graphic styles:

Graphics Styles Attached

Each of these contains a stack of gradient fills, and can be used similarly by simply assigning to the closed shadow shape.  The highlights tints to warm, desaturates, and lightens:



The shadows are cool, dark, and more saturated:


The exact parameters and blend modes were obtained after hours of fiddling.  You may find that there are settings that work better — in which case I’d definitely want to hear from you!  Each of these have a long region where it’s transparent; this, I find, aids the chance that it works just out of the box.  The darkness of the shadows can be easily adjusted with the master opacity.

The stack of gradients themselves, sadly, cannot be straightforwardly adjusted in a synchronized fashion.  So to adjust the direction or buildup of the gradients, you’ll need to use the gradient annotator on each of the three components.  This is clearly not ideal – but none of the other methods I’ve tried (incorporating opacity masks in graphic style, key-combinations when selecting gradients, or using a single “master gradient” for solid fills) bear fruit.

Shadows and highlight layers

At the end, I usually group all the highlights and shadows into their own layers: I find that they’re easier to track down that way, and the ability to bulk turn on-off the different effects let me get a better sense of what the illustrations need. (To move the shadows to their own layer, select the shape in the Layers panel, and drag to the target layer.)

The greatest benefit for me here is a streamlined workflow for getting non-bleh shading simply by assigning where and how intense the shadows are, instead of fidgeting with each individual shadow every time.  It clearly isn’t a one-size-fit-all solution – for example, without using meshes, the gradients are either radial or linear – but does work as a starting point for other adjustments.

(I’ll update this post later with comparisons of illustrations I’ve done up using this method, and with plain value adjustments.)