Is this Normal?

As an addendum to my Displaced Bumps post, I realized I didn’t mention Normal Maps.

Normal Maps

There is one primary difference (at render time) between normal maps and the bump or displacement maps I mentioned in the previous post. While the previoius two technologies ask the rendering engine to re-calculate the angle of reflection based on if a particular point was raised or lowered from the surface, normal maps actually tell the rendering engine what changes to make. They provide an offset vector (in 2 dimensions) that the rendering engine applies when calculating the light interacting with the surface.

So, while a bump/displacement map might tell the engine that the point on the mesh is raised or lowered by 0.5 centimeters, a normal map tells the engine to deflect the normal at that point by 3 degrees in one dimension and -2 degrees in the other (for example).

Is it better?

I hear all the time about how normal maps are “better” than bump or displacement. And they certainly do render more quickly. After all, they tell the rendering engine directly what changes to make to the normal angle rather than asking the engine to calculate them itself based on if the point was raised or lowered. This is why normal maps are all the rage in realtime rendering engines (like games).

However, normal maps don’t change the surface of the object. So you can’t get shadows from a normal map. You also wouldn’t see any profile changes in a closeup picture.

Also, the “proper” way to create a normal map is to use two versions of a 3D object. One is the low-res version that the map will be applied to. The other is a high-res version of the model with all of the extra details added. You can create similar maps by converting displacement or bump maps into normal maps (see my Using DS Displacement in Carrara post for more info), however the results from this sort of converted map are almost certainly not going to be all that superior to the bump or displacement map you started with. Unless your rendering engine you’re using just happens to be better at using normal maps than the others.