Normal map creation

#2
This is not Normal Mapping, this is Bump Mapping. Normal mapping is a map that manipulates the surface normals of polygons, not just the pixel shading as with bump maps. FSX does not have a normal mapping feature as far as i know...
 

arno

Administrator
Staff member
FSDevConf team
Resource contributor
#3
I am sure you have to use the normal map tools to create the correct texture file. For the rest the name bump map is also often used, but that can also be confusion.
 

n4gix

Resource contributor
#4
This is not Normal Mapping, this is Bump Mapping. Normal mapping is a map that manipulates the surface normals of polygons, not just the pixel shading as with bump maps. FSX does not have a normal mapping feature as far as i know...
For reasons of their own, ACES chose to use the term "Bump Map" instead of "Normal Map."

Strictly in regards to FSX's lexicon, "normal map" and "bump map" are synonyms. :teacher:

FSX models use a "normal map" to achieve what ACES terms a "bump map."

I wrote an explanation of this several years ago, shortly after FSX was released. It should be available using the "Search" tool here.
 
Last edited:

n4gix

Resource contributor
#6
"For reasons of their own, ACES chose to use the term "Bump Map" instead of "Normal Map."

Strictly in regards to FSX's lexicon, "normal map" and "bump map" are synonyms."

Normal maps are NOT the same as bump maps. See the wiki entry for referances: http://en.wikipedia.org/wiki/Normal_mapping

It's a nice introduction to what normal mapping is.
No one has said you are wrong, but what part of "Strictly in regards to FSX's lexicon, "normal map" and "bump map" are synonyms." is unclear?

ACES are the ones who chose to misuse the term. ACES chose to call their implementation of "normal map" a "bump map."

So, in order to reduce the obfuscation, it is critical to note that one can NOT create a real "bump map" and expect it to work in FSX! :eek:
 
Last edited:
#7
"ACES are the ones who chose to misuse the term. ACES chose to call their implementation of "normal map" a "bump map.""

I really don't understand. Does FSX support normal maps? I've never seen any signs of normal mapping in FSX. Bump mapping, it does support though.
 

n4gix

Resource contributor
#8
"ACES are the ones who chose to misuse the term. ACES chose to call their implementation of "normal map" a "bump map.""

I really don't understand. Does FSX support normal maps? I've never seen any signs of normal mapping in FSX. Bump mapping, it does support though.
Were what you state true, then the nVidia "normal map" plugin would not work. The fact that it does work, seems pretty convincing to me... :wizard:

http://developer.nvidia.com/object/photoshop_dds_plugins.html
 
#9
Bump and Normal at the laymen level basically achieve the same result.

Bump maps resemble those used by a mask or specular maps with 0-255 gradients (black to white).

Normal maps are a 'newer' tech ideally built from a higher resolution model to fake the existence of higher details (normals from each face) onto an essentialy planar surface. Circa Doom 3 era FPS for overuse of these. :)

Sad truth is that normal maps are often misused and drawn in Photoshop just like a bump map and then converted to a normal map using Nvidia's tool. IMO it doesn't really matter though since the resolution is so poor and details [of rivets] are so small. Only really would enviroment models would benefit the true use of a normal map as largely more detail in polygons are budgeted to aircraft, although even still ...

IMO it's not worth the fuss over symantics. I'm with Bill and the fact ACES reversed the true term is essentially a non-issue.

The answer is: FSX is using bump mapping with normals maps as the conduit but calling them bump maps.
 
Last edited:

n4gix

Resource contributor
#10
This is a repost of an article I wrote Nov 20th, 2007:

Creating Bump (Normal) Maps with the nVidia plugin and Photoshop v7 or v8...

  • Create a normal map with the NVidia plugin
  • Copy the contents of the red channel to the alpha channel
  • Make the red channel black
  • Invert the green channel
  • Make the blue channel white
  • Save the result as DDS/DXT5 image

The Alpha channel is simply what WAS in the Red channel that's been cut-n-pasted to the Alpha channel, before the Green chanel's contents are "Inverted" (note: I don't mean "flipped," I mean that the entire image is "photo reverse image," i.e. "Invert"ed...

Here is the reason why. Compressing the image results in severe degradation of the normal information: in fact, the RGB vectors are no longer precisely 1 as they should be.

"There is another option, but it requires that your normal map be changed around a bit and also that your shader be edited slightly. DXT5 gives the most quality to the green channel and to the alpha channel. We can take advantage of this to "hijack" the DXT5 format and turn it into a normal map compression format. First we need to re-arrange the data in the normal map. Take the red channel data (X) and put it in the alpha channel. Now make the red and blue channels black1. Now we need to adjust the shader to switch the data back around for us. The shader needs to be told that the red channel data is in the alpha channel of the texture and that it needs to calculate the blue channel values itself. This is possible with a little algebra because we can assume that the vector that results from R,G, and B will be unit length one. If you are able to make these changes to both the normal map and the shader, you'll get 4 to 1 normal map compression with very little quality loss!"
http://www.bencloward.com/tutorials_normal_maps12.shtml

1 NOTE:
For FSX the RGB Channels must be as follows:
Red Channel = black
Green Channel = bump map
Blue Channel = white

ALTERNATE METHOD:
An alternative which may also be used is:
- Create your normal map with the n_Vidia plugin.
- Save as .psd file
- Run Imagetool from the command line with the switches as explained in the SDK for normal maps. This will do all the copy-invert-delete-mutilate operations needed (I made a .bat file to automate the process).
ACES has written thier Shader to utilize this rearrangement of the normal map, which allows us to use DDS/DXT5 compression.

"Positive or Negative Y
When using Tangent Space normal maps, the most common difference in formats is the direction that the green channel is lit. Some programs light the green channel from the left (postive Y) and others light the green channel from the right (negative Y). Some programs give you the option to choose positive or negative Y. If your normal map isn't being lit correctly, the first thing that you should try is to flip the green channel. Just open the normal map in Photoshop, select the green channel, and choose "Invert." That will give you the same result as if you had rendered the normal map in the other format. "

http://www.bencloward.com/tutorials_normal_maps11.shtml

BTW, if you want to learn more about FSX's version of "bump mapping," understand that it's more commonly known as "normal mapping." Actual "bump mapping" is generally a gray-scale image with no Alpha channel. "Normal mapping" on the other hand is an entirely different concept.

There's a very nice article here: http://en.wikipedia.org/wiki/Normal_mapping that explains this in greater detail. From what I've read so far, it's not clear to me that ACES themselves have fully exploited the potential in their own examples.

I haven't taken the time to read this "tutorial" in depth yet, but it looks promising!
http://www.bencloward.com/tutorials_normal_maps1.shtml
 
#13
Use of normal maps in run-time is a very spesific procedure. Does the FSX render do normal maps, or is it a bump map shader?

I've seen no evidence of normal mapped objects in FSX. The screengrab with the rendered house in the tutorial looks like a basic bump shader, and not a normal map shader.
 
Last edited:

n4gix

Resource contributor
#14
ACES has written thier Shader to utilize this rearrangement of the normal map, which allows us to use DDS/DXT5 compression.
I honestly don't see how the above could be made any clearer.

FSX's Shader is using a NORMAL MAP that's been bastardized to achieve ACES' specific goal, which is creating the illusion of "3d surface bumps or indents."

Honestly, hasn't this dead horse been beaten enough by now? I frankly don't care "how it works" nearly as much as that it "does work."

If you were to take the time to open any of the default "xxx_bump.dds" textures, you'd soon discover that they are -in fact- precisely as described in my article from 2006, when I was still in daily contact with the nice folks who actually coded FSX and the Shader system.
 
Last edited:
#15
Don't get me wrong. Since you say that in FSX, normal mapping and bump are the same, and since you have been in contact with ACES, maybe you could give men an answer to the following?:

[1] FSX use normal maps for bumpmap rendering.
[2] FSX use normal maps for normalmap rendering.
[3] FSX uses normal maps for both normalmap rendering and bump map rendering.

It looks like only bumpmapping, but maybe I'm wrong. I'm sorry that you consider this a dead horse, but I find it rather important, because then I will do highres models for my next airport ground. Bake a normal map, reduce the polys, and apply the map from the high-res model.

If FSX does not utilize normal shading, on the other hand, this workflow would be of no point, just a lot more work...
 

n4gix

Resource contributor
#16
Only #1.

FSX does not support "real" BUMP Mapping. Period.

The Material Editor slot in Max/GMax labled BUMP has been "hijacked" so that we can specify a filename for our xxx_bump.dds (which is in reality a massaged normal map).

So your concern:

If FSX does not utilize normal shading, on the other hand, this workflow would be of no point, just a lot more work...
is unfounded, since FSX does -in fact- utilize normal shading.
 
#17
Bill, regarding your tut on bump/normal maps....I'm unsure about 2 things. 1. You say twice "make a channel black (white)". You don't say "paint" the channel black, is that intentional? Is making a channel black different from filling it with black? I was experimenting last night, I downloaded the jpg from the wiki, and saw its channels. I noted the red channel ended up partly black with lines showing. I could imitate that by clicking on the fill tool once with black, but am I accomplishing what you intended? When following your advice for the blue, to "make" It white, I noted it was already white, so I didn't do anything to it. I also noted no alpha channel in your sample. Is this just due to storing the image in jpg? or do you delete the alpha eventually? Oddly enough, the end result appeared to work, even thou I'm a blind squirrel looking for nuts.
 

n4gix

Resource contributor
#18
Okay, Bob. Let me outline my workflow process. This is after creating the "normal map" with the nVidia plugin, and still in a .psd format:

1. Open Photoshop's "Channel" tab
2. Create an Alpha Channel
3. Set the forground color to pure white
4. Set the background color to pure black
5. Select the Red Channel, press Ctrl-A, Ctrl-X to remove the contents of the Red channel and replace it with pure black
6. Select the Alpha channel, press Ctrl-V to paste the buffer contents
7. Select the Blue channel, select a LARGE pencil, and paint pure white.
Done!

BTW, the .jpg file isn't really a good source for an example, since I had to compress it horribly to save size, and it has of course lost the Alpha channel...
 
Last edited:
Top