Josh Brown walked us through the texturing process of the Screwdriver project and showed how the work with gradient was done to show signs of age.
Hi everyone, my name is Josh Brown, I am a 3D Prop Artist currently based in Sheffield. After completing my MA Game Art degree at Sheffield Hallam University, I had more time to work on personal projects and on an indie title with Cathedral Studios. This was more fuel for my love of prop work and hard surface assets, but I wanted to do something special, and I am grateful for the opportunity to share my creative process regarding my Screwdriver project.
The Screwdriver Project
As a 3D artist, there are a variety of challenges as the focus and assets change over the course of the project. I wanted to do something that was different from a usual game asset with tight deadlines and texture resolution restraints. I wanted to focus on nailing key goals I had set for myself. I wanted to achieve a realistic prop that very closely portrays the real thing. I’ve always been a fan of aged objects with a story to tell, so I decided on a screwdriver thanks to seeing some screwdrivers on ArtStation particularly the ones created by Mukul Sahu and Mostafa Sobhi. This was a perfect asset idea for focusing on material definition and allowing me to add a “truly used” feel to it, without bogging myself down on a big scale.
The screwdrivers that gave me inspiration really sets the standard I needed to achieve, and it was great looking at their breakdowns to understand their process. I knew I had to at least match this and got to work collecting material references, images that show interest, wear, and real-world reference. This was crucial as I had to get everything from the dimensions and shape to the material spot on. This condensed PureRef shows you the main focuses without any of the bloated images that distract from the main goals.
Modelling and Baking
I started with the base shapes using the references to get the right size and then using this base mesh I went to ZBrush to add the detail and damage that is vital for an asset such as this. This will be the high poly that will be baked onto the low poly model. It was a simple model overall and the time was mostly taken up from the cracks and damage made in ZBrush. I packed the UVs into 2 separate texture sets so that I could have more resolution to work with as I wanted to really focus on realism and material definition. This will play a big part in creating the small details that add so much to a model thanks to the high texel density.
This was the most challenging aspect but also the most fun in my opinion. I first started developing the wood base as it is the most detailed and largest element to tackle. I started combing a Gradient Noise 2 fill layer with a Gradient Noise 1 masked layer to get the directional fibres and build this alongside the colour profile. Across various screwdrivers, the grains would depend on how they were produced/cut and this would then create all the differences in the aesthetic.
I personally liked the look of straight directional grain with some knots being an interesting addition to the visual look. So, with my colour profile, I ended up deriving this from Substance 3D Painter's built-in Grunge Wood Soft and a gradient filter. A few tweaks with scale and a tri-planar projection, and it created this base wood with darker areas of interest. It’s important to note this was an iterative process between the base layer with knots and fibre layers. I wanted to create something realistic and capture interest so taking the time to get this right was a priority.
It then became a matter of adding to the foundations set and layering up detail. I needed to ask myself what this screwdriver has been doing and where it has been. I wanted to give it that aged look, it was once used but then left forgotten and shows its story through its marks and age. I started to add discolouration through stains and introduce varnish. The brush of choice was Kyle's Paintbox – Gouache Wet Round. This has some nice strokes with its alpha and works well when you brush away the detail to reduce the harshness. It gives a very painterly look, and I was using this with different levels to get a quick idea of the intensity and what it looked like in the viewport. What shows the differences well is the base colour channel viewer. You can easily see how it adds variation with nice uneven gradients of reds and yellows.
Having control of the roughness is important as it needs to be layered up. This was much more apparent on the wooden screwdriver handle so I’ll go through how I layered it up.
I needed to establish a base roughness and from that, I could start to develop roughness with the directional noise. This helps sell the directional grain and is the first step in the material definition. Again, roughness is a hugely iterative process with reference being my guide. This can be checked in Marmoset Toolbag now and again to see how it looks in the renders to get a true visualisation as that will be my end render software.
I start to add some noise grunge to break up the surface and the varnish that was used earlier has some nice lower values that catch the light nicely. I set this up with an Anchor Point to add another layer of roughness variation within the mask already created. I do experiment with some grunge maps to find some nice breakup that reacts well to the lighting in Marmoset and Substance 3D Painter whilst looking at my visual aids in PureRef.
Following on, I still had to control the layers that added some roughness variation from dirt, paint, and dust. Using a curvature generator with a mix of dirt and levels, I was able to control the mask which helped build the base for the dirt which included its roughness value. The paint is treated as its own entity just like the dirt, but a more manual process is done with paint layer effects. I had to control the look manually after grunge maps and blur slopes created interesting shapes.
Lastly, the dust roughness had to be balanced to hold the piece together as it added cohesion across the asset, and I used an overlay blend mode with a higher value of roughness. It was important to use a high-quality dust alpha fill as a base because of the nature of the small details introduced and I needed this to translate well on the asset itself.
This mask was then modified to create different zones of intensity but overall that soft covering is visible all over thanks to the shift in roughness value. The second layer of dust debris had the same process but just different areas of zoning and higher contrast.
Some quick use of secondary damage marks to complement the ZBrush wear and cracks was done with Grunge Cracked Deep. Again, this was set with tri-planar projection and I had to work with the mask as it was too crowded with grey and white values. I subtracted with a grunge fill to do most of the work and remove a lot of the mask that was overkill and not needed. After that, I used a paint layer effect just to break up any more pieces that didn’t look right and any areas that had too much repetition.
What was important to add to the wood was some gradient to show signs of age. Trapped moisture in the cavity between the metal shaft base and the wood would allow the wood to absorb and stain. I did some more subtle gradients to add some contrast and interest on the edges of the handle. This was done using the thickness map for the base age gradient and manipulating it until the mask got the area I wanted. With this, I combined an HSL colour on a passthrough blend to get the colour that matched my reference material. The cavity and age gradient multiply have the same idea but with a darker colour outcome, however, edge cavity needed some more work and I started with a UV border generator as opposed to the thickness map as I had a better mask starting point for this use case.
The base layer of metal was aged steel that I wanted underneath the layer of rust. I still wanted some areas to break through to get some contrast and have areas that would highlight well with the lighting when rendered. The base layer was created using Substance 3D Painter's own Steel Rough material and I built it up from the foundation. This consisted of roughness layers adding a subtle directional noise as well as roughness variation. This can be seen with the grunge map and adding a slight colour value change to add some subtle variation.
Like the wood, I needed to add some colour variation with a gradient which helps add interest and show signs of age. For this, I used a simple Curvature node with a Blur Slope to warp it and Blur Directional. I balanced it out with a Levels node and paint out any areas that didn’t need it. It’s a subtle effect but it adds to the process.
Creating the rust was important to have a solid texture base. The rust process was experimented on and in my final rendition, I went with a Quixel Megascans image. I could build on this and derive my colours from this as well as layer it with noise, colour variation and roughness. Megascans is an incredible library and tool for artists, and I encourage you to utilise it.
From the high quality, it was the better choice to layer up from as the alternatives did not have the right look and lacked the crispness this texture had as a base. I kept looking at all the references for the rust and using HSL as well as adding colour variation I could get the desired look. I created the mask with a lot of processes and the biggest help to get the final look was the use of stencils. I recommend using them as another tool in your arsenal. I used Metal Surface Wear Pack Vol 2 by Alexander Sheynin. They vary in terms of harshness and shape, so it's versatile.
I started implementing some minor height data to give some real depth to the rust and staged this into 2 sets: overall rust height from the metal and then height variation on top to add some height noise. This will be seen in renders with the light catching on the different height values.
The wrap needed some extra height data to add some more interest and crease detail. Denis Litovchenko has amazing-looking creases on his File Tool wrap, and it gave me the idea to try it this way as it is meant to be subtle. ZBrush would also work but for how subtle the change is, I know height value would work fine for its use case. It’s great for little bits of height to break up the surface, but anything more than this and I would have to go back and re-establish the shape.
The wrap needed some colour variation to really sell it, so with the Colour Variation Curve I used a simple curvature generator at a low balance with a blur to give the edges a different value. Combined with colour grunge, I just used a grunge that mimicked some stains and splatters. Subtlety is key here but it should be enough to show a roughness value change and colour adjustment. Between the Colour Variation Light and Colour Variation Other, I get them to work more on the central region with some different hues showing as well as some lighter tones to show age. It breaks the flat colour value up into a more appealing wrap.
The final bits needed were adding dust, dirt, paint, and overall control filters such as contrast luminosity and sharpen. I did the dust in a 2-layer process. I wanted a soft dust covering and a dust debris layer to break up the softness. The debris need some variation, so I subtracted with a grunge map to do most of the work and multiplied by 80 with concrete dust to create different zones of intensity without creating complete spaces of black. Dirt was simple using a dirt generator and then using grunge maps to take away vast areas and then painting bits in and out manually with stencils to get more natural-looking areas of light dirt.
Rendering was done using Marmoset Toolbag 4, which is my preferred renderer due to its fast and intuitive setup that achieves great results. I like to look at shots that have great composition and interesting angles already from real-world examples and other pieces of work that are similar. Props like hand drills, hammers, and screwdrivers could show me some examples of lighting that works and is established. This would influence my camera setups. Personally, I like to use Tomoco Studio as my base neutral HDRI and I like to experiment with angles until I get something that shows off the texture work. It’s something I have been really pushing to improve on as think I have a bit more room to push my skillset here. The final bits were adding dust, dirt, and overall control filters. I see Jason Ord use this to quickly get some feel over the piece to control values and tweak if need be.
Overall, it’s been a great personal development and I think it’s nice to have some freedom without restraining time and resolution budgets occasionally. It gives you a different perspective and you can focus on something truly unique.
Thanks for reading!