Normal Map Creation

From Valve Developer Community
Revision as of 10:08, 27 August 2007 by Andreasen (talk | contribs) (Categorized and moved sections. (Still more to come - just need to eat something first.))
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.pngNote: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

  1. 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.
  2. 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.pngNote:Multiple materials can use the same normal map file.
  3. 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"


See Also

Template:Otherlang:en Template:Otherlang:en:jp