Vertex versus per-pixel lighting
The science of light is complex, to say the least. Due to hardware limitations, programmers have had to grossly oversimplify light calculations in order to calculate light in real time. Programming decent lighting in game has become possible only very recently due to hardware technology advances. There are several ways lighting can be handled in games, but, if it is calculated in real time, it is probably either vertex lighting or per-pixel lighting. Vertex lighting (generally called Guard shading) uses a broad brush to determine the lighting of a surface, whereas per-pixel lighting uses a very fine brush to do so.
What is a normal map?
A normal map is an RGB texture, and the various color channels of the texture (red, green, and blue) store the X, Y, and Z values of the normal vectors from a high-resolution model. What a normal map generally looks like.
Creating normal maps using a 3D program
The process for creating normal maps using a 3D application starts with the two models: (1) a high-polygon model (the sky’s the limit on detail) and (2) a low-polygon model (needs to run in the game engine you are creating it for). It doesn’t matter which one you create first, but there are some pros and cons to both approaches. After the two models are created, the process generally involves arranging the two models so that they are on top of each other and generate the normal map correctly.
Assets for the futuristic interior
The assets for the futuristic interior involve mostly the creation of textures for the shaders. The models themselves are purposely very simple for this exercise so that you can clearly see the power of the normal maps and other shaders when applied to even the simplest geometry.
The illumination map is made by creating a new layer filled with black and Ctrl-clicking on the layers with the light colors on them and simply using Ctrl + I to invert the black to white on the new illumination layer. In this case, the only lights present are the two fluorescent-type tubes on the bottom of the panel. You can see the difference between the texture with and without the illumination map present.
The normal map starts out as a grayscale image, and I do several iterations with the NVIDIA normal mapping filter in Photoshop until I get the desired result. There are a few things to keep in mind when creating normal maps in this fashion.
Wall panel variations
By creating a copy of the file that we just created, you can make variations of the wall panel—without lights, half sized, or with different panel designs. By using the existing file, you can keep the texture visually consistent.
This was constructed in the same manner as the other panels but with added detail, that is, more panels and lights. Since there is so much detail in the normal map, I found that, as I worked, some parts looked good, whereas others needed more work. I wanted to continue to make some parts more prominent, so I simply saved a copy of the normal map at that stage and kept working. Later, I combined the versions of each normal map and kept the parts I liked best to create the final normal map.
In this case, I wanted to make the panels more prominent, but that made the hose connectors too puffy, so I put the final normal map on top of the version with the good hose connectors and erased the connectors from the top layer. Remember to merge and renormalize. This is as complex as the geometry gets for the walls and floors at present.