Bump map: Difference between revisions
TheBestFlash (talk | contribs) No edit summary |
TheBestFlash (talk | contribs) No edit summary |
||
Line 58: | Line 58: | ||
:[http://www.crazybump.com CrazyBump]: Produces some very good normal maps. Some of them can be argued as almost having the same depth as a parallax map. | :[http://www.crazybump.com CrazyBump]: Produces some very good normal maps. Some of them can be argued as almost having the same depth as a parallax map. | ||
:[http://shadermap.renderingsystems.com/ ShaderMap]: A free alternative to CrazyBump. | :[http://shadermap.renderingsystems.com/ ShaderMap]: A free alternative to CrazyBump. | ||
:[https://sourceforge.net/projects/ssbumpgenerator/ SSBump Generator 5.0]: Another free alternative to CrazyBump that generates Self Shadowed Bump Maps as well as normal maps. | :[https://sourceforge.net/projects/ssbumpgenerator/ SSBump Generator 5.0]: Another free, open source alternative to CrazyBump that generates Self Shadowed Bump Maps as well as normal maps. | ||
:[[Normal2dudv]]: a third party tool for converting bump maps to Dx8-friendly [[du/dv maps]]. | :[[Normal2dudv]]: a third party tool for converting bump maps to Dx8-friendly [[du/dv maps]]. | ||
Revision as of 00:44, 5 July 2009

Textures often called Bump Maps, or Normal Maps are used to either simulate three-dimensional details on a two-dimensional surface, or to give low polygon models more detail. This is achieved through a process known as Normal Mapping.
Format
Each pixel in a bump map contains the (x, y, z) coordinates that define a normalized vector. (ex. A line with a length 1 unit centered at (0,0,0) that passes through the point (x,y,z) )
Because of this each color channel in a bump map has a meaning:
- The red channel defines the horizontal facing (X-axis coordinate) of the vector
- 0 = left ( Converted to -1.0 by the shader )
- 128 = forward, or facing viewer ( Converted to 0 by the shader )
- 255 = right ( Converted to 1.0 by the shader )
- The green channel defines the vertical facing (Y-axis coordinate) of the vector
- 0 = up ( Converted to -1.0 by the shader )
- 128 = forward, or facing viewer ( Converted to 0 by the shader )
- 255 = down ( Converted to 1.0 by the shader )
- The blue channel defines the height (Z-axis coordinate) of the vector
- 0 = facing 'in' to the texture away from the viewer (Converted to -1.0 by the shader, and as a result this is a 'bad' value. Anything under 128 means that the surface should be facing away from the player. This is not possible.)
- 128 = maximum depth capable of receiving dynamic light (Converted to 0 by the shader. It's a bad idea to go under this)
- 255 = facing 'out' of the texture towards the viewer (Converted to 1.0 by the shader)
The three channels represent a normal vector for every pixel which represents the direction that the pixel is facing in 3D space. This allows the engine to generate shadows and highlights on a two-dimensional surface, or give a 3D model more detail.
A bump map is largely useless for really flat surfaces like smooth concrete or metal, but even rough concrete sometimes has enough depth to it to make one worthwhile.
Creation
A bump map should:
- Be at the same resolution as the albedo/s it is to be used with.
- Be stored in an uncompressed format (see Conversion).
Programs
Various programs can automate the creation of bump maps, either by image analysis or by using 3D geometry the user provides.
- 2D
- Photoshop or Paint Shop Pro
- The GIMP
- 3D
- XSI
- ZBrush2
- Lightwave
- 3D Studio Max
- Maya
- Blender
- NVIDIA Melody
- Cinema 4D
- NormalMapper
- xNormal
- Other
- CrazyBump: Produces some very good normal maps. Some of them can be argued as almost having the same depth as a parallax map.
- ShaderMap: A free alternative to CrazyBump.
- SSBump Generator 5.0: Another free, open source alternative to CrazyBump that generates Self Shadowed Bump Maps as well as normal maps.
- Normal2dudv: a third party tool for converting bump maps to Dx8-friendly du/dv maps.
Conversion
In VTFEdit
When converting your texture:
- Choose BGR8888 or BGRA8888 (if your texture has an alpha channel) as your image format.
Tip:You can sometimes get away with DXT compression.
- Check the "Normal map" box in the texture's flags list after the import is complete. It's about 1/5 of the way down the list.

In Vtex
- Save your normal map as a TGA in the same resolution as the original texture. Give it a name that ends in _normal. The _normal at the end of the name will affect how Vtex converts it. For the brick wall example, we would name the file
brickwall_normal.tga
. - Add
nocompress 1
andnormal 1
to <texture filename>.txt in the same folder as your texture, then compile.
Implementation
See $bumpmap
.
See also
$ssbump
: creation and usage of Valve's new self-shadowing bump maps.- An old article that explains normal mapping quite well.
- Material Creation
- [1]
Template:Otherlang:en Template:Otherlang:en:jp Template:Otherlang:en:fr