Normal Map Creation
Jump to navigation
Jump to search
A normal map should be created in the same dimensions as the image texture (color map) it will go with. There are a few options for how to create one, depending on the quality you want, your skill with various programs, or your patience.
Normal Map from a Heightmap
As the Source tool Height2Normal doesn't work anymore, you will have to resort to other tools in order to convert a heightmap to a normal map.
Todo: Which ones?
Normal Map from an image editing program
Normal Map from a 3D program
XSI
- ver 5.0: Ultimapper
- ver 4.x: GPU Surface FX2
Note:You need XSI foundation or higher to take advantage of this feature, as the Mod Tool has a resolution limit.
- ver 3.5: GPU surface FX
The name has been changing, but the basic usage is the same:
- Move the high resolution model over the low resolution model.
- Select the low resolution one.
- Select GPU Surface FX2 (or Ultimapper in ver 5.0) from Get>Property.
- In GPU Surface FX2 menu:
- Pick the high resolution model (or group).
- Make sure normal is checked.
- Change settings such as normal map resolution, path, sampling, as you want.
- If you are ready, click Regenerate button. XSI will make the normal map.
- To preview the result, set Preview Display and Hardware correctly and click Create Preview.
- Important: It is necessary to invert the green channel of the output file. If you don't do this, your up/down normals will appear inverted in the engine. The simplest way to do this in Photoshop is to open a channel window, (window:channel) select the green channel (which controls up/down), and press Ctrl+I.
Getting the Normal Map in the Game
- Save your normal map as a TGA in the same resolution as the original texture. Give it a name that ends in _normal. Then convert it to a VTF. 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
. Place the new VTF in the same place as your original texture. - Add this line to the VMT somewhere between the braces:
"$bumpmap" "texture name"
and fill in the path and name of your normal map VTF. Here's an example VMT for a normal-mapped material:
"LightmappedGeneric" { "$basetexture" "walls/brickwall" "$surfaceprop" "brick" "$bumpmap" "walls/brickwall_normal" }
Note:Multiple materials can use the same normal map file.
- When compiling your maps with vtex, Add this line to the <texture filename>.txt file in the same directory as your textures then compile with vtex.
"nocompress" "1" "normal" "1"