Creating normal maps from a high resolution model is a common task in a game developers work flow. It can add an extra level of detail that otherwise would be impossible within a game environment. Today I will be showing you how to create normal maps in Blender 2.5. The process used to do this is called “baking”, it enables us to project all of the detail from a high resolution model onto a low resolution, or lowpoly game model to create the normal map. This is a relatively painless process that can be done quite quickly once you have the know-how. Let us begin!
Note: Normal map baking requires a recent version of Blender 2.5, which can be downloaded from http://graphicall.org for all operating systems. Baking is broken in the official Blender 2.5 alpha 2 release.
Part 1 – Preparing the models
The first step to creating normal maps, is to prepare the models. This primarily involves UV unwrapping the lowpoly model. Before doing that, though, let’s take a look at the models we will be using today in figure 01-02:

Figure 1

As you can see, we have a highpoly model of a statue, with a large amount of detail, much more than could feasible be used in a game. Then we have a lowpoly version of the same model. To bake the normal map, we must first unwrap the UVs for the lowpoly (the highpoly has no need for UVs and may be left as is) then we need to assign a blank image to those UVs that will become the normal map.
To unwrap the lowpoly: enter Edit Mode by pressing TAB while the lowpoly model is selected
2. Select the vertices shown in figure 3 then press CONTROL + E > Mark Seam
3. Repeat this step for the vertices in figure 4, ensuring the selection starts at the previous seam and continues all the way down to the bottom of the model.

Figure 3

Figure 4
You should now have all of the necessary seams placed to cleanly unwrap the model:
Select all of the vertices that make up the model by pressing A (you may need to press it twice if you previously had anything selected) then press U > Unwrap
2. This will unwrap the UVs of the model, to see them switch your viewport window time to the UV/Image Editor as displayed in figure 6

Figure 5

Figure 6

Figure 7
You now need to add a new image to the UVs simply by pressing the “New” button. If you need to adjust the size of the newly created image immediately press F6 and modify as needed.
Part 2 – Baking the normal map
Let us now bake out the normal map by switching back to the 3D View and then going to the Render Properties:
First select the highpoly model with RMB then select the lowpoly model with SHIFT + RMB
2. Toggle down the “Bake” options under the Render Properties
3. Change from “Full Render” to “Normals”
4. Switch from “Camera” space to “Tangent” space
5. Ensure “Selected to Active is checked
6. Press “Bake”
Upon completion of the bake, you should see the normal map displayed in the UV/Image Editor.

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12
That is all it takes to bake normal maps! It is really quite simple, Blender does most of the work for us. However, in order to really see the fruits of our labor we are going to take it a step further so we may view normal map in real time.
Part 3 – Viewing the normal map in real time
The way we are going to do this is by adding a material to the lowpoly model that will contain the normal map and tell Blender how to use it:
Begin by adding a new material to the lowpoly model, name it if you wish
2.Switch to the Texture panel and add a new Image texture
3. Select the normal map from the buffer as the image source
4. Check the “Normal Map” box and change the space type to “Tangent” from the default “Camera”
5. Change the Image Mapping type to UV
6. Uncheck the “Color” box under the “Diffuse category of Influence
7. And finally check the “Normal” box under the “Geometry” category of Influence

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18
Now we are almost ready to see the normal map in action. All that is necessary now is to change the viewport rendering method over to GLSL for real time shading.
Press N while hovering your mouse over the Viewport to bring up the Viewport Properties
2. Scroll down to the “Display” category and change the “Shading” method to “GLSL”
3. Select the highpoly model and press H to hide it, allowing us to see the lowpoly model properly
4. Press ALT + Z to turn on GLSL shading

Figure 19

Figure 20
You should immediately see a result. If everything is correct, you should see the normal map applied to your lowpoly model in real time. Be sure that you have at least one light in your scene or you will not see anything. Speaking of which, if you move the light around in your scene you will see the lighting change on your model. The normal map is being displayed in the viewport just as if it were in a game.
That is it! You have now baked a normal map in Blender 2.5. Once you have become accustom to the process, it can be done in under five minutes. This is a very useful feature and works remarkably well. If you find your normal map are receiving artifacts then it may be necessary to tweak some of the settings under the Bake panel. I will not get into that today. For the time being, enjoy and happy baking!

Figure 21

Figure 22

Figure 23
Support the site – Download includes:
- PDF Version of this Tutorial
- .blend file at the state of the tutorial












Hi Jonathan, Thanks once again for this great tutorial. It is kind of hard to follow the steps (bit confusing due to too figure) after baking the model. I know i am asking alot from you, but can we request a same as a video tutorial, which is way much easier to understand
The citizen download contains a docx file (two copies actually) not a pdf – I have had no luck converting it to anything that includes the pictures.
Hi, thanks
Please check.
Text on left side is not fit in the browser window.few letters from a word not visible througout the tutorial.
I coppied complete web tutorial and paste it at my word document I can read the text in its entirety.I don’t know if it is my browser problem or it is on your side.
Man – looks like this one is a mess… Let me rehook-up the download and check to make sure not a div tag isn’t causing trouble.
Okay – download updated to contain PDF and .blend. If you have a screen shot of what you are seeing with the text drop it over to wes@cgcookie.com and I will work to trouble shoot. I wasn’t able to repro the text on IE8, FF, or Chrome… but doesn’t meant it isn’t just hiding from me.
looks fine on my end
i’m using firefox 3.6.6
Hi,Wes,
I sent you an e-mail containing image, I captured from my browser. This is what I see.
Thanks a lot!! i´ve been waiting for this kind of tutorials for a long time, hope there is to be some more explaining the other maps, but this is great! thank you very much. Baking, Maps, and all those things are my weaker point in blender.
Aha! So it’s broken in the official release! No wonder I couldn’t get it working. Thanks a heap.
Cool, good information man. Yeah a Video tutorial would be much easier to follow and understand. I know, it takes a lot of work.
Good Job.
the “bake” button has always frightened me and tutorials explaining the whats, whys, and hows are seemingly scant. i’m happy you have this topic in your tut library now.
Thanks for this simple, but helpful tutorial on normal maps! I and I’m sure tons of other people were having quite a bit of trouble understanding this subject. Thank you
Yes we did, hope there`s more to come on these subject.
We are working to produce a video tutorial of this hopefully next week.
Hope you get down to others texturing skills like specular maps, ambient oclussion, and other things that actually have no good tutoring around the net.
Thank you Blender Cookie and Jonathan.
when I bake my own mesh. I only get solid purple.
If you are baking from one mesh to another be sure you have both meshes selected, with the lowpoly mesh being the primary selection. If only the lowpoly is selected you will get a solid purple bake as Blender is unable to retrieve any normal data.
-Jonathan
thank you. Now I kinda feel like an idiot.
Really nice tutorial Jonathan.
On a side-note, where can I request tutorials? I have searched for some sort of contact page for (feels like) an eternity now.
If I can make requests here I would like to see a tutorial/quick-tip on how to make a wireframe render in Blender 2.5
Thanks a bunch
Great Tutorial!
I did run into a problem though. The normal map doesn’t line up properly along the seams that I made to when UV unwrapping.
please, do a video wich this tutorial, i don’t want do it here
(and the tutorial of monkey dosent abord normalmaps…)
correct –> “i COLDN’T do it here” (sorry my english!)
Thanks! I’ve had all kinds of troubles with normal baking in 2.5, now i can finally drop down to my low poly base models again in my scenes
Some of them were getting far too complex lol…
You missed one step:
Turn on “Normal map” in “Image sampling” submenu, otherwise GLSL won’t display the normal map.
Can someone explain what do the “Image sampling” items do and why are they needed? why can’t Normal maps be displayed by default when you check “Normal map” in the “Influence” submenu?
No need to feel like an idiot, it’s an easy thing to miss
-Jonathan