His dark materials
When looking at 3D graphics applications, attention is usually focused on their modelling capabilities, but surface appearance is equally important in creating realistic results. No matter how good the models are, poor materials handling will produce an amateurish appearance. This area is often overlooked, which is a pity, since it can frequently be radically improved as we will see.
Materials are largely taken for granted, because most 3D applications use them in a similar way. Rendering a 3D scene involves calculating the way its objects interact with the available lighting, and this is almost always handled through materials – generally referred to as shaders – controlled by numerous interacting parameters. To produce a shader for a realistic orange in 3ds max, for example, you first specify the colour orange for its main Diffuse parameter, which is by default automatically copied to the Ambient setting that governs the scene’s indirect lighting. Then, using the Specular Highlight, Specular Colour and Glossiness parameters, you specify the shininess of the orange – the size, focus and colour of the highlights seen when it is illuminated directly.
However, a real orange is not a perfectly smooth, shiny, uniformly coloured sphere, and more realism can be added by mapping a full-colour bitmap image (called a Texture Map) rather than a single, flat colour, onto its surface. A scanned-in photo of some real orange peel applied as a texture map to the Diffuse setting in the Maps roll-out in 3ds max’s Material editor (or the equivalent in any other 3D application) immediately brings the orange to life. Better still, this same texture map can be dragged onto the Bump map setting, where its brightness levels are applied to simulate surface relief, producing the characteristically pitted appearance of real orange peel.
Whatever application you use, combining lighting-based shader parameters and texture maps is the stock-in-trade of the 3D artist. All you need is a JPEG, BMP or TIFF of the real object, which you can tweak or even radically alter using any standard bitmap editor. Memory requirements can escalate quickly with high-resolution texture maps, but rendering them is straightforward and can in many cases be speeded up further by using widely available low-resolution seamless texture tiles. Using texture maps to simulate 3D materials is simple, flexible, fast and all-encompassing, so what is the problem?
While texture maps will always be central to 3D work, they are certainly not perfect. Bitmaps have a fixed resolution, so if you zoom in on a mapped object its quality deteriorates and eventually collapses. Also, any photo used as a texture map must, by its nature, be pre-lit, which can result in false lighting cues – say, the bumps in your orange peel were originally lit from the left but you want them lit from the right – which destroy the illusion of reality. And while photos are great for depicting exterior surfaces, they are much less successful for volumetric effects like fire and smoke, especially when these vary over time in an animation.
Even as straightforward surface materials, texture maps are fundamentally limited. Bitmaps describe 2D planes and applying them to a 3D model means wrapping them around it, but such wrapping can never be perfect. For common solids like our spherical orange or cubes and cylinders, most 3D applications will provide built-in projections to make the wrapping work as well as possible. For more complex shapes, advanced UV Mapping breaks the texture map down into discrete picture elements and attaches these to the underlying polygonal mesh, trying to keep distortion and visible seams to a minimum. It is never ideal, and for some complex textures the whole mapping approach just breaks down – a wood-grained texture map works perfectly for a flat, cross-sectional table top, but it will never look right when wrapped around a bowl because here the surface needs to reflect the fact that the wood’s ring pattern is truly three-dimensional.