3D Art Shaders/Scripts Resume Demo Reel Texturing Tutorial
Download the tutorial and sample files

Hello, my name is James O'Donnell and I am an artist for the Forgotten Hope mod team (www.fhmod.org), a World War II realism mod for Battlefield 1942 and Battlefield 2. Naturally, a mod for a Battlefield game is going to entail the creation of many vehicles, so today we will look at texturing worn metal. In this case, I will show the steps I went through to texture a Daimler Dingo scout car used by the British 'Desert Rats' in the North African campaigns.

Texturing is one of the most important parts of the 3D art process - a poor model can be saved by a great texture, but a bad texture will ruin even the most detailed model. One of the most crucial parts in making a successful texture is weathering - a common problem with textures is that they are too simple and "clean." In the real world, there are hundreds of minute variations on the surface of an object, even if the object is factory-fresh. When you take, for example, a military vehicle, then there should be even more visual detail from the weathering and harsh conditions the object is exposed to.

Of course, on the other hand, it is very easy to go too far in this regard. A texture that exhibits too much weathering, or in too bold a manner, will be just as jarring as the object with no weathering at all. Texturing is a constant balancing act between making an object visually interesting with noticeable details, and avoiding making those same details draw so much attention that they damage the overall texture.

For this texture, I will be using Photoshop CS2, a Wacom Graphire3 tablet (6"x8"), and a custom wear brush I have made (the brush pattern image was found online.) While a tablet is not essential for texturing, and there are many skilled texturers out there who can get by without one, a tablet will make your life much easier thanks to pressure sensitivity. It's not necessary to buy the largest and most expensive tablet available, even a small size entry-level tablet is a large step over mouse-painting. A good tablet is one of the best investments you will make in texturing.

Also, when making your Photoshop document, be sure to name all your layers something descriptive; you can also color-code them to make it even more recognizable. I like to use a lot of layers in my textures, and it can be a problem if they are all named Layer 1, Layer 2, and so on. A little preparation can go a long way here.

Here is the finished result of my texture for the Daimler Dingo scout car. This is just the left side of the vehicle, but the techniques are the same for the rest of the vehicle. Because this is the North Africa version of the Dingo, it is exposed to particularly harsh conditions, which makes it a good place to start learning how to weather metal. Now that we've seen the finished result, let's start from the beginning and see one way this can be done.

This first step is nice and simple. Just fill a layer with the color swatch of your choice - in this case, I am using the standard desert paint the UK used in North Africa. Also here is my UV layout. I will disable it for the rest of the tutorial to not obscure the texture, but it is good to leave it on in Photoshop at a low opacity, so you can see where you are painting.

Next, we will make a new layer and fill it with 50% gray. When you are in Overlay mode, 50% gray does not affect the image, and anything brighter or darker will be applied to the layers beneath. We will run the Artistic->Sponge filter to provide some basic metal variation. You can tweak the values to whatever you like the most; in this case, all the sliders are at zero. Put this layer on top of your color layer and set it to overlay.

Now we will make another layer and again fill it with 50% gray. Use dodge and burn to paint some broad strokes of value for visual interest. Set this to overlay as well, and put it above your color layer.

This is what our texture looks like now, with the color layers and the two metal layers above it.

Now we will use the custom brush to paint some variations in the paint. Make a new layer that is above the color layer, but below the metal layers. Use the color picker to pick a slightly lighter and slightly darker version of your base color. Also, try varying the saturation and hue subtly, for more interest. Do not use the dodge and burn tools here - dodge and burn is only really useful for grayscale adjustment; when used on colors it will look very lifeless. You can also take this opportunity to add a very slight value/hue jitter to your brush. Now, just paint in some regions of color. As a rule of thumb, edges and corners tend to get darker as they accumulate grime, and wider exposed areas tend to get lighter from sun exposure. This is not an absolute rule however, and sticking to it dogmatically will make your texture look a little stiff. Feel free to add little pockets of dark and light color sporadically across the texture.

Make another new layer, again above the color layers but below the metal layers. This will be our decal layer - if your vehicle as any painted markings on it (which it almost certainly will), put them here. Unit insignias, warning labels, serial numbers, and so forth are found on almost every vehicle in the world. If you are making a fictional vehicle, take care not to go overboard with labels, but make sure you have some.

Just like all the other parts of the vehicle, the painted decals will suffer wear. Make a layer mask and mask out some of the details.

Now we shall add some scratches to our vehicle. Make a new layer, and put it on top of your metal and paint layers. Use a very small round brush (1-3px) set to a dark color and draw some lines all over the place. Make them varied - short, long, curved, etc. Then, we will add a very small Outer Glow layer effect. Set the color to a slightly darker shade of your base paint, and set the Outer Glow to Multiply. Turn the opacity down low on the effect, and turn the layer's Fill property low as well. We are just making small scratches; we don't want to make them look like huge gouges.

Now we are going to add small highlights to the edges of the vehicle. Edges, being non-flat, reflect more light in more directions. We will simulate this highlight using Inner Glow layer effects. First, you will need at least two layers. Choose every other contiguous section of your mesh, and fill them black. The shapes should not be adjacent to each other - there should be a gap between each where you have skipped a space (much like a chess board.) Now, pick the other sections you skipped earlier, and do the same. Add an identical Inner Glow layer effect to each, with the color set to white and the Source set to Edge. It should be very small and subtle; just enough to subtly highlight the edge. Finally, set both layers to screen mode. Now the black shapes you made are invisible, and only the highlight can be seen.

This is what our texture looks like with the edge highlight layers set to screen.

This vehicle has some visible welded joints. We will draw these using a small round brush with a very slight scatter (to simulate the unevenness of welding.) We will draw these lines using 50% gray and set to Overlay mode. The reason for this is that later on, we may want to change the base color of our texture (for example, if I wanted to convert this to European Olive Drab camo.) If we painted these welds with color, that would make changing them later a hassle. By doing them in mid-gray on an Overlay layer, we can potentially save time later. Once you have drawn all the necessary lines, add a Bevel and Emboss layer effect, and add an Outer Glow layer effect. Set the Outer Glow to a dark color and to Multiply mode. I like to use dark Outer Glows instead of Drop Shadows because they are non-directional, and they enhance the visibility of the layer detail more than Drop Shadows.

Now we add more of the basic vehicle detail - in this case, there are some panels on the Dingo with beveled edges. I simply use the rectangular lasso to draw my shape and cut out the center, and add a Bevel/Emboss and Outer Glow layer effect, just like the previous step. Again, we will do this with 50% gray and an Overlay mode layer.

There are some other panels beveled out here that would cast a local shadow on the vehicle - in this case, a medical supply box, and the latches that secure the windows and door. I draw in white rectangles in the appropriate places, add a soft black Outer Glow, and set the layer to multiply - this hides the white rectangles used to generate the effect, but keeps the Outer Glow visible. Alternately, you can just set the level "Fill" to zero.

Again, some fairly simple and self-explanatory detailing. Rivets, bolts, and the like are visible on many vehicles, and adding them in adds to the complexity and interest of the texture. Here, I simply referenced from photos where all the rivets were. Use the circular marquee tool and fill in the rivets with 50% gray on an Overlay layer as before. Again, add a Bevel/Emboss and black Outer Glow.

It is now time to start to grime up our vehicle. Using our splatter brush, we will paint some yellowish-green grime onto our vehicle. Grime will accumulate in corners and beneath overhangs (such as rivets or panels.) There will probably also be splatters elsewhere, since combat is naturally messy.

Now we will go ahead and add some more grime, but this time we will use more of a red-orange. This will also represent some rusting on the vehicle. Again, it will often accumulate beneath overhangs and open ports, where water or other gunk might flow down.

Now that our vehicle is nice and grimy, it is time to start to chip away at our metal. The edges (particularly leading edges) of our metal will suffer the most wear, with the paint being worn away to expose the metal beneath. It is extremely important in this stage to keep in mind the scale of your vehicle. If your scratches are too large for the size of your vehicle, it will begin to look more like serious denting rather than the paint being worn away. It is also important to avoid uniformity here - if every edge has an even wear line, your texture will look very stiff. There should be spontaneous breaks in the line, and it should have an inconsistent width. Also remember that the wearing is only going to happen on exposed edges - if your deep corners are worn, it will have an off-putting effect (how did it get worn anyway?) To do the chipping, I made a new metal layer like we did in step two. Then I mask it all out, and then paint white into the layer mask to gradually reveal wear. I also added a very small white Inner Glow and a very small black Outer Glow. These help add a little bit of depth to the wear. Once you are finished with painting the chipping, apply an Unsharp Mask filter to your layer mask - this will make the edges of the wear more visible, instead of looking muddy and soft.

We will now repeat the previous step somewhat. Not all edges are completely worn, but most will experience scuffing - light damage to the paint. Make a new metal layer as before, but make it a bit lighter in value this time. Paint into the layer mask the same way you did in the last step, but use a larger brush size. The coverage can be more consistent this time, since the effect will be more subtle anyhow. This layer should have a very low opacity. Finally, just like the last step, apply an Unsharp Mask to the layer mask when you are done.

We're in the home stretch now! Just a few more steps to be done. Now we are going to add mud/dirt to the vehicle. Since this is cruising around the desert, it is going to be lighter colored dust/sand/dirt that attaches to the metal, rather than dark mud like you might find in Europe. Paint a light brown on surfaces exposed to mud and dirt - typically they will be the lower surfaces on the vehicle (closer to the ground) and on leading edges (from dirt/mud/etc splashing up onto the vehicle as it drives through terrain.) Once you are done painting, add a very fine (1-2%) colored application of the Add Noise filter. This will keep the mud from being too flat.

Now we will add a second layer of detritus, this time darker. Add this layer below the previous mud layer, and paint a darker shade of brown onto your vehicle. Again, just like the last step, add a small amount of colored Noise.

We shall paint one last layer of mud. This will be the lightest color, and will be on top of both of the previous layers. Before we were painting large mud coverage; now we will paint the small stray clumps of stuff that stick to our vehicle. Paint some small dabs here and there, some on the metal and some on top of the other layers of mud. Of course, just like the last two steps, finish off by adding a faint application of colored Noise.

Time for our last step of painting! Now we are going to add some dust to our vehicle. This will be much fainter than the mud/dirt layers. Use the brush to paint some large clouds of various shaders of brown. Then, add a layer mask, and fill that with 50% gray. Apply the Sponge filter to the layer mask. This will help get the dust to form small clumps. Use Adjust->Brightness/Contrast and Levels to increase the contrast. Finally, in areas that would accumulate more dust (flat surfaces where it could rest on), use the Dodge tool on the layer mask to slightly increase the visibility. On more vertical surfaces, you can use the Burn tool on the layer mask to reduce the dust concentration. This level will have an overall low opacity.

I said that we were done with painting, but we aren't quite done with the texture yet. Although your texture may seem detailed now, it is likely that is actually a little bit blurry and muddy. Select the entire canvas and Copy Merged to grab a snapshot of your entire document. Paste this into a new layer. First, apply a very subtle degree of colored Noise - you will probably want 1% or less. The reason this will be so faint is for our next step. Use the Unsharp Mask filter to help bring out the detail you have so carefully painted. Use a relatively high Amount setting (200%+), a low Radius (0.1-1.0 pixels) and a Threshold of zero. Play with the amount until you are satisfied. Unsharp Mask is a very powerful tool that can bring out a low of detail and interest in your texture. However, remember that like any other tool, Unsharp Mask is a force multiplier - it can bring out your carefully painted details to a brilliant level, but it can also magnify any minor flaws and errors very painfully. It is likely at this point that you will want to go back and tweak certain layers, since they will look much different after Unsharp Masking the document. I set up a Photoshop action that would use Copy Merged on the document, paste it into a new layer, and then apply the Add Noise and Unsharp Mask with values I set in advance. Using actions in this way can make this tweaking stage much easier. Once you are happy with your color texture, we will move on to the final stage.

In my case, I built this model with the intention of putting it in a real-time engine (the Battlefield 2 engine in this example.) Many modern games have very advanced lighting engines, capable of increasingly sophisticated effects such as per-pixel lighting and self-shadowing. However, no game engine can yet match the power of a professional rendering application, like Lightwave. While vehicles can cast accurate shadows on themselves and their environs, the soft shadows from radiosity and occlusion that you see in reality are currently too slow for realtime. However, we can pre-calculate this and bake it into our texture. If you are building your model with the intention of using it in pre-rendered work, this step isn't neccessary, but it will greatly enhance your real-time work.

We will now use surface baking to precalculate the lighting of the texture. In your object file in Modeler, add a large sphere in a new layer. Face the normals inward, and position the object such that the middle of the sphere is in line with the ground plane for your vehicle. Delete the lower half of the sphere, and create a flat ground plane polygon by connecting all the vertices along the midpoint of the sphere. Essentially, your vehicle will be sitting on a flat plane with a dome above it. Set the dome to one material, and the ground plane to another. Make sure your vehicle is using just one surface - if you need to control smoothing on it, temporarily unweld some points. In Lightwave, set the diffuse of the ground plane surface and dome surface to zero. Increase the Luminosity of the dome to about 100-150%, and increase the Luminosity of the ground plane surface to about 25-50%. We have the ground plane slightly luminous so that the underside of the vehicle is not totally black. This might be fine for heavy vehicles like tanks, but if a vehicle can conceivably flip upside down (which our light car might) then you want to ensure the bottom of the vehicle is at least partially visible. You may also need to add some small point lights here and there for areas the light can't reach well (such as the cockpit of a vehicle, if applicable.) You also may need to edit your vehicle somewhat - you don't want to bake lighting on surfaces that would rotate, like wheels. If you have wheels, copy them and rotate them so they face upwards. Copy those wheels and assign them to a new surface with 0% Diffuse, and delete their UVs. Put those duplicate black wheels where the wheels would normally be - this is to simulate the occlusion of the wheels, since the actual wheels are elsewhere. On the vehicle surface, add a Surface Baker modifier. Set it to only bake Illumination, set it to the correct UVMap, match the resolution to your texture resolution, and check Antialiasing and Shading Noise Reduction. Remove all texture from your vehicle surface, and make it pure white, 100% Diffuse. We are not rendering the texture here because we only need the baked illumination - we could bake it with the texture if we wanted to, but that would require a re-bake every time we edited the texture. By baking it without the texture, we can just bake the illumination and use that as a layer in Photoshop. Once you have all this set up done, set your Global Lighting properties so that Shading Noise Reduction is enabled, Ambient Light is set to zero, and Radiosity is enabled and set to Monte Carlo. Let it render (it will probably take a long time), and when you are done, take the image rendered from the bake and put it on top of your image in multiply mode. Now your texture has great looking radiosity shadows, at no cost to the real-time engine.

Final Rendered Image

In-game Shot

Now, we are finally done! Texturing can be a very long process, but ultimately a good texture is what separates an OK model from a great model. It is a very iterative process, and most of your time spent will be on tweaking and re-evaluating certain parts of the texture. Ultimately however, with enough elbow grease, a good result will come out. When you are texturing, always keep in mind the "what," "how," and "why" of your surface - what is your surface made of, how is it being impacted by its environment, and why are certain parts of it the way they are (don't take anything in the appearance for granted - question each part of the design and consider why it would be done that way in a real-world situation.) With enough patience and observance, anything is texturable. Good luck on your future projects!

James O'Donnell



Forgotten Hope Artist - www.fhmod.org