Wednesday, April 29, 2015

The Difference Between Bump and Normal Maps

 In cases where it would be inefficient to use geometry to capture minor details like the gaps between bricks or floorboards, another kind of texture map can be used which, for many years, was known as a bump map.


 This image shows three spheres. The first sphere has flat and has no texture assigned to it. The second sphere has a simple checker map assigned to the bump channel. The bump map tells the renderer how to light the model, without affecting the geometry. For many years, the bump map was used to create this extra detail, but often it seemed rather flat and unrealistic, especially if it was used heavily in a model. In succession, normal maps were created, which, by defining a lot more than a bump map, tells a lot more information to the renderer which helps it light the model in a more realistic manner. This is what is applied to the right-most sphere and, comparing the two method it is clear which is the most superior.


These are the textures that were assigned. Bump maps worked in greyscale, where how light or dark an area defined how 'displaced' an area was on the model. Normal maps work a lot differently. By simulating light hitting an object from three different directions, it is a lot more detailed, but also harder to replicate by hand.

 This is a visualisation of a normal map. This model is simply a cube with a torus laid on top. There are multiple lights that are rendered. First, there is a white ambient light. Then, in three directions, lights for the three primary colours are placed. Often blue faces straight down, with red and green being the other two. Finally, lights with the same colour but negative intensity are placed opposite of the directional lights.

However, this is often not how normal maps are generated. There are multiple ways that they can be made.

First of all is the most simple - converting a bump map into a normal map. This is not a perfect method but for most cases it works fine. Programs such as Crazybump and xNormal are able to do this.

The second method is creating both a high-poly and low-poly model and projecting the detail of the high-poly onto a normal map using the low-poly model's UV unwrap. You can do this with xNormal or even directly in the sculpting program zBrush, with a few tweaks.


Despite the versatility of normal maps, they must be used in moderation. When creating them, one must consider how much the detail will stand out and whether it is possible to get away with faking it without people notice. Sometimes it is flat-out better to use geometry as these maps do not change the geometry and all illusion is lost once you see it from an angle that isn't intended.

No comments:

Post a Comment