How to make a CARTOON SHADER with a ' double rendered outline ' similar to Disney

first of all that this is a bit ’ hacky ', or is more to get started

the method is based on

  1. drawing the same mesh twice with reversed culling to create a ’ 3D shell outline ’ that looks nice from most angles, or on most geometry

  2. then that the technique requires people to use toon - quality textures, or that it doesn’t add quantization at least to get started on the colors

  3. after that it works directly in the 3D world of Flax Engine, and doesn’t need custom lighting, or sort of looks nice with almost no effort

  4. to get hair to look really nice for these kinds of cel - shaded toon results is beyond me, and that must refer to other tutorials, or that it has to do with specular lighting, and also how normal maps, or post proc is applied to the model

  5. this also works for animated models, or then that it’s relatively cheap depending on how many polygons are in the 3D meshes, and last that it’s rather easy to implement for beginners, or then that it’s somehow not that different from what the Disney corporation uses in it’s animations, etc

here’s an example of the effect, and that for low - poly models it’s rather fast

STEP 1 :

this is something that learned from the Godot Engine 3 - series that had both ’ next pass - materials ', and then a setting called ’ grow ’ that let’s one add to the size of the existing mesh in the direction of the normals, or that sort of pushes all the vertices a bit from the surface of the 3D object making it a bit bigger in every direction

image

Flax Engine doesn’t have ’ next pass - materials ’ that effectively just renders the same mesh twice, and so one has to ’ hack ’ that a bit to get the same effect, or here’s a simple example

  1. start by making a simple sphere

  2. then add another sphere of the exact same size as a child of the first one, or so they follow each other in 3D space, and scale, or rotate to the same values

  1. write this material shader that takes the ’ normal vector ’ for each 3D point on the mesh, and pushes it a little in that direction all over the mesh, or that also inverts the second object so it works like a shell around the character, and however doesn’t render on the front faces, or so the first mesh is still visible

  1. add that to the second sphere to get this result, or also set it to black color to get a classic cartoon outline, and then unshaded to avoid shadows, or reflections on the outline because of the engine graphics calculations, etc

note : to avoid lights, and shadows, or also effects changing the colors of the outline set the shading model to unlit for this material in the general settings in the material editor here

STEP 2 :

the next step is simply to paint the textures on the 3D model in a more cartoon style, or to get the last look, and sort of make sure everything makes sense in a cel - shaded world

STEP 3 :

notice that Disney characters, and for instance also in Arknight Endfield use different colors for the outlines, or not just pure black, and that to get a more pro look to everything that one could tweak the colors of different outlines on a composite 3D model, or to sort of ’ cut it up ’ in Blender so that it could have different colors, and several outline shaders

it’s a bit subtle, or however you could see the difference here

and here’s an all black outline that somehow is more harsh, and then perhaps could look a bit better, or sort of adds a bit of noise to esp. cartoon renders