A way to store normal data for toon/anime lighting

Hello all!

I’ve been experimenting with toon/anime lighting for a game through modifying vertex normals manually and I’ve been able to get good results:


So far so good. However, I’m only able to make lighting look good from the front and back and things quickly fall apart when the light source rotates:


I found it impossible to adjust normals in a way that preserves the look I’m going for without creating some strange shadow artifacts and I hesitate to raise the poly count.

I tried baking normal maps to store the normal data for different light directions but that gave inaccurate results compared to modifying the normals manually.

Is there an alternative way to store the vector of vertex normals similar to shapekeys that will allow me to achieve this? I’d rather not have to swap meshes altogether because I want to have the ability to interpolate between different normal settings.

In case it matters I intend to use UE4 as the game engine.

Woops, it was an error on my part. I had to disable the “solidify” modifier that creates the outline to get the right results from baked normal maps. :slight_smile:

This looks very cool, props to you :slight_smile:

If you like to share how you did this, I would be interested.

Thanks! Sure, I can make a tutorial on the basics of how to achieve this. It’s a lot simpler than it looks but it takes a lot of manual work. :slight_smile:

I saw a way of doing these toon edges. when i was scouring YT.
It was by duplicating the mesh scaling it up, and flip the normals.
Although it was a cool result, it couldn’t top this :slight_smile:

The solidify modifier actually does just that: generates a duplicate mesh to create the outline. I think the reason it might look different is because I applied a dark brown color instead of the usual pitch black in order to make it blend in with the rest of the character.

you can store normals as uv maps as shown here using a quick python script script.https://blender.stackexchange.com/questions/192338/smooth-shading-with-nodes
just keep in mind you need to first create two uv maps that have the same names as the ones referenced in the script.