In the following article, we will explain how you can create Normal and Specular Maps using Crazybump. Crazybump is a useful tool for the creation process of a 3D configurator.
A few remarks about Maps before we begin:
The source does not support Parallax mapping natively (it exists, but is disabled, unless you have a coder that can enable it again), so the Displacement Map option can be safely ignored.
Specular maps from Crazybump are used by the engine as $envmapmasks. Normal maps, on the other hand, are stored in a separate texture. This is referenced in the Material VMT file (which you will need for each texture anyway). Source does not support Ambient Occlusion, but you can still burn it into the texture by copying it to a top layer and setting it to “Multiply”.
Maperstellung / Workflow.
We use Photoshop and CBump when creating textures for the source engine. The usual pipeline looks like this:
This is where things diverge, depending on what we do.
Since Specular Maps are grayscale, it is best to save them as an alpha mask rather than as a separate, standalone texture. When saved as a standalone program, it is saved in RGB format with three channels, while as an alpha channel for another texture, it only captures one, which reduces the file size.
Note: Due to errors with the Photoshop VTF plugin, note these two things: Once you have used the Normalmap or Normal with Alpha preset, the Exporter will be “glued” to this preset and always saves in this format (especially with the flags “Normalmap” and “Trilinear”), regardless of how you set them until you re-state Photoshop. It’s a handicap and can really do damage if it’s something other than a normal map. Fortunately, you can disable these two flags in VTFEdit. The plugin does not save alpha channels unless you have smoothed the image before.
A good way to check if your source knows about the specular texture is to use Hammer. If you set the 3D view to “Textured”, you will see that the texture is visibly “glossy”. The $envmapmask is not loaded, so you would have to use some debugging methods in the game to check it.