When creating textures for use in a 3D application or game, sometimes it’s necessary to add finer detail, such as a bump map or normal map. Normal maps fake the lighting on textures to create additional detail, without adding more polygons.
For normals, I figured you had to always rely on a 3rd party application such as CrazyBump. While CrazyBump is a great piece of software, I hadn’t realized it was already possible using the popular photo-editing software, Photoshop.
Please Note: The 3D functionality is not available in Photoshop versions CS6 and prior, and therefore will be unable to create normal maps.
Open Texture in Photoshop
For this example, I’ll use a leather texture found on textures.com:
Open Photoshop and switch to the 3D Workspace:
Open the texture you want to create a bump map for. In the 3D panel, select Mesh From Preset, and choose a shape:
I like to use a Sphere, but it doesn’t really matter. Click Create. Some kind of magic happens inside Photoshop and it creates a scene with your texture loaded onto an object.
In the 3D panel, you’ll see an object name with _Material. Click that:
Create the Normal Map
The Properties panel changes to reflect options corresponding to the material properties. Right now our texture is loaded into the Base Color channel. There’s a button at the bottom labeled Normal. Click that and select Generate Normals From Base Color…
There’s a preview of your shape, and you can adjust Contrast Details and all that fun stuff. Click OK. Your normal map is created and applied to the shape.
Note: If Photoshop locks up, you can also try this simpler method:
- Open texture in Photoshop as you would normally any image. Make sure the image mode is set to RGB. (Having tried with Greyscale, it would freeze up again.)
- Choose Filter → 3D → Generate Normal Map…
- Adjust your map as necessary (I left my to default). Click OK.
- Save your file as PNG (not sure if it really matters). You’re done!
To save the map out of Photoshop, click on the Normal button again in the Properties panel, and this time select Edit Texture…
As you can see in the example below, a normal map can add much more realistic lighting detail on the surface of your mesh.