Elliminate Texture Confusion: Bump, Normal and Displacement Maps
Have you hit a bump on the road to mastering textures for your 3D assets? Don’t feel bad! Many artists who are new to texturing or 3D in general experience confusion when encountering bump, normal and displacement maps for the first time. They all seem to do sort of the same thing, right?
The answer to that question is a resounding "sort of." Each one of these three types of maps creates something that looks like additional resolution or detail on the surface of geometry. Some of this detail is real and some isn't. In this article we will dive into each of these three maps and learn what each map does and what they don’t. You’ll also have a better grasp on the strengths and weaknesses of each type of map.
A bump map is actually one of the older types of maps we’ll look at today. The first thing you should understand about bump maps is that the detail they create is fake. That’s right, bump maps create the illusion of depth on the surface of a model using a very simple lighting trick. No additional resolution is added to the model as a result of a bump map.
Typically, bump maps are grayscale images that are limited to 8-bits of color information. That’s only 256 different colors of black, gray or white. These values in a bump map are used to tell the 3D software basically two things. Up or down.
When values in a bump map are close to 50% gray, there's little to no detail that comes through on the surface. When values get brighter, working their way to white, details appear to pull out of the surface. To contrast that, when values get darker and closer to black, they appear to be pushing into the surface.
Bump maps are really great for creating tiny details on a model. For example pores or wrinkles on skin. They are also relatively easy to create in and edit in a 2D application like Photoshop considering you are just using grayscale values.
The problem with bump maps is that they break pretty easily if the camera views them from the wrong angle. Since the detail they create is fake and not real resolution being added, the silhouette of the geometry that the bump map is applied to will always be unaffected by the map.
Normal maps can be referred to as a newer, better type of bump map. As with bump maps, the first thing you need to understand about normal maps is that the detail they create is also fake. There's no additional resolution added to the geometry in your scene. In the end, a normal map does create the illusion of depth detail on the surface of a model but it does it differently than a bump map.
As we already know, a bump map uses grayscale values to provide either up or down information. A normal map uses RGB information that corresponds directly with the X, Y and Z axis in 3D space. This RGB information tells the 3D application the exact direction of the surface normals are oriented in for each and every polygon. The orientation of the surface normals, often just referred to as normals, tell the 3D application how the polygon should be shaded.
In learning about normal maps, you should know that there are two totally different types. These two types look completely different when viewed in 2D space.
The most commonly used is called a Tangent Space normal map and is a mixture of primarily purples and blues . These maps work best for meshes that have to deform during animation. Tangent Space normal maps are great for things like characters. For assets that don’t need to deform, often times an Object Space normal map is used. These maps have a rainbow assortment of different colors as well as slightly improved performance over Tangent Space maps.
There are definitely some things you need to be aware of when considering using a normal map. Unlike a bump map, these types of maps can be very difficult to create or edit in a 2D software like Photoshop. Likely, you will bake a normal map out using a high resolution version of your mesh. There are however some exceptions for editing these types of maps. MARI for example has the ability to paint the type of surface normal information we see in a normal map.
When it comes to support, normal maps are pretty well integrated into most pipelines. Unlike a bump map, there are exceptions to this rule. One of those would be mobile game design. Only recently has hardware evolved to the point where mobile games are beginning to adopt normal mapping into their pipelines.
When it comes to creating additional detail for your low-resolution meshes, displacement maps are king. These types of maps physically displace (as the name implies) the mesh to which they are applied. In order for detail to be created based on a displacement map, usually the mesh must be subdivided or tessellated so real geometry is created.
The great thing about displacement maps is that they can actually be either baked from a high resolution model or painted by hand. Like a bump map, a displacement map consists of grayscale values. Here is the real kicker though. While you can use an 8-bit displacement map, you will almost always experience better results by using a 16- or 32-bit displacement map. While 8-bit files may look good in 2D space, when brought into 3D they can sometimes cause banding or other artifacts as a result of the insufficient range in value.
Now, here’s the not so great thing about displacement maps. Creating all that additional geometry in real time is extremely difficult and hard on your system. Because of this, most 3D applications calculate final displacement results at render time. In comparison to bump or normal maps, a displacement map will also add significant time to your renders.
As a result of this additional geometry, it’s hard to beat the results of a displacement map. Since the surface is actually modified, the silhouette reflects the additional geometry. You should always weight the expense of a displacement map against the added benefit before deciding to use one.
Using These Maps Together
In some cases it may be possible for you to combine either a bump or normal map with a displacement map on the same asset. The best way to do this would be to utilize displacement for the big changes to the geometry and then the normal or bump for the fine detail.
Regardless of which map you choose to use, understanding how each map works and both it’s strengths as well as it’s weaknesses will only make your decision easier. Ultimately the map you go with should be the one that best fits the needs of the scenario you find yourself dealing with. If you’re interested in checking out training that deals with these three different types of maps, make sure and check out the texturing courses you’ll find for ZBrush, Mudbox and MARI.