Game Development Community

Normal mapping

by Erik Madison · in Torque Game Engine Advanced · 08/29/2004 (3:39 am) · 8 replies

While looking for info, I ran across a forum post of interest. I'm copying it here, in case the original doesn't last. Credit goes to someone registered as HeliosDoubleSix.

//--------------------------------------------------

Normal Maps like in Unreal Engine 3
I have collected a bunch of resources on normal mapping like used in unreal engine 3, doom 3 and Farcry.

For those curious about normal mapping

For those that haven't seen Unreal Engine 3 yet
unrealtechnology.com/html/technology/ue30.shtml

Read this one before doing any of the other tutorials this tutorial will help you to understand what a normal map is
www.monitorstudios.com/bcloward/tutorials_normal_maps1.html

Zbrush 2 and Normal Maps
209.132.69.82/zbrush/zbrush2/displacement.html

ZbrushCental Forum Normal Map posts
www.pixolator.com/zbc-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=011260
www.pixolator.com/zbc-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=015376
www.pixolator.com/zbc-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=011757
www.pixolator.com/zbc-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=011894
www.pixolator.com/zbc-bin/ultimatebb.cgi?ubb=get_topic&f=4&t=000789

ATI Tools
www.ati.com/developer/tools.html
www.ati.com/developer/sdk/radeonSDK/html/Tools/ToolsPlugIns.html

NVidia Tools
developer.nvidia.com/page/tools.html

Drones tutorials
www.drone.org/tutorials/normal_maps.html
www.drone.org/tutorials/displacement_maps.html
www.drone.org/tutorials/displacement_maps_mental.html
www.drone.org/tutorials/rayDisplace_workarounds.html
www.drone.org/tutorials/rayDisplace_mental.html

Tutorial on creating Normal Maps in 3DS Max
www.pinwire.com/article82.html

Generating Normal maps for wall textures with Cinema
members.shaw.ca/jimht03/normal.html

Lightwave and normal maps
amber.rc.arizona.edu/lw/normalmaps.html

FarCry game that uses normal maps
www.crytek.com/screenshots/index.php?sx=polybump&px=poly_02.jpg
Maps made using a program called PolyBump which 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.
www.crytek.de/polybump/index.php?sx=polybump

A PC Program for dealing with them
www.mankua.com/

Mike Bunnell's modification of ATI's tool that uses OBJ files instead of ATI's NMF format. Optionally creates a sub-division surface for you. Creates displacement maps. Supports 16-bit TIFF. Etc.
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.
www.soclab.bth.se/practices/orb.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 shouldn't 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.
www.cuneytozdas.com/software/3dsmax/#Texporter

Gary Pate (a.k.a. Ionized) has a great tutorial using 3ds max and ATI's normal mapper.
www.ionization.net/tutsnorm1.htm

XSI normal mapping
be3d.republika.pl/howto_d3_normalmap.html

Blender normal mapping
reblended.com/www/alien-xmp/Tutorials/NormalMap/NormalMap.html


Edit: hyperlinked for your clicking pleasure
(continued next post)

#1
08/29/2004 (3:39 am)
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.
sparks.discreet.com/download...fm?f=2&wf_id=83

Ben Lipman's gNormal plugin goes in the bump channel of a material, allowing you to use your normal map in the 3ds max renderer.
www.maxplugins.de/max5.php?search=gnormal

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:
dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/002595.html
developer.nvidia.com/docs/IO/4449/SUPP/GDC2003_AllThePolygonsYouCanEat.ppt
developer.nvidia.com/docs/IO/4449/SUPP/GDC2003_AllThePolygonsYouCanEat.pdf

Peter Watje's 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 I'd provide a link anyhow, since it comes with full source code.
www.max3dstuff.com/max4/matObjectTexture/help.html

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).
www.mankua.com/kaldera.cfm

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.
Mankua's Kaldera has the option to output either ATI or NVIDIA format. I'm not sure about the other tools.
One sure-fire method to fix a map that's 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.

Polycount thread containing tips about painting/editing normal maps.
dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/002497.html

Polycount thread explaining World Space vs. Object Space vs. Tangent Space.
dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/001876.html

Polycount thread dissecting Doom III's use of normal mapping.
dynamic.gamespy.com/~polycount/ubb/Forum8/HTML/000441.html

Digital Sculpting Forum threads about normal mapping/displacement extraction.
cube.phlatt.net/forums/spiraloid/viewtopic.php?TopicID=9
cube.phlatt.net/forums/spiraloid/viewtopic.php?TopicID=395
cube.phlatt.net/forums/spiraloid/viewtopic.php?TopicID=581

AMP II A game engine that uses normal maps
www.4drulers.com/ampdownload.html
www.4drulers.com/gore/sshots/player_wip10.jpg

These links and info have been gathered from all over, take them and repost if you like.
#2
08/29/2004 (5:09 am)
And here is the most awesome link of all www.quake.cz/winclan/qe1/ These guys are remaking the original quake textures from scratch with bumps, normals, etc. They are creditware, so you are welcome to use them with only a mention of thanks in your credits. I personally have always hated the quake texture look, but I really want some good basic bricks and wood for the stronghold mission, and I can't see remaking all of that in 3dsmax just to get a good normal.

EDIT: They removed the bumps from the package, since they didnt need them anymore. I've emailed the group, hoping they still have copies.
#3
08/29/2004 (11:32 am)
Great stuff, thanks for sharing it Erik!
#4
08/30/2004 (11:27 am)
Wow, nice references, you might want to submit that as a resource. Good work.
#5
11/26/2005 (6:38 pm)
Question: How to make a normal _ bump from say an existing player skin?
#6
11/26/2005 (9:17 pm)
Good info to put in the TSE section of TDN. :)

You can fake a bumpmap from an existing diffuse map pretty easily using some photoshop trickery, but it may not look very good. (You basically use something like an edge detection algorithm to get a vague notion of height deltas and turn that into a normal/bump map.)
#7
11/26/2005 (10:14 pm)
While not flawless, nVidia has a pretty spiffy photoshop plug-in for making normal maps. You're supposed to use a heightmap or sorts, but i've run normal textures through it before with rather good results:

img365.imageshack.us/img365/8928/mmshaders9nu.jpg
plug-in found here: http://developer.nvidia.com/object/photoshop_dds_plugins.html

"This installer contains two plug-ins. The first creates normal maps from height maps for per pixel rendering. The other is a DXTC texture compression plugin for Adobe Photoshop that allows you to open and save .dds files in RGB format. It reads and writes .dds files compressed or uncompressed."

Hope that helps a bit! :D
#8
11/27/2005 (12:16 am)
Yea thanks. I have been using paint shop pro and Fireworks. Time to get Photoshop.