View Full Version : Normal Mapping in 3ds max

09 September 2003, 01:47 AM
[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.

ATI also has a 2D bump map generator, to convert images into normal maps, similar to the Nvidia tool.

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.

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.

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.

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.

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.

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.

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.

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:

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.

==================================================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.

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).

==================================================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...

In the 3ds max 5 scanline renderer:
1. Gnormal is a freeware texture plugin. Put it in your Bump channel and load your map.
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.

Gary Pate (a.k.a. Ionized) has a great tutorial using 3ds max and ATI's normal mapper.

James Hastings-Trew describes normal maps in plain language, with tips on creating them in Cinema 4D.

Polycount thread containing tips about painting/editing normal maps.

Polycount thread explaining World Space vs. Object Space vs. Tangent Space.

Polycount thread dissecting Doom IIIís use of normal mapping.

Digital Sculpting Forum threads about normal mapping/displacement extraction.

Should be enough to get you started... :)

Frank TD
09 September 2003, 08:38 AM
Thanks :thumbsup:

09 September 2003, 05:32 PM
Great, just what I needed ;)

09 September 2003, 05:58 PM
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.


09 September 2003, 08:37 PM
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.

09 September 2003, 05:20 AM
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 :)

Normal Mapping Primer (

11 November 2003, 07:24 PM

12 December 2003, 03:57 PM
another bump.

02 February 2004, 04:16 AM
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.

02 February 2004, 01:02 AM
bumpty bump


02 February 2004, 01:03 AM
unt une nother

yah danke

02 February 2004, 01:03 AM
:thumbsup: :thumbsup: :thumbsup:

02 February 2004, 04:02 PM
Have you checked ?

03 March 2004, 09:28 AM
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,

03 March 2004, 07:19 PM
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?

03 March 2004, 03:38 AM
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...

03 March 2004, 02:02 AM
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:

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.

03 March 2004, 03:00 PM
Yeah, this is great stuff Ben, much appreciated. I'll add it into the first post too.

Joel Huenink
03 March 2004, 10:45 PM
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:

The engine and tools can be downloaded here:

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:

And some in game shots:

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.

Joel Huenink
03 March 2004, 10:46 PM
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.

05 May 2004, 04:19 AM
anyone know how u could render a normal map thats in tangent space in maya... tangent space is the type of normal map that games use... ill show u some screen shots.... tangent space is the kind of normal map that has the light blue purple and pink looking colors... while object space is more rainbow... i know how to render object space in maya... but trying the same method on the tangent space doesnt light the model correctly... anyone know anything at all?



06 June 2004, 12:20 AM
Quick question, I'm having trouble with Gnormal. When I go and use it in the Bump slot and apply my Normal Texture, the render ends up being faceted and poor quality. Any help would be appreciated, thanks!

06 June 2004, 01:06 PM
MilitaryT0m, your tangent space map looks correct to me, if a little flat. I don't use Maya, but I would think your problem is related to how you're applying the tangent map in your shader... it uses a different calculation than object-space.

Jo|{eR, can you post a pic of your normal map? Also your material setup... what shader are you using (Blinn, Phong, etc.), what bump strength are you using, just the one gnormal map alone in the bump slot, what renderer, does your model have smooothing grups, etc.

06 June 2004, 02:03 PM
after I read your post, I tried using diferent shaders other than Blinn, and it worked! thanks alot :beer:

Right now I'm experimenting what shaders work/ look better.

Thanks again

Edit : Wow nevermind, I spoke too soon ... I forgot to take meshsmooth off. Way too early in the morning to do this heh

Ill be home later after work to post the materials im using

06 June 2004, 01:20 AM
heres the information, its really fustrating.

The Mesh im using does have shading groups, but I tried everything. I took them all off and only used one shading group etc. I tried a whole bunch of diferent combinations and still no go.

I appreciate the help.

Joel Huenink
06 June 2004, 01:40 AM
Why not just use a specific program for outputting normals. We wrote a plugin for Max, surely someone has written a plugin for maya that does something similar by now.

06 June 2004, 01:03 PM
I would suggest starting a new thread, you'll get more eyeballs. Either in the 3ds max section, or the Games WIP section.

Once you do that, it would help if you posted a render.

The "noisiness" in your normal map is the edge-filtering that ORB makes for you. It basically fills the empty unused areas of your map with stretched edge colors from the used areas. This helps avoid seams when the texture is filtered in the renderer. If you had black there instead, then you'd get black pixels bleeding into your mapped areas when it's rendered. But usually an edge filter of 4-8 pixels is enough for most renderings... might be a setting you can adjust in ORB, if it still bothers you (won't affect the render as long as the filter is wide enough).

06 June 2004, 03:46 AM
another bump.

07 July 2004, 08:44 AM
Hello Posm!

Can you ask your friend how to use Kaldera to render with Brazil? I get an error message when I try: "Please set the current renderer to default scanline renderer and try again."

It's qiute urgent for me.
Thanx in advance!

07 July 2004, 01:28 PM
It only uses the 3ds max default scanline, because of Kaldera's ray-casting architecture. Others have asked for this, can't recall what the answer was. Might have been that Brazi, finalRender, etc. are not open enough, or their rendering pipelines don't allow the functions Kaldera uses. The answer might be on Mankua's forum, or maybe the Discreet one.

09 September 2004, 05:55 PM
Finally got around to trying out ATI's stuff and ran into some problems.

Downloaded Normalmapper 3.2.2 from their site. However, the exe files got stripped out courtesy of Antigen.
Hit Google and managed to find Normalmapper 3.2.1 with the executables. However, this bundle does not have an NMF exporter for Max6.
After mixing-n-matching some files, I finally got it working.
Basically, normalmapper 3.2.1 executable and nmfmax6export from 3.2.2.

Haven't had much time to play, but thought I would toss in a quick note about that.

10 October 2004, 07:40 AM
Hey, I'm currently using Kaldera for doing my normal maps and with the unwrap I have saved texture space by flipping the UV's on top of one another, but by doing this when I view the normal map the areas on my model that have had their UV's flipped are now all invereted and I can't fix up my normal map seems!

I was wondering if someone can help me out and tell me how to preview the normal map and fix my seems without half of my model having inverted normals.

NB: It is not an option for me to un-flip my UV's.

10 October 2004, 01:30 PM
Flipped UVs have to be fixed by the game exporter and game engine. There is some easily-available code that helps solve this, on the NVIDIA developer site, called NVMeshMender (

Until this is implemented in the game engine, you will have shading seams. You'll even have seams on non-mirrored UVs. For example, consider the UVs of a bipedal character, where the arm UVs are cut off at the shoulder, and the arm UVs are laid out vertically. Usually the chest UVs would also be vertical. But this causes a normal-mapping seam between the arm and chest, since the upper edge of the arm UV is horizontal, while the shoulder edge of the chest UV is vertical. This is without any mirroring. Because these two edges are at different angles, the normal map on either side of this seam will get different colors, signifying different directions for their normals, thus you'll get a shading seam.

However, once your game engine uses the right kind of code to correct these differences, the seam should disappear (assuming there wasn't a seam in the high-res model, and assuming you're properly padding the edge texels).

The code basically duplicates vertices along the UV edges and massages their normals, which rotates the texel normals to match one another when the surfaces are rendered in-game.

(wow, I really need to update this thread)

11 November 2004, 01:19 PM
I understand that the "flipped" normal is an engine-issue. But is there a way to have max (7) display it correctly? I'm using Metal Bump9 (like everybody else, I guess...)


11 November 2004, 03:17 PM
As I understand it, no. You would need a custom modifier (or utility) that would massage the vertex normals of the model. These new normals are then used to re-orient the per-pixel normals into a world-space orientation so the surface can then be lit properly.

I hear there are other options besides MetalBump, but I'm not really using normal mapping anymore (at least not pre-computed normal maps) so I'm not up to date on display techniques in Max.

01 January 2005, 03:56 AM
i'd like to use max7 to creat normal map,i think it's convience and powerful
for creating normal map in max7 some tool are more power
*project modify:i think the cage max7 offered has more control expecially you can adjust cage's shape that more pricise.of couse it's functions more than creat the normal map you can creat uv's from the high-res model too.
*render to texture:it can autouvmap the low-res model's uv's and apply the result from the project modify and creat all kinds of channel maps(diffuse,normal,specular...)
i'v used Kaldera i think it's powerful and esay to understand,but i chose to use the defaule tool max7 offered
sorry to my poor english and welcome to communication with me

01 January 2005, 02:08 PM
I'm still in max5.1 here. I'm interested in upgrading at some point, but I'm not ready yet, and v5 works fine for what I'm doing.

From what I hear, there is one major problem with the v7 normal mapper. This thread provides some details:

Normal Map problems

02 February 2005, 09:50 PM
For now, you cannot display correctly the normal mapping correctly in the viewport. You can use the material Normal Map that is installed with Kaldera in the bump slot to render the NM, the result will be correct, unlike the viewport's ones.

02 February 2005, 05:13 PM
I'm trying to start a library of Normal Map shapes that can be used to paint maps in Photoshop. So far, I've created a half-sphere Nmap, multiplied it on an image in Photoshop, and used it to create an object with a bunch of round dents. It works as long as you use tangential mapping.
I'd like to come up with simple grooves, protrusions, rivets, cracks, etc. Let me know if you guys have any examples in this area.

02 February 2005, 08:40 PM
Sometimes I paint details in grayscale and use NVIDIA's filter to convert to a normal map. Then use overlay mode to mix it with the base normal map. Works great.

Here's a thread about how to do it...
Blending Hi-poly Normal Maps with 2D Normal Maps

02 February 2005, 08:52 PM
There used to be a cool tutorial here about using Photoshop to create normal maps, purely by painting heightmaps and converting them. Too bad the images are gone though...

Texture creation tutorial - Part 2

02 February 2005, 06:58 PM
I've got a couple of very high res normal maps posted on my web site that you can use. You can find them here:

03 March 2005, 05:58 AM
I was playing around with the ATI's 2D normal map converter and got this result... now do I have to actually invert the file before I run the plugin? I like it, it is really fast and I cannot imagine having to model geometry like this... :)

03 March 2005, 03:59 PM
What did you feed it?

Might help to read Whargoul's posts in this thread...

03 March 2005, 04:14 PM
Hey EricChadwick,

How are things?

If you are referring to my normal map, I had an existing bump map (and saved hundreds of dollars by NOT buying zbrush) and converted it using ATi TGA to DOT3 plugin. Looks funky doesn't it.

03 March 2005, 04:24 PM
I'm doing well, thanks!

The quality of the normal map is only as good as the quality of the height map you feed it. It looks like your height map is only some flat shades of gray. The reason people use ZBrush is because you can model high-resolution geometry with a high degree of control, then convert that to a very accurate height map (or normal map). Painting a really good height map by hand is not so easy.

03 March 2005, 05:42 PM

Your normal map looks just fine. That's exactly what normal maps are supposed to look like. You don't need to invert. Just apply the normal map to your model now and you're done!

Creating normal maps from black and white bump maps is one method of doing it. It's a lot easier than modeling a high res version of the model - that's true. But there are some types of detail that you might want in a normal map that are impossible to paint in a bump map. That's why some people use the "high res/low res model" method.

I like to use both methods together. I create a high res model for the large details in the normal map and also a bump map for the very high frequency details. Then I combine the normal map and the bump map into one normal map.

You can see some examples of this here:

03 March 2005, 05:54 PM
I actually inverted it so that certain features stick out...I was thinking about model all of those little indentations. I am painting the Normal Maps because my models are already smooth anyway and I do not have the energy to model every little detail.

And the good thing about ATi's 2D Converter, is that is it QUICK. I usually invert the green channel to get certain details to stick up. But my questions are will the detail stick out like Virtual Displacement? I have not tested this yet...

Let me show you my other normal map for a looks quite is also hand painted...however, when I painted the bump map I use a black BG.

05 May 2005, 07:09 PM
Hi all!
I've just recently gotten access to Max7 and just recently heard of the whole Normal map "thing", but what I'm wondering is; what IS it?
Is it just an additional bump map that you can put on top of the original bumpmap?
Am I right to say that it's a bump that is set from the model's normals, where the original bumpmap is just set out from the mapping?
And what uses does it have? I understand that it's mostly used in games, so I'm guessing this is a faster bumpmap then?
Maybe it's an extra bump for the closeups in an LOD model?
Any clarity on these topics is MUCH appreciated :)

05 May 2005, 07:21 PM
What is a Normal Map? (

05 May 2005, 07:54 PM
Right, I just now looked through this. So I get what it is and why it's so great, but I still need a MAX tutorial for making one..

05 May 2005, 07:58 PM
Normal-Mapping in 3dsmax 7 - It's easy!

07 July 2005, 05:11 PM
Great link, cheers :thumbsup:

CGTalk Moderation
07 July 2005, 05:12 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.