Professional Services
Order outsourcing

Antique Flintlock: Creating a Weapon in ZBrush and Substance Painter

Tahnee Peterson Stuart did a detailed breakdown of her realistic weapon project, Antique Flintlock, explained her modeling workflow in ZBrush, and discussed the texturing process in Substance Painter.


Hi! I’m Tahnee Peterson Stuart and I’m from Bordeaux, France. Currently, I am working as an Environment Artist. 

I started 3D at YNOV in 2013. After finishing my Bachelor's degree, I obtained a job at an independent studio as an Environment and Props Artist Junior in 2016. I worked for 3 years for the French Navy on VR nuclear submarine simulation in Unity. After that, in 2019 I was hired by Ubisoft to work on Riders Republic for one year as a Level Artist Junior. Since March, I've been working at Hangar13 as an Environment Artist on an unannounced AAA project.

My interest in firearms came after participating in the CGMA course Weapons and Props for Games. During these classes, I was able to learn how to model a weapon for real-time from A to Z, we went through all the steps like Blockout, High poly, Low poly, Texturing, and Rendering. I was able to model my Thompson Submachine Gun with all the optimization constraints for video games in mind.

In this article, I'm going to show the steps I went through to create my last artwork, Antique Flintlock.
1 of 3

Antique Flintlock: Reference

Since I love all antique guns I wanted to create one for my portfolio. I bought the pack of Antique Firearms on Photobash and I came across the reference that was eventually used for the project. I really liked its shape and said to myself that it would be interesting to recreate it in 3D.

I think it's one of the most important steps in the creation of any asset, to gather as much reference as possible. In my case, I only had one image so I had to go and gather as many images or videos as I could find. I advise using PureRef to gather the references, it's really easy to use.

I also have World of Gun: Gun Disassembly that helps me visualize all the parts of the weapon, which is really practical because you can disassemble and assemble them at the speed you want.


I set up my scene in 3ds Max in centimeters and set my reference to 0.0.0. Then I start to work on the blockout following the reference. Starting from a plane with transparency, I extrude the sides in the orthographic view.

The blockout is made of simple pieces that follow the silhouette and have all the necessary information for the animation. In production, this allows the animators to have a general idea of the position of the pieces that are going to be animated. 

During the blockout stage, the parts can be easily redesigned and adjusted if necessary. 

1 of 2
I started to make the flat shape with a plane, then added edges to it by distorting it with the FDD3x3x3 modifier to give it the shape of the reference. I repeat it by putting my pivot point in the middle, then I merge the vertices. 
This is how I created the flat surface that makes the transition between the wooden stock and the metal:

I created the shape from a plane that I positioned in the right place.

I then took the edges and extruded them into the stock.
Then I cut the stock according to the plane with the cut tool and vertex snapping on.
I removed the face.

Finally, I extruded the edges following the reference and closed the shape.

During the blockout stage, the wireframe is not very important as long as you have the right shape. It will be modified at the Low poly stage. Once my blockout is finished I switch to the high poly in ZBrush.

High Poly

For the high poly model, I use ZBrush except for small parts such as screws. 

Once in ZBrush, I follow Simon Fuch's technique explained in his Handgun Tutorial

I find this technique very effective and very easy. It allows you to keep sharper edges and better control for the polish while preserving the silhouette of your mesh. 

I put hard edges where I want the shape to be sharp and then make a polygroup with UVs. Then I make a Dynamesh and two Deformations, the first Polish by Group with the empty circle and the second – Polish deformation with the full circle. 

After polishing I like to break the edges a bit with the Trim Dynamic brush.

Once I have finished I use Decimation Master on the pieces and export them to 3ds Max.  

1 of 3

Low Poly and UVs

I think about what the player is going to see in the FPS view and add edges where needed. For example, it's important to add enough edges on the cylinder shapes and I like to put more than enough on small details like screws. In short, I add edges where the geometry creates a silhouette and I remove as much geometry as possible where it doesn't.

For the UVs, I replace my UV borders where the player won't be able to see them and place the UVs in the same position. For the bake, it is necessary to leave the UVs of the element that will have the high poly in the UV tile 0-1 and offset those exactly at the same place in the UV tile on the right.

Once I finish the UVs, I apply new smoothing groups based on UV shells by using Textool, a Max plugin that allows you to do this in one click. 

I rename my high poly and low poly accordingly and then I import them in Marmoset.


Once in Marmoset, I add a new baker and I import my low poly and high poly with the Quick Loader. If the names of the Low poly and High poly match each other, it will automatically create bake folders. This is my setup:

Marmoset allows me to have complete control oмук the cage and the skew control in real-time, which is a great advantage because we can see in the viewport if the cage is big enough, and we can also paint it in precise places if it is not uniform.  


I import my mesh and my Normal map into Substance Painter, then set the metal-roughness preset and set it to the Tomoco Studio Environment. 

The first thing I do is to add a folder with elements in the Height channel, like the metal patterns that I drew in Photoshop from the reference.

Once I have finished all the height details, I export and reimport the normal map, and replace the old one. Then I bake the rest of the maps: AO, Curvature, Thickness, and World Position.

Afterward, I add the Ambient Occlusion channel, and I put the map in a fill layer with a level to manage the strength of the AO.

After I did the first pass of texturing to delimit my materials, I start to prepare my model in the Marmoset scene as my final rendering will be in it. I already export my PBR MetalRough textures in a folder – it will allow Marmoset to update them each time I export them from Painter.

I like to use my textures from textures.com, they have a lot of good quality textures and a good base for reworking them. For example, for the wood, I took the basic texture from textures.com and added several variations.  

By studying the references, I choose what I can reproduce on the wood, so I add Height map information that I'm not going to bake, such as small cracks where it makes sense – for example, between two materials like ivory and wood. Then I add some colour variation to make the wood more interesting, a fill layer of black. 

After that, I add the roughness details and make the wood a little more shiny to make it more eye-catching. For scratches, I used Surface Imperfections textures and adjusted the level to modify the intensity. I don’t add any height information, just roughness. Using the reference,  I place the scratches where it makes sense to me, for example, the most exposed parts.

After that, I always add fingerprints in roughness. I use Painter's alphas and also the texture grunge fingerprints smeared, which I modify with levels to bring out the fingerprints.

Each time I place a fill layer with a texture, I place it in a mask with roughness and then come up with the details I want with a paint layer. Thanks to this method, I can have more control over the details. 

Globally, this is what my roughness map looks like, it's a mix of procedural and hand painting. I first do the procedural part that allows me to see the global roughness and then I mask and modify by hand the parts that are not logical, like with scratches in the cavities.
I also add oil stains around the screws with a roughness map.

For metal, I started the same way as with wood – I put my basic material and then added dust, roughness, wear and tear to the logical places like all the joints and where the different elements rub against each other.

Rendering in Marmoset

Usually, if my gun allows it, I put two copies in the rendering so that I can see both sides at the same time. For the sky, I used the HDRI Indoor Fluorescent because it had a neutral white light and it allowed me to manage the colour with the lights I was going to set up. 

For this render, I put 5 directional lights, 3 spotlights, and 7 omni, they are either white or grey and I have two orange and pink omni to bring out the barrels.

I make sure that each part of the gun is understandable and well lit, there shouldn't be any places that are highlighted more than others. The lighting should be consistent over the whole asset and we should be able to see and understand each element.  

What's also important is to bring out the details in roughness. I use spot lights where they will stand out the most. 

Here is the setup for my rendering:

I output my renderings in Photoshop format so that I can easily modify them in the software. Generally, I increase the brightness and sharpness a little bit.


Here is a list of tutorials that have helped me throughout my learning process:


I hope my breakdown could help you if you want to get your hands on the weapon creation. If you have any questions, you can contact me through my Artstation and Linkedin pages and I will be happy to answer them!

P.S. Thanks to Henri Patrier for this amazing point light in Marmoset.

Tahnee Peterson Stuart, Environment and Prop Artist

Interview conducted by Ellie Harisova

Join discussion

Comments 1

  • mind henry

    idee animation anniversaire est une agence animation pour les prestations comme pour
    Animation Bar Mitzvah avec spectacle magie, Spectacle maquillage, Spectacle Sculpture sur Ballon.


    mind henry

    ·3 years ago·

You might also like

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more