Projection Mapping Techniques : Jeff Severson
One of the most challenging aspects of making a believable game environment is creating models and textures
that look realistic. By utilizing projection mapping an artist can pack more detail into a mesh or texture using
Zbrush or Mudbox. The process of projection mapping involves modeling an object with thousands (sometimes
millions) of triangles and transferring that detail onto a low polygon object, which is then placed into a game
environment. This process generally involves the use of various software packages. In my research I used
ZBrush, Xnormal, Photoshop and 3D Studio Max.
Nvidia offers a free Photoshop plugin that allows an artist to make a great looking normal map from a diffuse
texture. There’s also a program called CrazyBump which is like the Nvidia plugin with more features.
However, neither program allows the creative freedom that ZBrush or MudBox offers.
With the new Decimator plugin for Zbrush an artist can reduce an object of millions of triangles down to
thousands of triangles for use in Xnormal or 3D Studio Max for projection mapping purposes. I’ve found that
Xnormal is faster than 3D Studio Max when it comes to projection mapping.
The following examples illustrate my workflow when it comes to creating believable models and textures for
NextGen game environments.
SHADER CONCEPTS: CHANNEL PACKING
In my experience not every object in a level requires all three texture maps. In fact, the specular map is sometimes hard to see on
objects that have a dull surface. Regardless of how dull the surface is if the specular map isn’t there then the surface looks flat.
At Atomic Games, we Channel Packed our textures. It was usually cheaper to put the specular map in the alpha channel of the normal
map, because it meant one less draw call for our game engine. Another thing we did was take either the R, G, or the B channel of the
diffuse map and use it as a specular map. Typically, a modifier can be used in the shader to control how shiny the surface is. This
works well for matte surfaces and it’s very cheap, because you essentially eliminate one texture from the budget and you don’t have to
put the spec map into the alpha of the normal map.
The screenshots below are from the Unreal Editor to show how a shader network can be setup to take advantage of channel packing.
When I make textures I like to model the high resolution geometry first, then bake the AO and normal map which will be used in the
final texture. The AO map gets used as an overlay in Photoshop. The AO map supports the normal map and vice versa. I prefer to
model the high res geometry because it allows for more flexibility when making textures. It’s cleaner than putting together a bunch of
photographs and you can put the detail exactly where you want it.
This image shows the high poly version of the air duct (top) and the low poly version with all the projected details (bottom).
Here’s a simplified example of how a typical texture is layered.
AO + DIFFUSE MAP