With DirectX shading, you can view the effect of normal bump mapping in viewports.
Set up the lesson:
- Continue from the previous lesson, or from the \materials_and_mapping\normal_bump_map folder, open pavers_view.max.
Preview the normals bump map:
- Select the plane object. Right-click it, and choose Isolate Selection from the quad menu.
Next, you will hide the plane’s selection cage, which was generated by the Projection modifier you added earlier.
- On the Modify panel, open the Modifier List and apply a Poly Select modifier. This adds the modifier to the top of the plane’s modifier
stack and hides the selection cage.
- Open the Slate Material Editor.
- Click (Pick Material From Object), and click the plane object to display its material in the active View.
- Double-click the Proj-Plane_mtl [Proj-Plane] / Shell material node (the one at the right) to display the Shell material parameters.
As the rollout shows, the Shell material contains two types of material: the originally assigned plane material, which displays
only when rendered, and the baked material obtained from the source object, which displays only in viewports.
- On the Slate Material Editor, click (Zoom Extents) to see the whole material tree.
TipYou might want to change the size of the Slate Material Editor window, and use some of the other navigation tools, to get
a view you can read easily.
At the right is the top-level node, the Shell material you just inspected. Next to the left are the two sub-materials: The
original, renderable material is above, and the baked, hardware material is below. The baked material has a Bitmap node and
a Normal Bump map node (each of these has an associated Controller node). Finally, the Normal Bump node uses the NormalsMap
bitmap you rendered in the previous lesson.
- Double-click the Bitmap node for the Normal Bump map. This is the node at the far left.
- In the Bitmap parameters rollout Cropping/Placement group, click View Image.
3ds Max displays the normal bump map you created earlier, which now is applied to the plane object.
The colors in the map are significant. The reason normal bump maps convey so much more detail than ordinary bump maps is that
normal bump maps use the entire RGB spectrum for surface detail information, whereas ordinary bump maps only use a single
grayscale. The blue channel conveys vertical depth information, and the red and green channels enhance this information by
providing a direction vector for the orientation of the surface normal at each point. This results in higher realism.
- Close the Rendered Frame Window.
Use hardware shading to display the map:
- In the Slate Material Editor, double-click the baked_Proj-Plane_mtl / Standard material node to display its parameters.
- On the Slate Material Editor toolbar, open the Show Standard/Hardware Map In Viewport flyout, and choose Show Hardware Map
In Viewport.
NoteIf the tooltip for this option reads "Show Realistic Material In Viewport" instead of "Show Hardware Map In Viewport," you
are using the Nitrous viewport driver and viewports will not show the 3D effect. The 3D effect requires your viewports to
use Direct3D shading. Use Customize
Preferences
Viewports to change the active driver.
- On the Parameter Editor panel, open the Maps rollout, and increase the Bump amount to 90.
- Minimize the Slate Material Editor.
- In the Perspective viewport, zoom in to get a closer view of the plane.
The flat surface of the plane object takes on a greater, three-dimensional degree of detail.
Next, you will add a standard Omni light to the scene to see how effectively the normal bump map, when combined with a standard
Omni light, provides a sense of depth to the object.
Visualize the 3D effect
- On the Create panel, turn on (Lights). Choose Standard from the drop-down list, then click Omni to turn it on.
- In the viewport, click anywhere above the plane object to place the light.
- Move the light across the stones.
You might need to move the light vertically as well, to position it above the plane.
Even though this object is a flat plane, notice how the light and shadow play across the stones as if the geometry was a raised
surface.
Try rendering with both renderers:
- Delete the light object.
- Restore the Slate Material Editor (press M), and move the window so you can see all of it, again.
- Double-click the Proj-Plane_mtl [Proj-Plane] / Shell material node (the one at the right) to display the Shell material parameters.
- On the Shell Material Parameters rollout, set the Baked Material to be visible in the rendered output.
- Minimize the Slate Material Editor.
- In the Perspective viewport, orbit so the plane is almost horizontal, then press F9 to render the plane.
Notice how the edges of the plane still appear straight and two-dimensional.
The 3D relief you’ve achieved so far with the diffuse and normals bump maps is usually acceptable when you model for games
development. For other uses, such as cinematics, you might need to take things one step farther.
To complete the effect, you will use the height map you created earlier and render it with the mental ray renderer.
- Click (Render Setup) to open the Render Setup dialog. On the Common tab, scroll down to the Assign Renderer rollout, then click
(Choose Renderer) for the Production renderer.
- In the Choose Renderer dialog, choose “mental ray Renderer,” then click OK.
- Render the plane again.
- In the rendered frame window, click (Clone Rendered Frame Window), then minimize the two frames.
Render the height map
Now you will add the Height map to the rendering.
- Select the plane object.
- Press M to restore the Slate Material Editor.
- Double-click the baked_Proj-Plane_mtl / Standard material node to display its parameters.
- In the mental ray Connection rollout Extended Shaders group, click the lock button for Displacement to unlock Displacement and enable its controls.
- From the Material/Map Browser panel at the left of the Slate Material Editor, locate Maps mental ray Height Map Displacement, and drag this map type to the Active View.
- In the active View, zoom so you have a good view of both the baked_Proj-Plane_mtl / Standard material node and the new Height Map Displacement node.
- On the baked_Proj-Plane_mtl / Standard material node, click the plus-sign icon (+) to open the “mr Connection” group, and then wire the Height Map Displacement
node to the “mr Connection: Displacement” component of the baked material.
- On the Material/Map Browser panel, locate Maps Standard Bitmap, and drag this map type to the active View.
3ds Max opens a file dialog.
On the file dialog, choose proj-planeheightmap.tga.
Like the Diffuse and Normal Bump maps, this file should be located in \sceneassets\images, or in the folder you specified earlier on the Render To Texture General Settings rollout.
- Wire the new Bitmap node to the Height Map component of the Height Map Displacement node.
- Double-click the Height Map Displacement node to display its parameters, and on the Height Map Displacement rollout, set Minimum
Height to 0.0.
TipAn easy way to do this is to right-click the spinner arrows.
- Render the Perspective viewport.
- Restore the view of the rendered frame you cloned earlier, and compare the renderings.
The geometry has been pushed up based on the displacement map generated by the mental ray engine and added to the rendering.
Summary
This tutorial showed you how to project complex surface detail from a source object onto a simple, two-dimensional plane.
Detail is derived from the source by including normal bump, diffuse, and height maps in the projection, then rendering them
as a texture to the simple plane.