17 January 2021

Weapon Modelling Breakdown – Stocking & Co. Pepperbox Pistol – Stephen Mok


Hello everybody! My name is Stephen Mok. I’m a 3D and Material Artist and a recent graduate from the Savannah College of Art and Design, where I majored in Interactive Design and Game Development and minored in Motion Media Design. 


I began working in 3D during my freshman year at university for an assignment. It was an entirely new experience for me as I had a fine arts background back in high school. However, I fell in love with the process and remained in 3D ever since. 


For this article, I’m going to try to break down my pipeline and how I was able to streamline my workflow. This isn’t a guide on how to model or how to texture, this is a breakdown of how I approached this project and my personal pointers on working quickly. The programs I used for this project were Autodesk Maya, Marmoset Toolbag 4, Substance Painter, and to a lesser extent, Photoshop, Procreate, and Substance Designer.

Inspiration and References

I was originally focused on creating a follow-up to my previous piece with a sci-fi pistol. However, progress was slow and I was not working on it as much as I had hoped to have. I have been playing a lot of Red Dead Online with my friends so I was interested in learning about the Wild West. I came across a very interesting pistol that looked like it was from Cowboys and Aliens. It was called the pepperbox pistol.

After reading about it, it was all I could think about. I shelved the sci-fi pistol and began collecting references. The main thing that I look for when modelling weapons and firearms is the anatomy. It’s really important to understand how said weapons work and how they were built from the inside and out. Even if they are original creations, you have to remember that there is a reason for every spring, bolt, and part to be where they are. Daniel Solovev has a wonderful guide to designing firearms that helps you understand how they work.


For my references, I found several auction listings for the pepperbox pistol that actually had the gun taken apart and there are several YouTube videos that demonstrated how it worked. I worked off of those for the majority of my process.

Another thing to be aware of is manufacturing information. Weapons are often made in a production line; serial numbers, brand labels, and various other bits of information that identify the weapon is super useful in pushing your work from a simple object to something with an identity. There’s more to how I look at my references, but I’ll bring them up throughout my breakdown.

Low, High-Poly Modelling, and Planning Ahead

During the summer, I had signed up for Peter Zoppi’s mentorship with The Mentor Coalition. He explained to me how he approached hard-surface modelling and taught me how to efficiently transition from low to high poly modelling. He’s completely changed the way that I model and I am very glad that I took his mentorship course.

One thing to always be on top of, is keeping things organised. I followed a naming scheme for my parts, as well as appropriately grouping them, separating the low and high-poly. I would update them as I worked, and removed anything that I did not need. I also saved iteratively as that allowed me to go back to an earlier version if I had to. Another quality of life habit to develop is to save your low and high poly models in separate layers. That way, you can switch between them without one getting in the way of the other. Doing all of this before you finish modelling is setting yourself up for success.


When I look at concepts and references, I try my best to envision every part as a shape that I could use as a starting point. The pepperbox was no exception to this; it was largely cylindrical in nature but the barrel has a subtle hexagonal shape to it. Start from there, and mold the mesh to your liking. Keep note of certain properties of the thing that you are modelling, and adjust your workflow to it. I noticed that the hexagonal barrel had six cylindrical tubes orbiting one larger central cylinder, so I worked in multiples of sixes; the six outer tubes had twelve faces and the central one had eighteen. This foresight helped significantly with topology when I was able to seamlessly bridge edges together, saving me a lot of time and headache later on.


Prior to my mentorship, I would add edge-loops areas of focus on my low-poly model and use that as my high-poly. It wasn’t the worst workflow, but it was painstakingly slow as I had to hand-select every edge to bevel. Under Pete’s guidance, I began to adopt a subdivision-based workflow, where I would select edges and crease it before turning on smooth preview. There’s a really useful Maya script by Play Creative that selects edges on a mesh with tight angles. I would then subdivide it, uncrease, and subdivide again. This gives your mesh definition in the important areas without overdoing it. The result was far more satisfying than my previous workflow, and faster.


During this stage, I would also begin UVing the parts. One perk of working with a subdivision workflow is that your UVs will be preserved in one form or the other. If you’re going to have a high-poly with multiple parts or floaters, that’s okay. Get your basic forms down with that in mind before separating them to create a high-poly. 

One thing that I tried to avoid was having stars on the edges of topology. The problem with subdivisions is that one iteration builds on top of the previous one. While stars aren’t exactly the worst thing to have on an edge, once you subdivide it, you’ll notice some serious pinching. I avoided this by moving them to flat surfaces where the pinches won’t be as visible, even if it means the low-poly model’s poly count will go up; it’s not worth the visual degradation on the high-poly when you bake. You can fix the topology on the low-poly later, if you must.


For the pepperbox pistol, the high-poly mesh of the grip consisted of several separate pieces, while the low-poly had one singular form. There were also certain elements such as bolts and engravings that weren’t practical to have a low-poly form of. For the former, I made use of “floaters”, also known as floating geometry. Pete taught me how to use them effectively in order to speed up my workflow. 

Floaters are essentially bits of non-destructive geometry that sit right above the surface of a high-poly geo. If you align them closely to the surface, you can trick the baking engine into thinking that it is a part of the high-poly model. This is extremely useful if you want to incorporate or change complex geometry in another geo quickly without having to deal with booleans or edge-flow. You can also use them as material IDs. The only trade-off is that you will no longer have a “true” high-poly model to present as you’ll have several bits of geometry floating around.


Now that I have a low-poly, high-poly, and everything in between (because subdivisions), I can go crazy with material IDs. I personally think that material IDs pave the way for details that your low-poly model cannot provide. It’ll aid you significantly when it comes to texturing.

Be generous with your IDs; you’ll be glad that you gave that bolt a different colour from that cylinder, because they have different metallic finishes. Plus, you can stack colour filters in Painter!


As you prepare to export your low and high poly for baking and texturing, export one set (low and high) of models in the form that you want it to be. Then, ensuring both the low and high poly variations are selected, separate the parts – it’s like you’re doing a floating diagram of the model itself – and export that.

Baking and Texturing

I used to bake in Substance Painter. While there is nothing wrong with that, I needed a visualiser for my cage once I began using floaters. Different meshes require differently sized cages. Marmoset Toolbag 4 was the perfect tool for that. You can preview and sort out your export options too!

I separated all of the different parts of my mesh into organised baking folders with their own dedicated cages. As mentioned earlier, I exported two sets of models; one as desired, and another taken apart. I’m going to bake my maps with the latter; this allowed me to observe the model fully as you could not notice the central cylinder at first. Now that I’m ready to bake and export, I select Normals, Normals (Object), Curvature, AO, and Material ID. I also bake at 8k to give myself some options later on.


With this stage of baking completed, I moved onto Substance Painter. As I was away from home during the entirety of this project, I did not have my material library with me. Luckily, Painter’s default shelf has plenty of options for me to work with. In my approach to texturing, I wanted to deviate from my references a bit and attempt to texture the pepperbox pistol as it looked when it was in use. 

My workflow was almost entirely procedural; proper layer stacking can do wonders for procedural modelling if you take advantage of it. You can go in and manually change things if it’s too procedural. It’s faster, and much more efficient than doing things by hand. I also strongly encourage using the various layering filters to blend your layers together. It just takes practice to understand every filter and get the hang of it. 

For different materials, I usually start off with a base layer that establishes the albedo, roughness, and metalness. There are two things I keep in mind when setting these up: surfaces are either metallic or not, there is no inbetween; and surface imperfection, not everything is squeaky clean. If you do this, you will set the base PBR properties of your model that you can work off of and come back to if you have to.


Going back to what I said about organisation: use folders as soon as you can. Normally, I would open up a workfile and immediate set up folders for different materials with their material ID masks applied. This helps greatly with evaluating your layers later, as you will need to turn certain folders off to see how others are looking. 

As I add details, I normally start off with a fill layer with the albedo and roughness channels on, and apply a black mask to it. Working with fill layers is a non-destructive alternative to normal layers. Using the black mask to control your layers is much safer if you suddenly have to undo actions. That, and smart masks.

Smart masks are a godsend. Painter’s default library has more than enough variations to assist with creating surface imperfections. Use them as a foundation, and add your own generators to suit your needs. I tend to name my layers after the masks that I used, just to help myself remember when I go back to it.

The Filigree

During this project, I ran into an interesting problem; the pepperbox pistol has a filigree pattern… and I don’t have ZBrush with me. Normally I would sculpt it onto my high poly in ZBrush, but since that wasn’t possible, I had to come up with an alternative solution.


The first thing I tried was Forger on my iPad. I ran into memory issues with that and eventually had to abandon that option. My second option was using purely Substance Designer. I was not a stranger to Designer, but at the same time, I know how long it would take me to make something so specific and concise. Eventually, I decided to go with Procreate and Designer. Crazy, right?

I had an albedo map of my gun, and exported that to Procreate. I then created a blank layer and hand drew my filigree using the brush tool in white and with symmetry. I then converted that into an alpha by adding a black layer underneath that, and brought it to Substance Designer as a bitmap. I used the Slope Blur Greyscale and Bevel nodes to create some indents and wear and tear, before converting it into a normal. I had to flip my normal map on the red channel as it wasn’t adapting to the lights properly.


I brought my normal map to Painter, and translated it to where it fit on my UVs, before masking out the rest of the map.

Toolbag 4 Set-Up, Lighting, and Post

When I texture, I usually open up a workfile of where I will be rendering my model. I’ll begin to put the model in, apply some texture passes, etc… I usually use 8k textures as I do a lot of close-ups of my models (besides, it makes your model look its best, right?). It’s usually a good habit to have as your textures do not always translate over as well as they do from Painter to Toolbag 4. This project was actually a good example of this as my textures in Painter looked drastically different from what it looked like in Toolbag 4 (it looked better in the latter). Switching back and forth between the two as you work is a good way to adapt accordingly and avoid issues later on. 


For my lighting, I followed an absolutely amazing guide by David Woodman for his Flare Pistol project. I opted for a more neutral colour palette, and followed Woodman’s lighting process by giving every shot a dedicated set of lights. However, I tend to be more reserved in my renders as I didn’t want to crush the blacks or whites of my renders and potentially lose detail. 

Now that I have my renders, I open up Adobe Lightroom and import all of them in. I’ve been using Adobe Lightroom ever since I was in high-school; it is my go-to program for colour grading and post-processing. This is where I start to push the blacks and whites of my renders, as they are what will become my final renders. I tend to work on one render first, create a Lightroom preset, apply it to the other renders, and tweak them individually if I have to. By creating a preset, I establish a consistent look and feel for my renders, and will make the overall project look cohesive.


Closing Thoughts

That’s pretty much it, really. The project was relatively straightforward, but it took me a lot of refining my pipeline to get my workflow to where it is. The whole project took roughly four days to complete, from the first Maya file iteration, to the final ArtStation post. Thank you so much for reading through my breakdown, I hope it helped you get a better understanding of my workflow, and hopefully help you with yours! Feel free to take a look at my ArtStation, I have other 3D work as well as materials there as well!