Normal maps are becoming more common in games because they offer a way to increase the bump details of a model by mapping high-detail bump information onto a low-resolution model. Normal maps are created using the Render to Texture interface and applied to an object using the Normal Bump map type found in the Material Editor.
The Normal Bump map type is typically applied as a bump map in the Maps rollout and includes a separate button, shown in Figure 25.7, to apply an additional bump map.
Caution | Normal maps can be displayed in the viewports only if the DirectX display driver is selected. |
The Projection modifier is used to create a normal map. It works by being applied to a low-resolution object and then picking a high-resolution object that is similar to the low-resolution one. The Projection modifier surrounds the object with a cage that can be manipulated to include all the object details.
Within the Modifier Stack, the Projection modifier includes three subobject modes: Cage, Face, and Element. The Geometry Selection rollout includes a list of objects, a Pick button, and a Pick List for selecting the high-resolution object to be used.
Figure 25.7: Although normal maps are created using the Render to Texture dialog box, they are applied using the Material Editor
The Cage rollout includes settings for displaying and pushing the cage out from the surface of the object. A Tolerance setting is used for wrapping the cage about the surface. The Selection Check rollout informs you if the Material IDs or Geometry faces are overlapping.
With a Projection modifier applied to a selected object, the Projection Mapping option can be enabled in the Objects to Bake rollout of the Render to Texture dialog box. The object can actually include several Projection modifiers, so a drop-down list lets you select the one to use or you can use the Pick button to select a target object in the viewports.
The Options button opens the Projection Options dialog box, shown in Figure 25.8. Using this dialog box, you can set the projection method, determine how to resolve hits, and define the Map Space.
At the top of the Projection Options dialog box is the Source object. The Synch All button causes each object to use its active source for the projection. The two projection methods are Raytrace, which traces each normal line from its source to its target, and UV Match, which works by matching the UV coordinates between the source and the target objects.
For transparent objects, two projection rays may hit the same point. The Resolve Hit options let you set which one is selected, either the Closest or the Furthest. Most projections use the Tangent Map Space, but you can select to use the World, Screen, or Local Map Spaces also.
Figure 25.8: The Projection Options dialog box lets you specify how the projection values are determined
For this example, I've created two sphere objects, extruded the vertices on one of them, and called it Spikey ball. The other is a plain GeoSphere. The spikey ball sphere weighs in at 1280 polygons, while the normal GeoSphere is only 320 polygons. Although the spikey ball includes many more polygons, many of these details can be reclaimed using a normal map.
To create a normal map for the spikey ball model, follow these steps:
Open the Spikey ball.max file from the Chap 25 directory on the DVD.
Select and move the spikey ball object over the top of the tube object in the Top viewport.
Select the normal GeoSphere object, and select the Rendering Render to Texture menu command (or press the 0 key) to open the Render to Texture dialog box. In the General Settings rollout, select the Scanline renderer, no advanced lighting option as the Render Settings. In the Select Preset Categories dialog box that appears, click the Load button.
In the Objects to Bake rollout, click the Pick button, select the spikey ball object in the Select Targets dialog box that appears, and click the Add button. Then enable Projection Mapping.
In the Output rollout, click on the Add button and select the Normals map. From the Target Map Slot drop-down list, select the Bump option. Click the 512 button to set the map size, and enable the Output into Normal Bump option.
Click the Render button at the bottom of the Render to Texture dialog box.
Drag the normal Geosphere away from the spikey ball object and render the Perspective viewport.
Figure 25.9 shows the resulting normal map rendered on the GeoSphere.
Figure 25.9: The normal map for the spikey ball can be applied as a bump map to reclaim the high-res details