Creating Normal and Displacement Maps with Adobe Photoshop / Illustrator
Recently, I did a refresh on a watch design and visualization project and decided to document my process for creating bump and displacement maps used in the final rendering. The two key areas of focus are the dial and stitches in the straps.
First, the dial. The dial is one of the most important parts of a watch to get right in a render – it’s fine detail usually requires extra attention. For this dial, I decided to use a simple combination of circular and linear guilloche decoration. In order to accomplish this, I first start by making a vector file in Illustrator that fits the dial.
The circular guilloche area will live behind the numbers. With an orthographic screenshot as a reference, I draw two circles in Illustrator, one as the inner diameter of the pattern, the other it’s outer diameter. I’ve set the line weight to 1pt (image is 34″ x 34″).
In order to create the desired effect, you have to create many concentric circles between the inner and outer ones using the Blend tool.
You have the option to control how many steps the blend uses between the objects you have selected. I chose 120 since it is fine enough to look like the real thing, but has enough spacing to be noticeable up close. Here’s a detail of the vector blend:
Next, I’ll create the vector shapes for the linear portion of the guilloche decoration. I start with a line slightly taller than the desired finished shape, and duplicate it (using Alt+Click & drag, then using Alt+D to copy multiple times). Then, I create a circle that is the exact size I need to contain the linear pattern and use it to create a clipping mask.
Here’s the finished vector file:
Next, I bring my vector file into Photoshop. The pattern will be made into a normal map to be used in the bump parameter of my shader. In order to create this, download and install Nvidia Texture Tools for Photoshop (it’s free) from here: https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop
After Nvidia Texture Tools is installed, I apply the NormalMapFilter to the guilloche pattern. (Make sure your Photoshop document is set to RGB, and you have adjusted the levels to have a perfect black background.)
After selecting the NormalMapFilter from your Filter menu, you’ll see a dialog box with some options on it. Feel free to copy mine, but know that each map you make will require some experimenting with these options to get right.
Here’s the image after the NormalMapFilter. I get good results when I save these maps as 24 bit TGAs.
I load the normal map into 3DSMax and use a UVW Map Planar modifier on the dial. Here’s a closeup of the results:
The next shader I develop maps for is the stitching in the straps. The most noticeable pattern here will be a displacement map that shows the winding of the stitch itself. Corona Render, the render engine I’ll be using with 3DSMax for the final image, uses black and white images for displacement – black will displace the geometry to the minimum allowable distance, and white to the maximum. The 3DSMax displacement modifier works the same way if you’re inclined to use that option instead, it requires your geometry to have the appropriate level of subdivision to capture the detail, however.
The stitch maps were made entirely in Photoshop. I started with straight black diagonal lines across the art-board, keeping them kind of thin.
I soften up these lines with a larger brush…
Then I use the Liquify filter to make them more… “stringy”…
This will be used as my displacement map for the stitches.
Next I add a texture on a new layer with a Round Fan brush, and create a normal map (with the NormalMapFilter) of this new texture layer. This will be used as my bump map for the stitches.
and a closeup of the result….