3DS Max - Complex Data Mapping Production Techniques
Posted March 28 0:44 AM by Kelly Murdock
The lecture, “3DS Max - Complex Data Mapping Production Techniques,” was presented by Vincent Brisebois. In this presentation, Vincent covered the creation and use of Normal, Height, and Parallax Maps to add details to game art assets. He also presented a method for using ambient occlusion maps.
Normal, Height and Parallax Maps
Normal maps first appeared a year ago in games like Quake 3 and Half-Life 2. They are also commonly used in film and many companies such as ILM and Lucas Arts are able to re-use art assets between their game and film productions. Normal maps require high and low-res versions of an art asset. A common method for adding high-res details to an object is to use the sculpting features of ZBrush.
Normal maps use the RGB channels to represent details in the XYZ directions with blue oriented to the normal z-axis. Height maps are used to capture the distance between two models using a grayscale map. Parallax mapping uses the normal and height maps together to displace objects.
To create a normal map in Max, move the high-res object to be on top of the low-res object, then select the low-res object. With the low-res object selected, pick all the objects that make up the high-res object. This places a cage around the objects that you can modify and sculpt.
In 3ds Max, the Projection modifier is used to transfer vertex information between objects. In addition to normal maps, it can also be used to transfer vertex colors and UV coordinates between similar objects. Once many maps are created and applied to an object, the Render to Texture dialog box in Max can be used to bake several maps together into a single map. The Projection modifier can be applied to an object using the Render to Texture dialog box or pre-applied if you want to remove the Projection modifier at a later time.
In the Render to Texture dialog box, select to output the normal and height maps. If you choose to output a diffuse map, then you can check to see if there were any problems. Rays that are cast to the low-res object will appear red in the diffuse map where a ray missed. This lets you correct the cage for any overlap and re-render the map. Normal maps can be applied as a bump map and the height map can be added into the alpha channel where it can be used for LOD. If you want to maintain the current material, you can have a shell material applied to the object. This maintains the original material while applying the new normal map.
Using a simple plane object, you can create a normal map of common details such as dents, scratches, bolts and rivets. The resulting normal map details can then be cut and pasted into an object normal map to create some details without having to model them. By building a library of normal map details, it becomes easy to detail objects.
The Options in the Render to Texture dialog box include a setting to turn the cage on or off. For box shaped objects, the cage can typically be turned off, but it is best for organic models to leave the cage on. Some game engines interpret red as going to right. This setting can also be controlled in the Options dialog box. Also, some game engine’s have trouble when the minimum height map value is set to a negative value.
Using the Direct X display option, you can enable the viewport to display the resulting normal map. This option also allows custom shaders to be loaded and viewed.
When using height maps, it is important to set the In and Out range values. These values determine where the distance is at a minimum, represented in black, and at a maximum, shown in white. Height maps can be generated by simply removing the blue channel from the normal map. This often gets a result that is close enough, or you can use Max to generate the height map for you.
Height maps can be used for parallax mapping, which uses the D3D shader. This can be selected from the Material Editor using the Direct X 9 shader option. When using this shader, Max builds the interface controls on the fly for all HSLI shaders. One useful Direct X shader is the Scene Effects shader, which can do edge detection or it can be used to color code the scene based on object density. There are also several 3rd party plug-ins that can combine several normal maps into one include MapZone. MapZone can also be used to generate maps in real-time using a quad map and a shader. Procedural shaders offer an alternative to using Photoshop and can be viewed in a viewport. MapZone can be found on the Max Underground.com site.
For some images, using HDR is a good option, but it isn’t supported in the Render to Texture dialog box. Radiosity in Max is very fast, but the solution setting only needs to be set to around 10%. The newest Need for Speed game uses HDR images.
Ambient Occlusion
Ambient occlusion can be converted to vertex colors and baked into a model. This makes the model light independent and is a method for faking global illumination. In the Render to Texture dialog box, the Ambient Occlusion option appears if the mental ray renderer is selected. To fix pixilated areas, apply a simple blur to the applied map. You can also change the HSV values to adjust the darkness of the shadows. You can create a flickering light effect by animating the opacity of the ambient occlusion map applied as vertex colors.