Join Eric Keller for an in-depth discussion in this video Applying normal maps in Maya, part of Creating Textures and Shaders in Maya.
In this movie, I am going to show you how to hook up a normal map to a shader network applied to a surface in Maya. Now Maya's Transfer Map tool does a decent job of creating normal maps, but professionally speaking, I prefer to create my normal maps using a third-party program. I personally use ZBrush to sculpt the objects, create the texture maps, and generate the normal maps because I find it easier to use and the normal maps generated by ZBrush are superior to those that are created in Maya. Other artists will use programs such as Mudbox or xNormal or CrazyBump.
They are all good ways to create normal maps for your characters. So in this case, I've created a normal map and I'm going to apply it to the surface as a file texture. So let's start by taking a look at how we can preview the normal map in Maya. I am going to create a blinn texture for this character. So I am going to expand the old man in the outliner, make sure I have oldManShape selected, and I'll click on the Blinn material to assign a new blinn to the surface. In the Shading menu, I'm going to turn off Use default material so we can see the blinn shader on the surface correctly.
I've selected the surface and I am switching over to the blinn3 tab. In the Bump Mapping section of the blinn3 tab, I am going to click on the little checkerboard icon. This brings up the Create Render Node window. Under 2D Textures, I'll choose File, and this is going to pull up the bump2d attributes in the Attribute Editor. I need to make sure that Use As is set to Tangent Space Normals, so that it calculates a Tangent Space normal map correctly, and now I'll click on the icon to the right of Bump value.
The little arrow, this will switch me over to the File node. And to cook up the image, I'm going to click on the folder next to Image Name. Switch to the sourceimages directory of the current project. I am going to use the file called madHatter 1_NORMAL, and then the last thing I am going to do is set Filter Type to off. The filter adds a slight blur to the texture which sometimes can kind of destroy the detail in the normal map. Once I have that setup, I am going to go into the Perspective View and turn on the Texturing Bump button.
This is a little checkered sphere at the top of the Perspective View. Now, you can also press the 6 key on the keyboard. I am going to set the Renderer to High Quality Rendering, and now we can see the normal map, and all the details that I have sculpted into the surface of the skin. So I have got a lot of veins here and some pores and wrinkles and that kind of stuff. So now I want to hook this up to my skin shader network. So I am going to go Rendering Editors > Hypershade and I am going to middle-mouse button+drag the fast skin shader.
This is the misss_fast_skin_maya shader. I am going to rename this just skinShader. You can see under Bump Shader, I actually already have the normal map connected, but I will show you how to recreate the connection. So I am going to break the connection here just by right-clicking and go to Textures. I am going to pull down file4. Middle-mouse button+drag file4 down into the Work Area. I am going to Shift+Select both of these nodes here in the Work Area. Choose Graph Input And Output Connections.
So now we can see the graph of the shader is also normal map. I am going to expand the Work Area. Then what I need to do is select the skinShader, so I can see its attributes in the Attribute Editor and I will just middle-mouse button+drag the Bump node on top of the Bump channel here, and this will hook up the normal map. So now I will create a render, and I'll see how this looks. Oh! Yes, I need to apply the shader to the surface.
Still have the blinn shader attached to the surface of the old man, so I want to select the oldManShape, and then the Hypershade, right-click over skinShader and choose Assign Material To Selection and now that has been assigned. Now let's create a render and see how it looks. There we go. You can see some of the detail here in the lips, and some wrinkles on the skin, and some pore textures as well as on the some of the veins here, as well as the detail on the ears. So why would you choose to use a normal map over a bump map? One, they have their advantages and disadvantages. You could use a bump map to create the same kind of detail and the advantage of the bump map is that you can easily paint them in a program such as Photoshop, because it just uses dark and light values, and it's very easy to sort of figure out as you're painting the texture how light values will create little bumps like pimples, and that kind of stuff in the skin, and dark values can create things like pores and wrinkles and that kind of stuff.
But a normal map tends to be a little bit more accurate because a normal map actually uses a vector to change the normal on the surface in order to create the surface detail. So it uses a red, green, and blue value as opposed to a simple grayscale value. So for instance, if I select the normal map here in the Work Area of the Hypershade, right-click, and choose Test Texture. this will open up the normal map in the Render View and you can see what the normal map looks like. So you see how it is using color values.
Red, green, and blue color values to alter the surface. This is not something that you could easily paint by hand in Photoshop because it is very difficult to figure out how these red, green, and blue values are going to accurately deform the surface. But normal maps do tend to render faster, their bumps are little bit more accurate, and the reason that I use them is I tend to sculpt the detail directly in ZBrush on the surface of the object, because ZBrush can handle objects that are millions and millions of polygons much more than Maya can.
Then I just basically use their normal map conversion method to convert the sculpted high-frequency detail into a normal map that I can then use in my lower resolution object in Maya. It's kind of a personal preference thing. You might want to experiment using normal maps, and bump maps, and see which one you prefer, but that's the basic idea of how to hook up a normal map to a surface in Maya.
- Understanding shading concepts
- Simulating the Fresnel effect for realistic reflections
- Rendering transparent and translucent surfaces
- Comparing mental ray and Maya standard shaders
- Introducing the mia_material
- Developing shader networks
- Using subsurface scattering shaders
- Mapping polygon UV coordinates
- Incorporating texture nodes into networks
- Improving skin detail with ambient occlusion
- Painting bump maps
- Creating normal and displacement maps
- Troubleshooting maps