September 23rd, 2009
We've already discussed ambient occlusion for terrain and for objects, but we haven't yet discussed how it applies to characters. Ambient occlusion (AO for short) is a measure of how much light would reach each point on the model if it were surrounded by a spherical light source. Here's a picture of the unlit rabbit model with no texture, with just AO, and with both AO and color:
This technique highlights exposed surfaces and darkens recessed surfaces without enforcing a specific light direction, so it's appropriate to use as a basis for the color map. It's pretty confusing to start drawing the color map with nothing but a blank unwrapped sheet -- it's a lot easier to tell what's what when it has some basic shading 'baked' in. Here's the initial unwrapped texture sheet, followed by the baked AO, and then the final color map.
Ambient occlusion maps are not entirely physically accurate, but they do a great job of approximating detailed shadow effects that aren't yet possible to simulate in real-time. These detailed shadows aren't just eye candy -- they're important to understanding the spatial relationships of the model. For example, below are three more pictures of the rabbit: with no AO, with AO, and with both AO and color. This time it has the final shader effect so you can see how it all fits together. The left-most image has detailed surface features, but without the shadows it looks somewhat 'floaty' and confusing. The AO shadowing in the middle image makes the model look much more solid and real to me. With the masses already defined, the final coloring on the right brings the model to life, turning the stone into fur, rope and metal.
This is not an uncommon technique in modern games, but I thought some of you might like to see an inside look at one of the steps in the character creation process. This is just one step of many, which Aubrey has started detailing in his "How I make Overgrowth assets" series (so far we have the idea, concept, base model, and sculpting). Are there any aspects of model creation and rendering that you would especially like us to discuss here?