Normal maps are widely used in games to make low poly models look high poly. In this tutorial you will learn how to create a high res Skull model, generate a normal map from that model and learn how to apply this to its low poly version.
Techniques covered in this tutorial include multires sculpting, baking a normal map, baking ambient occlusion and applying the maps to a low poly model.
This tutorial uses the free and open source Blender suite. If you're new to 3D, following this tutorial in Blender is an excellent way for beginners to get started. (Don't worry - this tutorial has plenty of techniques for more advanced users too!)
We first start with loading a background reference image. I have made sketch of a skull in front and side profile. You can also download this reference for a good 3D study of a skull model.
Go to View > Background image and load the image.
Select the default cube by right-clicking. Hit F9 to go the editing options. Here, in the multires panel click on the button 'Add Multires'. Click the 'Add level' button 3 times. We see that the cube's shape has been changed to a sphere.
Place the cube matching the reference image.
We now begin sculpting. Select 'Sculpt Mode' from the Mode menu. Blender has good high res sculpting tools and features. Select the Sculpt panel in the Button window. You can also access the sculpt tool by pressing 'N' anywhere in the 3D view. The shortcut for the most commonly used tools in Blender are 'D' for draw, 'G' for Grab, 'S' for smooth, and 'F' for size. You can also adjust the tool brush settings according to your needs.
Use the 'Grab' tool to pull out the basic shape of our object, matching the subject. Press 'G' and then click drag on the object.
Don't forget the front view. Match the shape with the reference.
After the desired shape has been achieved, add 2 more multires levels. We'll mostly be using the 'Draw tool' ('D' shortcut) in this section. Press Shift to subtract form. This is easier with a pressure sensitive graphics tablet, but can be completed with only a mouse. First, dig out the eye socket.
Sculpt in and out to form the other basic parts of the skull.
Add levels in the multires panel to sculpt in more details.
Again, don't forget the front view.
Switch between the GRAB and DRAW tools as necessary.
We now see the bottom and clear the jaw line. Check the overall form before we begin with the teeth.
Draw the teeth and other remaining details.
We will now make a low poly version from the high res model. Go to object mode. Right-click on the skull and press Shift+D to duplicate it. Select either one.
In the multires panel, reduce the level to 4 and press the 'Apply Multires' button. We now have a low poly base.
We will now UV Unwrap the model. Select the low base model and press TAB to enter the Mesh edit mode.
Select the middle loop of vertices. On the front side deselect the vertices as shown in the image.
Press Ctrl+E and click on 'Mark Seam'.
Split the 3D view screen into 2 parts - one for 3D view and other for UV editing.
While in the mesh edit mode, Press 'A' to select all vertices. Press 'U' and select 'Unwrap'.
You will get UV layout that you can edit in the UV Editor. Rotate/Scale accordingly.
Create a new texture image. Click on Image >New.
Type in the dimensions of the image you want, and press OK.
Next we'll create our Normal Map. Right-click to select the high res model first and then Shift + Right-click the base model. Press ALT-G to clear location. What actually happens here is that both our models are in the same location in the 3D space, overlapping each other.
In the Button window, press F10 to bring out the Render options. Click on the 'Bake' panel. Select 'Normals' and 'Tangent' from the menu. Click 'Selected to Active'. Click 'BAKE'.
Voila! We have our normal map!
All the high-res sculpture details are baked (according the the UV layout) on the image we created for the Low poly Base model.
Save the Image. Don't forget to save the .blend file on each milestone, also.
Before we bake the AO map we will use the following Ambient Occlusion settings.
Hit F8 to go to the World Settings. Select 'Ambient Occlusion'. Select 'Approximate' method. Turn on 'Pixel Cache' and enter value '1' for 'Correction'.
Again, Select the high res model first, then the low res model. Press ALT+G to clear location. (Ignore this step if you have not moved the models). Now press F10. In the Bake panel, select Ambient Occlusion this time. Hit BAKE.
Your AO map is now ready. Save the image with a new name.
No we will apply our maps to the base model. First, move the High Res model to another layer, as we don't need it any more. Select the high poly model and press 'M'. Click on the layer block to move.
Select the layer in which we have our base model. Select the Model and F5 to open the Materials panel in the Buttons window. Next we'll apply the AO map. In the 'Texture' panel, select Tex1. Press UV in the 'Map input' panel. In the 'Map to' panel press 'Col'.
Press F6 to open the Texture Panel in the Buttons window. Select texture type > Image.
Load the AO map in the image panel.
Now we will apply our Normal Map. Add New Texture in the Texture panel (press F5 to bring material buttons).
Press 'UV' in the Map input panel. For normal maps we press 'Nor' in the 'Map to' panel. Move the slider value of 'Nor' way up.
Press F6 to open the Texture panel and select 'Image' as the texture type. Press 'Normal Map' in the Map image panel. Load your normal map in the Image panel.
Now we will preview our models with maps applied in the 3D view. But first we will add a few lamps. Press SPACE anywhere in the 3D view to bring up the menu. Select 'Add LAMP'. Add 3-4 lamps and place them around the model.
Now to preview the model, go to the 'Game' menu. Turn on Blender GLSL Materials.
Change 'Draw Type' to 'Textured'.
And we now have our model with maps applied!
Play with the AO map in your favorite image editing software and see the results. Press the 'Reload' button in the image panel of the Texture section (F6) to refresh the Map. The model is now ready to export.
Envato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!Translate this post