Normal map baking in Blender is very simple and straightforward but there are numerous pitfalls that are not apparent to the user that can make things broken.
No objects or images found to bake to
Generally speaking, if either of the high-poly object or the low-poly object you are baking to are set as not renderable, Blender can’t find it and thus, can’t bake anything. To make objects not renderable, there are many ways to do so:
- Set it as invisible from the Outliner
- Have either objects in a layer that isn’t set to be rendered. In the Render tab, there’s a section named “Layers”. That determines which layers will be rendered.
It doesn’t make sense to me at all that normal map baking has to depend on these things as if we’re rendering to a movie file.
The other possible reason is if the low-poly object doesn’t have an image assigned to it. From my experience you can just create a new image from Blender, assign it to the low-poly’s UVs, and you don’t even need to save it yet. That is enough to make normal map baking to work.
Take care when baking into objects that have overlapping UVs. If you have a head whose UVs’ left side is mirrored to its right side, this can cause the baking to overlap as well.
Here, the objects have multiple copies, thus, it made sense for me to simply make them use the same UV space. I was baking the high-poly object you see in the bottommost copy of that object.
However, the normal map baking produced those lines you can see in the left side of the screenshot. Again, this is because the UVs are overlapping.
What I did, was to temporarily set aside the UVs of all the other copies of the object:
Then bake again. This will produce a clean result like the screenshot below. Then simply move the UVs back to their original positions.
Flipped Normal Maps
Things looked fine until I saw my object up close:
The left side of my character’s armor seems to be flipped from the right side. This is because in the normal map (shown in the right side), the UVs were split in half. And then the right half was rotated upside down (because I was saving space).
Here is how it looks like in Blender:
However, when you preview the normal map from Blender, it looks fine.
In the end, I was forced to remap the UV layout so there’d be as few seams as possible.
This resulted in having to reduce the size of my UVs to fit in the image, but so far, that’s the only way I see to fix it.