Last week we looked into the role of bump maps and what they do. Today we are going to look into the fascinating world of Normal Maps.
Normal Maps, NMs for short, are special cases of the bump map. They are very similar in function but with a twist: they hold more precise information on how to create the shading that simulates dents and bumps on the surface.
The limitation of the bump map is that it is a grayscale height map that describes the roughness of the surface. There are limitations in resolution and precision in using bump maps, so normal maps have been devised. Before we look in detail at the NMs, it’s important that we understand what a “surface normal” is. We know that the models that we use are made of polygons. Each polygon is defined in space by 3 or 4 vertices. Each vertex is defined by 3 coordinates: x, y, and z. In the Poser/DAZ Studio world the y axis is up and the z axis defines depth.
A surface “normal” is simply a line that is perpendicular to the surface of the polygon (I’m simplifying), and, in several 3D programs, is used to defines what side of the polygon faces “out” compared to which part faces “in.” Since computers don’t have sense of space, they are not born with senses as we are, and don’t learn in a tactile and visual way, they cannot simply look at an object and determine what is “out” and what is “in.” That piece of data has to be encoded in the geometry. Surface normals do that. Here is a visual representation of surface normals on a mesh of polygons:
Image by Nicoguaro – Own work, CC BY 4.0, https://commons.wikimedia.org/w/index.php?curid=46926592
A normal map is a file that encodes bumps and dents using RGB values to store the x,y,z coordinated of the surface alteration. For example, the x value can be stored in the red channel, the y value can be stored in the green channel, and the z value in the b channel. Of course we know that there is no actual surface displacement when using a normal map, but that’s the idea. The renderer simply “paints” the shading that would occur if an equivalent displacement would happen. Because a NM holds three separate values to specify the amplitude (strength) of the surface alteration, this type of map has more precision than a bump map and it’s generally preferable to a bump map.
In Reality you specify a bump map or normal map in the Bump Map channel. To specify if it’s a normal map you need to open the texture in the editor and flag it as such, if it’s not done automatically by Reality. Reality recognizes several common suffixes for the NM file name, like nrm, or normal, norm, and nmap. If the file name ends with one of them, like MyFile_nmap.jpg then Reality will automatically set that files as a normal map.
I hope this was useful, next week we will look at displacement maps.
Keep on rendering!