Using normal maps, we can manipulate an object's shading to create the illusion of depth. This technique is widely used in the animation and gaming industries because it reduces the computational power needed, as fewer vertices are required to model detailed objects.
Essentially, normal maps allow us to simulate high-detail surfaces by using pre-rendered images that tell the render engine how to respond to light, all without adding extra geometry.
Examples of using normal maps in industry include adding grain/crumbles to a brick wall, creating dents and scratches in metal, and creating pores and wrinkles on character models. These all serve to enhance the detail of your model.
Check out this tutorial on Cel Shading in Blender!
Today we will be creating our own normal maps to create the image that you see below.
We will start by repositioning our camera so that it sits above the world's origin. The best way to do this is by selecting the camera, pressing ALT + G to clear the rotation, and then pressing G + Z to move it along the z-axis.
Next, we will change the resolution of the camera from 1920 x 1080 to 1024 x 1024, this can be found in the output properties tab.
The final camera setting will be to change the camera type from perspective to orthographic. This can only be done when selecting the camera and changing the type in the settings tab.
The first object of our normal map will be a screw. This can be added using a built-in Blender addon. To enable this, go to Edit > Preferences > Addons, and search for ‘Bolt Factory’.
We can then add our screw-in by pressing shift + A and selecting mesh > bolt. We can change the bolt settings when we open the panel that appears at the bottom left-hand corner of the screen.
To add a little more detail, we can go to the modifiers tab and add a bevel modifier set to 3 segments.
We can see the normal data of the mesh by going to the viewport shading tab at the top of the screen, selecting MatCap, and changing our selection from default grey to multicolored (this is still in solid mode and not material preview).
To have a transparent render, we must go to output properties, and under the film tab, enable transparent mode.
Following this, we must go to the viewport overlays tab and disable the axes, alongside the floor. This will ensure that only the screw is visible in the render.
As opposed to using the typical render method, we will do a viewport render. This will render exactly what we are currently seeing through our camera.
This will give us our normal map. We can repeat the exact same process for the monkey head so that we have two normal maps
Next, we can add in a cube to plaster these normal maps on. In your viewport press shift + A and add in a cube. We can also change the timeline to the shader and UV tabs.
In the shader tab, using shift + A, add in the texture coordinate, mapping, and image texture nodes.
Press open on the image text node and navigate to where you have saved your normal map.
Afterwards, add a normal map and plug it into the principled BSDF which should be connected to the surface socket of the material output node.
Using the UV map, we can reposition it so that one of the faces incorporates our image. So that the normal map isn’t on all the faces on the cube, change the image texture settings from repeat to clip.
We can add the monkey on another face of the cube. To do this, add another material to the cube. Next, in edit mode, assign a face to that new material. We will then follow the exact same procedure as seen in the previous steps.
For better reflections and light interactions, we can decrease the roughness of our principled BSDF and increase the metallic slide. We can also add some bevels. Tab into edit mode, select everything by pressing A, then press CTRL + B to bevel and scroll up on your mouse wheel to add more divisions.
We can best see the effect of our normal maps by entering rendered mode, we can do this by pressing the Z key. Add some area lights to the scene by pressing shift + A and selecting area lights. By changing the power and angle of the lights we can see that the shadows are produced according to the light settings.
When we change the light settings, we can see how the normal maps respond as if they are 3D-modelled objects as opposed to simple images.
Normal maps are another important tool in your toolbox of techniques for becoming a 3D artist. Using them will help you to create better, more realistic materials, alongside reducing computational load in your projects.