Clean Toon Face Shading with Generated Normals

UPDATE: There is now an article about implementing a setup like this in Unity.

UPDATE 2: I’ve started a new series on a more flexible and comprehensive method. This can still be useful, but go there first.

base vs generated-1_gif.gif

Tired of toon shading looking like crap on your model's face? Do you also hate doing Normal and topology editing to fix it? Here's another method! Our mesh Normals are the source of all our shading problems, so let's stop using them! Instead we'll build new, clean Normals out of Object Coordinates.

This video is an intro to this method of fixing face shading. I have not been working with it long, so expect more videos on this subject and improvements to the setup. (Blender 2.93)

Get the project file on Gumroad ($0).

Get the Prop Driver Addon($0).

Twitter Thread with WIPs and tests:

GIFs from this project:

Full shader on the head.

Full shader on the head.

Full shader and hair+accessories.

Full shader and hair+accessories.

Overall geometry shape matters, but specific topology does not. This is because the generated Normals are projected from an Empty Object, and are not based on the actual faces/vertices of the mesh.

Overall geometry shape matters, but specific topology does not. This is because the generated Normals are projected from an Empty Object, and are not based on the actual faces/vertices of the mesh.

Creating a new, clean Y Normal to define the cheek curve.

Creating a new, clean Y Normal to define the cheek curve.