[edit] Added Ben Cloward’s tut, removed bad Melody link.
This is a compilation of info I’ve posted in various threads, here CGTalk and elsewhere on the net. Some may not be up-to-date, but at least it will all be in one spot.
I’m not an authority on this, others know more than I. I’ve done some research, used some of the tools in a production setting, and have beta-tested some tools. Perhaps others can chime in with their tips too.
One other thing… I would prefer to avoid a series of “thanks” replies in this thread. If you could, please refrain from posting unless you have a tip or link to add. Should keep this informative.
On with the show…
==================================================FREE TOOLS
Nvidia has a Photoshop filter plugin to convert a grayscale bitmap to a normal map. Works OK, but geometry gives much better results, which it doesn’t handle. The plugin has a helpful previewer, and many options. The normal map converter is also bundled in with their DDS exporter, if you wish to go that route.
http://developer.nvidia.com/object/ps_normalmapfilter.html
ATI also has a 2D bump map generator, to convert images into normal maps, similar to the Nvidia tool.
http://www.ati.com/developer/sdk/radeonSDK/html/Tools/ToolsPlugIns.html
ATIs normal mapper generates normal maps from geometry and bump maps, works OK, is free, and is also open source. Comes with a handy previewer too. Lots of options. Comes with max3, max4, and max5 exporters to get your geometry into the tool. Now has a GUI too.
http://www.ati.com/developer/tools.html
Mike Bunnells modification of ATIs tool that uses OBJ files instead of ATIs NMF format. Optionally creates a sub-division surface for you. Creates displacement maps. Supports 16-bit TIFF. Etc.
http://subd.4t.com/normalmapper/
ORB is another normal map generator, converts 3D models into normal maps. Also generates displacement maps, diffuse maps, vertex-color maps. Imports ASE/OBJ/LWO formats. Previewer included.
http://www.soclab.bth.se/practices/orb.html
Discreet’s utility plugin Normal Render works OK, but requires a similar UV layout between the low-res and high-res objects. This can be quite limiting. Not many options in the tool. Works with max4 and max5. Free registration is required to download the file.
http://sparks.discreet.com/downloads/downloadshome.cfm?f=2&wf_id=83
Ben Lipmans gNormal plugin goes in the bump channel of a material, allowing you to use your normal map in the 3ds max renderer.
http://www.maxplugins.de/max5.php?search=gnormal
Ben Lipman mentioned on the Discreet forum that John Burnett’s NormalTexture plugin can be used with max5s Render To Texture to make normal maps. Not sure how this works, havent tried it.
http://www.footools.com/plugins/Documentation/NormalTexture_README.html
Texporter can create a normal map from high-res geometry, as long as the UVs are there. Although I should point out it is a world-space normal map, thus you shouldnt rotate or deform the final model that has the normal map on it, because the shading will be horrible. World space normals are best for static objects in your game.
http://www.cuneytozdas.com/software/#Texporter
Nvidia has a tool they’re about to release called Melody. It can create the low-res model automatically (seems pretty good, as far as auto-LOD is concerned, but of course never as good as manual) and they wrap the whole thing in a GUI.
Some opinions here:
http://dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/002595.html
Peter Watjes Object Texture plugin generates a normal map from geometry and places it in a material, so you can render it with the max renderer. However, the map is tied to actual geometry in the scene, or cached in the material, but it cannot be exported into a bitmap. I just thought Id provide a link anyhow, since it comes with full source code.
http://www.max3dstuff.com/max4/matObjectTexture/help.html
==================================================COMMERCIAL TOOLS
Polybump generates normal maps from geometry, optionally including height-map bump maps. Includes 3ds max and Maya plugins. Includes code for integrating the effect into your real-time 3D engine. Includes standalone viewer.
http://www.crytek.de/polybump/index.php?sx=polybump
Mankua’s Kaldera is the best so far in my opinion. Not just because I helped them develop and test it, but because it is so flexible and works right in max. Lots of control over how the normals are generated. Bakes several channels at once
diffuse, lit, lighting only, normals, height, alpha, etc. Bakes multiple objects into one, including atmospherics. Comes with a handy normal map texture plugin, for using normal maps in the bump channel with the scanline renderer (also works in Brazil a friend tells me).
http://www.mankua.com/kaldera.cfm
==================================================HOW TO VIEW NORMAL MAPS
Using the default viewport shader:
- You need a graphics card that supports pixel shaders in DirectX.
- Set the viewport to use Direct3D.
- Set the Viewport Manager rollout of your material to use Metal Bump, and enable it.
- Load your normal map in the Normal slot.
- Set the viewport to Smooth.
- The Metal Bump shader doesn’t work on poly objects, must be mesh. Collapse to Editable Mesh or else add a Turn To Mesh modifier on top of the modifier stack.
- I found the MetalBump shader also displays the normal map as the color map, at the same time. To stop this, I place a white bitmap in the Texture1 slot.
- Cant remember but I think this process also works in max 4.
Using a Cg viewport shader:
Ben Cloward explains how, and provides a sample shader…
http://www.monitorstudios.com/bcloward/tutorials_normal_maps1.html
In the 3ds max 5 scanline renderer:
- Gnormal is a freeware texture plugin. Put it in your Bump channel and load your map.
or - Kaldera is a commercial package that includes a texture plugin. Same process.
Steve Green mentioned on the Discreet forum that Mankua’s plugin provided slightly sharper results than Ben Lipman’s, when he compared them using with the same material settings. Ben may have modified his plugin based on this, not sure.
==================================================ATI VS. NVIDIA
ATI and NVIDIA each use different normal map formats with their graphics chips.
Basically ATI expects the green channel to point the normal upwards, while NVIDIA expects it to point downwards.
The MetalBump shader in 3ds max uses the NVIDIA method.
Mankuas Kaldera has the option to output either ATI or NVIDIA format. Im not sure about the other tools.
One sure-fire method to fix a map thats incompatible with your viewer is to simply invert the green channel in your image editor of choice. By inverting I mean the black pixels should be white, and the white pixels should be black.
==================================================TIPS AND TRICKS
Ben Cloward posted a strong full-featured normal mapping tutorial on his site. It also has a lot of software-agnostic information.
http://www.monitorstudios.com/bcloward/tutorials_normal_maps1.html
Gary Pate (a.k.a. Ionized) has a great tutorial using 3ds max and ATI’s normal mapper.
http://www.ionization.net/tutsnorm1.htm
James Hastings-Trew describes normal maps in plain language, with tips on creating them in Cinema 4D.
http://members.shaw.ca/jimht03/normal.html
Polycount thread containing tips about painting/editing normal maps.
http://dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/002497.html
Polycount thread explaining World Space vs. Object Space vs. Tangent Space.
http://dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/001876.html
Polycount thread dissecting Doom IIIs use of normal mapping.
http://dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/000441.html
Digital Sculpting Forum threads about normal mapping/displacement extraction.
http://cube.phlatt.net/forums/spiraloid/viewtopic.php?TopicID=9
http://cube.phlatt.net/forums/spiraloid/viewtopic.php?TopicID=395
http://cube.phlatt.net/forums/spiraloid/viewtopic.php?TopicID=581
==================================================
Should be enough to get you started… 

