Creating Weapons for Games

Part 3: Texture Painting in Substance Painter

You need to subscribe ONLY ONCE to
get accress to all project files on 3dgladiator.com

What you need to know before we start

In the third part of this tutorial, we focus on creating textures and adding details in Substance Painter. As the layer structure in Substance Painter can become very complex, I’ll explain the texturing process in a broader manner. I highly recommend you download the projects files to carefully study the layer structure yourself. The actual files speak louder than thousand words!

Adding surface details in Substance Painter Adding surface details in Substance Painter

You have probably noticed that some surface details like the patterns on the wooden parts of the handle or the engravings are still missing. You can add them directly to the highpoly mesh with ZBrush before baking. For more flexibility, you can also paint height/normal information directly on to the lowpoly mesh in Substance Painter and update the normalmap at the end. Let me show you how this is done:

First, let’s separate the lowpoly gun and stock into its components like magazine, ammo, receiver, barrel, bolt and knife again and export the mesh as an FBX from Maya. In Substance Painter, import the gun together with the normalmap and material id map created in Marmoset Toolbag. If you haven’t generated a World Space Normal and a Position map for the gun yet, you can do that now.

Next, create a new fill layer, uncheck everything except Height and move the slider in either one direction. Then add a black mask to the layer and assign a paint effect to it. Drag and drop a grayscale image to the stencil slot so it appears in the viewport. Transform the stencil by holding down the S key on your keyboard, position it correctly, let the S key go and project it to the surface with the paint brush.

The procedure for the pattern on the handle is pretty much the same. Create a new folder, apply a black mask, and add a color selection. Next, pick the color ID of the handle. Then, create a new fill layer, place it inside the previously created folder, make sure only Height is checked and apply a black mask again. Now add a fill instead of paint effect and place a tileable texture in the grayscale slot. If the result looks slightly distorted around the corners, add a filter effect and choose Tri-Planar Advanced. Play with the Blending Contrast until the distortion disappears.

how to apply the patter effect to the handle

If you have decided to add additional surface details to the lowpoly mesh as we did in the previous step, it makes sense to update the AO, concavity and convexity map one last time. I use a tool called Knald for this procedure. All I have to do is export the updated normal map from Substance Painter, import it to Knald and let Knald extract the maps I need. Finally, combine the base AO created in Marmoset Toolbag, the AO created in Faogen and the one from Knald in Photoshop by setting the layer mode to Darken.

Painting Textures in Substance Painter Painting Textures in Substance Painter

In my experience, there is currently no way around Substance Painter for texturing as it allows a smooth and non-destructive workflow in a PBR environment. The “Metal-Roughness” shader was used for the gun and stock, with a simple color as a base and complexity added layer after layer. The whole process is pretty straightforward. Let’s take a look at some layer settings:

After setting up a base layer for all metal parts, add some bumps to the magazine first. Create a new folder with a black mask. Add a paint effect, switch to the Polygon Fill tool, change the Fill Mode to Fill UV Chunk and select the parts of the magazine you want to apply the bumps to. Every layer that we place inside this newly created folder only affects the parts defined by the folder’s mask.

Then place a new fill layer inside the folder, uncheck everything except Height and drag the slider slightly to the left. Apply a black mask and add a fill effect. Place a grunge map in the grayscale channel of the fill effect (Grunge Map 004 in our case) and adjust balance and contrast.

Set the projection mode to Tri-Planar projection to make UV seams less obvious. To smooth out the irregularities and blend them into the surface nicely, add a filter effect and place a blur filter in the corresponding channel. Set the blur value accordingly.

To simulate the fine lines resulting from milling the metal components, create a new folder with a black mask and add a paint effect to it. Activate the Polygon Fill tool again and select every element that should be affected. Then add a new fill layer with a black mask inside the folder, make sure only rough and height are checked and adjust the values. Add a fill effect to the black mask, set the projection to tri-planar and place an anisotropic noise in the grayscale channel.

You can now adjust the tri-planar projection settings by moving the sliders or by activating the gizmo in the viewport with the Q key on your keyboard. Switch between move, rotate and scale with the W, E and R key. Rotate the gizmo accordingly to get the orientation of the effect right.

To make this procedure clearer, I’ll summarize up what happened in the previous steps. In the first step we basically define which areas will be affected by the effect at all. For this reason I add a black mask to the folder and select the elements through a paint effect. Everything that gets placed inside the folder is applied only to that masked area. In the next step I define the actual look of the milling lines with a fill layer inside the folder.

The rough and height values control how strong the effect appears on the surface. The fill effect in the layer mask with the anisotropic map applied to the grayscale channel defines exactly where the previously changed height and roughness values should appear on the surface.

You can further control how much a single layer or effect contributes to the overall look by changing the layer blending mode or the layers opacity settings (very similar to Photoshop). That can be done separately for every channel (height, roughness, metallic…). In the screenshot below you can see that the strength for height is set to 5. The blending mode is set to linear dodge.

Now, let’s create a worn look and add some rust. The procedure is the same as before. Create a fill layer again, set the color, roughness and metallic properties and add a black mask. For the mask we blend together a fill effect with a grunge map in the grayscale channel and a dirt generator and call it Worn Metal.

The next fill layer named Clean Metal is only applied to parts like the trigger and levers which are selected through a Color Selection.

The Rust Fine material comes with Substance Painter and can be found in the material shelf. All we have to do is to create an appropriate mask with a combination of fill effects and generators. When you ALT click on the mask icon of a layer or folder, you can see what the mask looks like in the viewport. Seeing the mask is essential when making adjustments. Also don’t forget that you can play with blending modes and opacity values to achieve the desired look.

We complete the metal material by using the concavity and convexity map generated in Marmoset Toolbag (or exported from Knald respectively) and the curvature map to produce worn off edges and darken the corners on our model.

For the corners, create a fill layer, enable color and roughness and place the concavity map in both channels. Set the blend mode of the fill layer from normal to multiply. Now add a level adjustment effect to the layer, make sure the affected channel is set to Base Color and darken the corners a little bit.

Next, add another level adjustment effect and set the affected channel to Roughness. Enable Invert and leave everything else as it is. I do this to invert the convex map used in the roughness channel so the corners become a little bit less reflective.

For the worn edges, simply create another fill layer, set the color to a lighter gray, add a black mask together with a generator and choose Metal Edge Wear.

Finally, add a standard layer on top (not a fill layer this time!), set the blend mode to Passthrough, so everything below this layer gets stored into it and add a sharpen filter. This little trick allows you to sharpen the entire material and creates a crisp look.

Texturing all the other parts of the weapon works the exact same way. Think about what you would like to achieve, start with a base layer and build up the desired look layer by layer. You can get far with this method without painting any details by hand. If you rely solely on this non-destructive method, you can save the material as a smart material (right click on the folder), store it in the library and apply it to other models in the future.

Let’s take on more look at how this works for some components of the stock. For the actual wooden stock, a fill layer serves as a base again. The color and height channel contain two maps of a wood texture. The projection mode is set to tri-planar again. You can activate the gizmo with the Q key again to change the position of the texture in the viewport. A HSL filter is used to desaturate and darken the original texture just a tad.

The next layer brightens the edges of the stock. It’s a fill layer again with a white color and a Metal Edge Wear generator applied to the mask. Some additional spots were defined manually with the brush tool through a paint effect. Please note that the layer blending mode is set to overlay. On top of that you will find an ordinary layer with the blending mode set to Passthrough and a sharpen filter applied to it. Setting the blending mode like so, applies the sharpening effect to everything that’s below and in the same folder.

The last layer in this folder adds some dirt to the wood with a simple dirt generator and a grunge map. The wood material is applied solely to the stock through the mask of the folder. This mask was created with a color selector again and by picking the corresponding ID color.

To wrap up this chapter, I would like to show you how the worn of edges of the leather material are made. Again, the procedure is always the same for placing details on top of a base layer.

First, create a new fill layer, tint it yellow and set the roughness and height value. Next, add a black mask and add a Metal Edge Wear generator to it. This one uses curvature and AO as input maps. The level effect placed on top of it crashes the tone values a little bit and darkens the generator underneath.

The next two fill effects break up the edges even further. The paint effect at the very top contains additional details drawn with the brush tool and the leather alpha that comes with Substance Painter. Last but not least, set the layer’s blending mode to something like soft light.

Presentation in Marmoset Toolbag Presentation in Marmoset Toolbag

When the model looks good in Substance painter, it’s only one step away from make it look fantastic in Marmoset Toolbag! Export the final textures and maps from SP (Ctrl + Shift + E) and import the lowpoly model to Toolbag. As the weapon only consists of two parts, the actual gun and the stock with one texture set each, we must only set up two materials.

Set Microsurface to Roughness, place the roughness map in it and make sure the value is set to 1. The texture with the color information goes into the Albedo channel while the metalness is controlled by the metal textures as the name implies. Last but not least, select the AO map for ambient occlusion.

Now position the skylight in a way that it creates nice highlights on the surface and lower the brightness down to around 0.2 or 0.3. We will illuminate the scene with three directional lights in the next step.

Click on the light icon at the top left of the screen to add a light to the scene. We are looking for a very simple setup consisting of 3 lights; a key light, a fill light and a back light. Start with the back light first, set its type to directional, tint it blue and adjust the intensity.

The actual position of the light doesn’t matter as only rotation affects the look. Rotate it until it slightly lights the weapon from behind. Next, copy the light, give it a warm tone and adjust the rotation. This one serves more as a warm backlight than a traditional fill light coming from the front. The sky already works as a fill light in our scene and supports the key light we are going to create in the next step.

Copy the light once more and adjust brightness and position. Also, enable Cast Shadow for this one.

Then enable Global Illumination, set the occlusion details to 4 and adjust the brightness values. Finally, turn on Ambient Occlusion and set the resolution at the top of the render palette to 2:1. You can now play around with the camera settings and apply post effects before you render the final image by hitting F11. To get access to the rendering settings in the Capture menu, press Ctrl+P. That’s it!

I hope I was able to give you some insights into the creation process of game assets in this breakdown.

If you have not done so already, go to the top of this page, and subscribe to download the project files for all parts of the tutorial. If you have any further questions, please feel free to leave a comment below. I will try to answer every query as quickly as possible!


Ben | 3D Gladiator