Normal bake not working properly

For three days I’ve been trying to bake a normal map of a character. It is not working. I’m following these instructions to the letter, but every time, I get horrible artifacts. At this time, all I’m trying to do is bake a sub-surfed version to the low-poly version. So, I;

-Have the low poly mesh, UV-unwrapped with an applied image.
-Make a duplicate, to which I apply 4 levels of multires.
-Select the high-poly one, then the low poly one, and perform a normal bake with the settings (Selected to Active, Dist:0, Bias:0, Tangent, Quad Split Auto)
-Blender thinks for a second and writes the texture as expected.
-The normal map is completely wrong!

So, I guessed maybe the problem was that either my model was too complex (it has several sections that run parallel to each other very close, in some cases overlapping) or just not airtight. I broke off a small piece of the model, closed it up, and tried again, but it’s still just as bad.

Low Poly: High Poly:


Result:

I attached a .blend of the high and low-poly versions. Am I doing something wrong? Is the shape of the object just too weird?

I’m running blender 2.49b on OSX 10.6.6. NVIDIA GeForce GT 330M, 2.4GHz i5.

On an unrelated note, I think the documentation on normal mapping should say that you must have GLSL enabled to see normal maps in the BGE and viewports. That really threw me off for a while.

Attachments

normal_test_plate.blend (1.01 MB)

First off check face normal, and object scaling needs to be 1. Both low and high poly object need to have “smoothing” turned on. Low poly needs to be below the high poly surface.

Normals are perfect… I’ve checked them at least 18 times (make that 19!). My scale was not 1, I just fixed that, but the results are exactly the same. By smoothing, do you mean that the object should be “set smooth,” rather than “set solid?” If so, both objects were already smoothed, but I clicked Set Smooth again for each of them to make sure. No change. The low poly surface was not under the high poly one, which contributed to the problem, but was not the cause. I expanded the high poly mesh so that it completely surrounded the low-poly one, and there’s still severe graphical corruption in the baked map.

I’ve resorted to breaking the mesh down into nearly flat, basic sections, baking little bits at a time, which produces good results when it does work. Of course, blender would have a few more problems to throw in my path, giving me the dreaded, ambiguous, “no image found to bake to” error. I really thought I had figured out how to fix it yesterday, but I guess not.

I’m not sure why you are making a normal map in this case but some things you need to do:

  • Ctrl+A to reset the scale
  • You have a face inside your mesh (use Select / Non Manifold in vertex mode to highlight it). Delete this in both meshes as this prevents the next step working correctly
  • Recalculate face normals (Ctrl+N)

OH!

I think I know what the problem was in the OP. Several parts of the mesh share the same UV coordinates, and that freaked out the renderer. I still haven’t figured out why I’m getting the NIFtBt, but I reverted to an older save file. I had to do some work over again, but it seems to be working now. I’m not sure what I did to make blender angry, but at least if I do it again I’ll be ready for it.

Something else that should be noted in the normals tutorial; baking normals doesn’t work on a mesh with a mirror modifier. Furthermore, if you perform normal baking on one of the mirrored halves, and then mirror everything later it will not have the right normals on the mirrored side. I think that the remedy is to select the red or green channel on the side with the backwards normals and value invert only that channel.

I’m making a normal map for a complex 3d character like so;