Crafting Intricate Flintlock Pepperbox Pistol in 3D
Stanislav Buhaiov shared the work behind the English Manually Revolved Seven-Shot Flintlock Pepperbox Pistol project, showed how he stayed within 10,000 triangles, and explained how he created natural-looking wood.
Introduction
Hey everyone! My name is Stanislav Buhaiov, and I've been working in 3D art for around four years. During this time, I've worked as a Hard Surface/Weapon Artist on projects such as Ready or Not, Microsoft Flight Simulator, Call of Duty: Warzone Mobile, and several other unannounced projects.
Before entering the game development industry, I worked as an engineer. My knowledge of materials and how they interact with one another has helped me develop a better understanding of the texturing process. I also worked with CAD modeling as an engineer, which turned out to be a significant advantage when creating game assets. In particular, this experience helps during the blockout stage, when you need to establish the main shapes of a weapon and check its proportions.
Recently, my friend Danylo Mykhailov started a series of challenges on the Weapon Group Discord server. The Flintlock Pepperbox Pistol was the first one.
By the way, a new challenge featuring the MP Jelen (1991) is currently underway. I'd like to invite everyone interested to join! It's a great opportunity to test your skills, showcase your work, and receive feedback from an experienced artist.
Flintlock Pepperbox Pistol
This asset was an interesting challenge for me. It's quite different from the work I usually do for my portfolio, as I mainly specialize in modern firearms.
This time, I had to work with a combination of different materials: worn metal, wood, and even flint. My main goal was to reproduce the references as accurately as possible and achieve realistic-looking materials.
I didn't put together an extensive reference board for this model. I only had a few views of this particular pistol and some similar models. However, that was enough to get started.
Blockout
The first challenge I encountered was determining the pistol's approximate dimensions. I had to do some additional research to understand that 32-bore does not mean .32 caliber.
The bore-gauge system is based on the number of lead balls of a particular diameter that can be cast from one pound of lead. Accordingly, 32-bore means that 32 balls of that size can be made from one pound of lead.
According to this article, 32-bore corresponds to approximately 0.505 caliber (12.8 mm).
Using this value as a reference, I started the blockout with the barrel and then aligned it with the reference image used as a background. It's worth noting that these were approximate dimensions rather than precise historical measurements. The entire blockout stage was done in Plasticity.
I wasn't aiming to create a fully functional pistol with detailed internal mechanisms. As a result, some parts intersect with one another, while others are missing entirely.
I also created only a basic shape for the flint, which I later refined in ZBrush.
The most challenging part of the construction was recreating the flintlock mechanism. Additional references helped me understand its design and how its several moving joints work together.
High Poly
I usually use ZBrush for high-poly modeling. In the weapon creation pipelines I'm most familiar with, ZBrush is primarily used to refine forms and bevels rather than create large amounts of small surface detail. Bevels are exaggerated slightly so they read better after baking.
The shape and width of the bevels also depend on the material. For wood, plastic, and rubber, bevels are generally wider and softer, while on metal parts, I tend to increase their size more conservatively to preserve sharper transitions.
However, for this asset, I decided to step away from my usual approach and add more surface detail, including chips, worn areas, and other imperfections.
On the grip, I added damage along almost all the edges using the TrimDynamic and TrimAdaptive brushes.
I applied the same approach to the screws. They are subject to mechanical damage every time the pistol is disassembled and reassembled, and their small size and contrasting shapes make them quite noticeable on the model. Even minor imperfections help make them look more convincing.
As I said previously, I already had a base shape for the flint created in Plasticity. I imported it into ZBrush and refined the form to bring it closer to the references.
Game-Ready Modeling
The challenge required the model to stay within a budget of 10,000 triangles. I knew from the beginning that I would have to bake some elements down.
When creating game-ready assets, it's important to allocate geometry according to visual importance. Less noticeable details that don't affect the silhouette and are barely visible from the in-game camera can have their polygon count significantly reduced. Some of them are better represented through textures instead.
On the other hand, I allocated more geometry to visually prominent details. This helped avoid noticeable angular edges on rounded shapes and preserve a smooth silhouette.
The same principle applies to any elements that contribute to the model's outer contour. If a detail affects the silhouette, its geometry should be preserved even when working with a strict polygon budget.
UVs & Texture Sets
I take a fairly straightforward and conservative approach to UV mapping. I divided the model into three texture sets, each corresponding to a distinct functional part of the pistol: the trigger group, frame, and grip.
In many games featuring a gunsmith system, players can swap individual weapon modules. In such pipelines, it often makes sense to organize objects and texture sets according to their functional purpose and position on the weapon.
I mark UV seams in Blender and then pack the UVs in RizomUV. It produces a high-quality result that was more than sufficient for this asset.
Sometimes, however, I need to use the available UV space more efficiently. In those cases, I also use the UVPackmaster add-on for Blender.
The resulting texel density was approximately 80-90 px/cm for each texture set.
Texturing
Texturing is my favorite part of creating 3D models. I textured this asset using the Specular/Glossiness workflow.
I usually start with the base materials and separate them by color, since even materials of the same type can have noticeable variations in hue. For this, I use a baked Object ID map to quickly isolate different parts of the model and control their color variations.
Next, I add AO and edge highlights to emphasize the forms and enhance the sense of volume. I also use noise and small surface details in the normal map.
Subtle surface variations help break up uniform reflections and make the metal elements look more natural.
The references clearly show darkened areas on the barrels. These could be caused by patina, oxidation, or other changes to the metal surface.
I used these observations as a basis for creating corresponding color variations and adjusting the reflective properties.
I won't go into every texturing detail, but a significant part of the work involved adjusting the Specular values. The interaction between reflectivity, surface color, and lighting plays a major role in how a material is perceived.
Tempering Effect
I'd like to highlight the work on the tempering effect, the characteristic color variations on the metal surface.
I used a wide range of color variations here. My approach was to create many different variations first, then gradually remove unnecessary ones, reduce their intensity, or combine them.
As you can see, I made extensive use of stencils. Reproducing the exact pattern from the reference procedurally would have been quite difficult.
Engravings & Markings
To reproduce the engravings and barrel numbering, I generated the required alpha using AI.
Then, I manually applied it to the model and refined the result, integrating the details into the overall texture.
I reproduced the pattern on the frame using the same approach.
Wood Material
The most interesting part of texturing for me was creating the wood material.
My approach was to establish the main wood pattern first: the grain, its direction, and the overall surface structure. Only after that did I move on to additional layers, such as varnish, imperfections, chips, and edge damage.
This workflow allows me to build a convincing material foundation first and then gradually introduce signs of finishing and wear.
Creating an interesting yet natural-looking wood pattern on the grip was challenging. To make it less uniform, I used several techniques.
For example, some grooves have different depths, while certain areas are darker than others. These subtle variations help avoid an overly repetitive texture and make the surface more visually interesting.
Glossiness Map
I'd also like to highlight the Glossiness Map. I haven't discussed it much so far, even though I consider it one of the most important maps in my texturing workflow.
I try to give each material layer its own glossiness characteristics. This helps distinguish different surface types and makes their interaction more convincing.
Besides adjusting the glossiness values themselves, I experiment with layer blending modes. It's important to ensure that the upper layers don't completely cover the details underneath, but instead complement them while preserving the overall material structure.
Final Texture Polish
Another stage I haven't mentioned earlier is the final texture sharpening pass. When the textures are nearly finished, I apply a Sharpen filter separately to each channel. Depending on the material and the specific task, the settings can be shared across several channels or adjusted independently.
Sharpen helps make small details crisper, while the ability to control its intensity for different channels provides more flexibility when fine-tuning the maps.
Rendering
Although rendering plays a major role in the final result, it's personally one of my least favorite stages of asset creation.
For this project, I used a plane with an emissive map as the background. This created a pleasant rim light along the model's silhouette.
The main lighting source was the default Soft 4TubeBank 2BlackFlags HDRI from Substance 3D Painter. For additional lighting, I used a directional light and several omni lights.
To match the lighting in the references more closely, I also added a rectangular omni light with an orange tint. It creates warm highlights on the upper parts of the model.
I used the same lighting setup for all the other renders. For some of them, I removed the background plane with the emissive material and kept only the black background to make the model stand out more.
Final Thoughts
Overall, this project was an interesting challenge and a great opportunity to work with materials I don't use that often.
The wood was particularly enjoyable to work on. I really like creating wood materials, although I still don't have extensive experience with them. This project helped me improve my skills significantly and experiment with new approaches.
Thank you for your attention! I hope you enjoyed reading this breakdown!
If you have any questions about this project or anything else, feel free to reach out. I'd be happy to answer them.
You can find me on ArtStation and LinkedIn.