Normal Mapping in 3ds max


#1

[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

ATI’s 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 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.
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 Lipman’s 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 max5’s Render To Texture to make normal maps. Not sure how this works, haven’t 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 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.
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 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.
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:

  1. You need a graphics card that supports pixel shaders in DirectX.
  2. Set the viewport to use Direct3D.
  3. Set the Viewport Manager rollout of your material to use Metal Bump, and enable it.
  4. Load your normal map in the Normal slot.
  5. Set the viewport to Smooth.
  6. 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.
  7. 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.
  8. Can’t 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:

  1. Gnormal is a freeware texture plugin. Put it in your Bump channel and load your map.
    or
  2. 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.

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.

==================================================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 III’s 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… :slight_smile:


#2

Thanks :thumbsup:


#3

Great, just what I needed :wink:


#4

Although I appreciate the praise… Please Please Please don’t post unless you have a tip or something to share…

I don’t want this to turn into a series of pat-on-the-back posts.

I want to learn from you too. So please share your knowledge if you have some. Don’t just give us an empty “that’s great” post.

Thanks!


#5

when using the Pshop filter, (which works well mostly for non organic things, walls, floors, and other photosourced images) you NEED multiple layers. If you just convert your color image to greyscale and normal map it, it will not look good.

try to separate your layers so you ahve more control of the scale. for this example i will use a barrel with metal rings. If you set it to a scale of 40, so that the rings really pop, the wood grain will be so noisy you wont want to think about it. So separate the metal rings to their own layer and leave them at full contrast.
now take the wood slats and lower the contrast drastically. re-run the filter, after flattening the two layers, looks much better, but now the slats dont look separate, you lowered the wood grain, but you also lowered the depth of the separation of the different slats. so make a new layer, and draw black lines over the slat separation. Now you have 3 layers. its best to think of it like this. the scale is your multiplier, lets say 30. now the contrast level of each layer is your value 0-1. leaving a layer at full contrast is value of 1, lowering contrast is lowering value. so for the wood grain you would want value to be like .25, but the slats to be like .75. So now when flatttened and the filter run, you will have metal rings value 1x30=30, wood grain .25x30=7.5, slat separation .75x30=22.5. This will result in much better looking normal maps. Also remember that in the Photoshop filter, you have the option to add color decal. this will overlay a tga on top of yoru normal map preview. great for lookign at how the end product will look.


#6

Great thread… I just posted up a tutorial on my site.

I tried not to get bogged down in too much technical stuff and focused more on process and tricks.

Hope it’s useful :slight_smile:

Normal Mapping Primer


#7

bump


#8

another bump.


#9

Hey posm, thanks for the great info on this thread. i am using maya 5, you know of anything that will render normal maps in maya 5? have you heard anything on that? i think i am just going to have to download associate drones shader, and hook my map to that… but i know in xsi, 3ds you can view your normal maps in realtime it seems like maya is so far behind on rendering normalmaps. there is not much out there on them i think.
if you heard anything on it, that would be great.


#10

bumpty bump

:thumbsup:


#11

unt une nother

yah danke


#12

:thumbsup: :thumbsup: :thumbsup:


#13

Have you checked http://www.drone.org ?


#14

Ok so¡K¡K… for the last 2 days all I have been trying to do is learn and work on normal maps, but I cant get one thing to work and I really need help, I¡¦ve down loaded all 3 things off the ATI wed site, and I think every things is installed, but I cant export out to nmf. I think the problem is Max 6, I can¡¦t find an exporter to nmf, for max 6,
Is there anyone out there with the same problems or I¡¦m I just doing something wrong, and if for some reason this has already been answer in another thread sorry I was looking every where but found nothing on this problem. ƒº

Oh and thanks posm for posting up all that info,

#15

a question that bugs me since i do not have access to max release 6: did they add support for rendering out normal maps with the renderer- has the material editor in any way been enhanced to allow this (new bump map options or whatever) ?

or is the user still limited to kaldera or gnormal (max 6 binaries available at all?) to make use of normal maps other than viewing them on models with the metal bump shaders applied in the viewport?


#16

Still in max5 here too, but I doubt those features have been added, as I haven’t read anything suggesting they’re there.

About NMF, take another lok at the readme that comes with ATI’s tool… they discuss therein about the 3dsmax exporter and which versions it supports. If no v6 exporter, then you might try Mike Bunnell’s mod instead, since it supports the OBJ format.

Glad it helps…


#17

Hey Eric, I hope you don’t mind if I add a link to my tutorial in here too. I posted it in the tutorials sections, but this looks like the place for the complete list of all of the normal mapping stuff.

Here’s the link:
http://www.monitorstudios.com/bcloward/tutorials_normal_maps1.html

This is a tutorial explaining what normal maps are, how to create them, and how to use them. I’m still working on it - but there’s enough there to get people going I think.


#18

Yeah, this is great stuff Ben, much appreciated. I’ll add it into the first post too.


#19

For anyone looking for a good engine to view your work, we’ve release a free ware version of the AMP II game engine. Along with it comes a Max 5 plugin which generates normal maps very nicely, and you can use a height map as well for additional fine details you don’t want to model. Bear in mind you are not to make money with the free ware version of the engine or tools, but you are welcome to try them out. More info about the AMP II engine can be found here:

http://www.4drulers.com/

The engine and tools can be downloaded here:

http://www.4drulers.com/ampdownload.html

And finally, here’s a WIP screenshot of a normal mapped player I’m working on for Gore II which is around 1700 polygons:

The first one is the high model:
http://www.4drulers.com/gore/sshots/player_wip3.jpg

And some in game shots:
http://www.4drulers.com/gore/sshots/player_wip10.jpg
http://www.4drulers.com/gore/sshots/player_wip11.jpg
http://www.4drulers.com/gore/sshots/player_wip12.jpg
http://www.4drulers.com/gore/sshots/player_wip13.jpg

Basically if you guys want to get hands on experience for a doom3 style engine, AMP II is it. Free download, free demo, free for making mods, etc. If you want to make money with it, it will cost you a license, but its relatively cheap.


#20

Oh and I forgot to mention that the tools sdk comes with normal mapping tutorials for making wall textures for photoshop and weapon model tutorials as well where you use a high and low mesh to generate the normals using our plugin.