My name is Nicholas Hunter, and I am currently a 3D artist working in the training simulation industry. I’ve been making 3D models since late 2014 when I took a class at the University of Central Florida, and realized how much I enjoy the work. Since then, I’ve recently gotten my Master’s Degree in Interactive Entertainment at the Florida Interactive Entertainment Academy, (FIEA) and found a job in my career field. My job isn’t much of a creative outlet, so my nights and weekends are spent on personal projects like this Ornate AK-47. I made a whole lot of mistakes along the way with this project, and I’ve learned a lot from them. I’ll go over a good number of them, and I hope you can learn some things to save yourself time and headache in the process.
Selecting The Project
I want to make things that people enjoy looking at. To stand out from the rest, the project needs to be unique and well executed. I try to hold myself to these requirements when working on something for fun. A little over a year ago, I was working on an AKM rifle, and a Glock 17 pistol. There are literally hundreds of other artists out there with those on their portfolios, right? To stand out from them, I did a lot of research to find customized parts for each weapon, and spent a lot of time with ZBrush and its Live Boolean features – we are very close friends now.
I have a passion for meticulous detail. This has gotten me into some rough spots at school in the past, where I selected projects that are out of scope, and worked myself into exhaustion trying to meet the deadline… and then failing to do so. The AKM and Glock 17 are still unfinished; someday soon, they will get the bakes and texturing they deserve.
Why are they unfinished? Because I found something even more demanding of my time and sanity, Wesley Tippetts’ Ornate AK-47 concept art. After seeing this thing, how could I resist the temptation to model it?!
I looked through photos of ornate wheel lock guns for hours on Google and Pinterest, trying to find any that had elements used in Wesley’s concept. Eventually, I just asked him, and he led me to this decorated rifle. Later that day, I found this Heinrich Barella double barrel shotgun with a few other details on it as well. For the magazine and dog-spring cover, I searched through classic paintings of deer hunts and found works by Paul De Vos.
With modern tools, there are many ways to get something done. Ornate details can be sculpted by hand, assisted by alphas and the deformation tab in ZBrush, boolean operations, and all of that can get baked down from a high poly. Or they could be stamped on in Substance Painter after making an alpha and then use anchor points to drive generators. Some of these options require UVing a base mesh for the high poly, others can be done with projection, and some can wait until texturing. Selecting your approach depends on how much time you have, destructive vs non-destructive workflow, and what the end goal for your mesh is.
From the start, I knew this gun would be looked at from every angle. I would need interesting surface features where possible and as much topology as necessary to capture all the details. Because of this, I didn’t focus on dense topology in any specific area but rather made all the topology necessary to capture the silhouette of the weapon from all angles. Considering the curvature of this weapon and its number of parts, I knew the triangle count was going to be high – the final count was just over 40k.
Diving In Modeling
I am always intimidated by my projects. The most difficult part of any project for me is to actually get started – I overthink the process and get demoralized when things aren’t going as expected. But all of those feelings disappear when I start moving around verts and remind myself that control + z is always there. With little more than the concept art to work with, I opened Maya, imported Wesley’s art as an image plane, created a cube, and started working. Looking at the concept and having a bit of knowledge of how modern and antique guns are built, I broke down the rifle into its basic parts and modeled them individually. Making it even easier, complicated forms were broken down into their basic shapes, then booled and dynameshed together in ZBrush.
The final blockout ready for more complex boolean operations:
It’s much easier to model things like the front sights if you break them down into their base shapes and take advantage of booleans and dynameshing.
Most of the flash pan and wheel housing is symmetrical, but the screw tab on the left isn’t. Following the same concepts as I mentioned above, I just made a new mesh for the left screw tab and merged it with the rest of the wheel housing later.
With the AKM Rifle project I mentioned earlier, I not only had a good set of dimensions for the width and other proportions for this project, but I also had a couple of parts I could reuse. I decided the rear sight was too angular, so I made some curvy shapes and used them as tools to boolean out new cuts to the base of the sight.
After finalizing the proportions of the side plates and thinking about how all these parts would fit together in the real world, I booled out the depth and ejection port, then cleaned up the topology and creased the edges. This allowed me to make fine adjustments later on for how deep I wanted to sit the dog-arm, spring, and flash ZBrush for sculpting.
Early on, I worried a lot about how I was actually going to do the inlay. Should I paint the pieces on by hand in Substance Painter, or into the UVs with Photoshop? And then it hit me – booleans, duh. Using live surface and quad draw, I traced them out onto the stock, then extruded in and out. I creased the edges, smoothed the whole thing, and brought them into ZBrush to run a subtract and intersection boolean operation. The stock you see here is the final result after cutting away all the parts for the side plates, upper receiver, trigger guard, and bolt carrier.
The concept image is an orthographic shot of the right side of the weapon, so I had to get creative with everything else. And, I couldn’t really make out all the fine details of the wheel housing, due to the resolution of the image. To get something nice looking without having to sculpt by hand, I chose to use an ornate insert mesh pack. I had to do some cleanup of the insert meshes so that they would close holes and dynamesh properly. But once I did, they were much more flexible in their application of subtractive booleans and easier to deform using the matchmaker brush, for the curved surface of the wheel housing and charging handle.
To achieve the contiguous waves and ripples in the rail, I box modeled the base shape, smoothed it, and then laid out the UVs without splitting any of the edges. I then doodled a line pattern in Photoshop and used that as an alpha to project a mask in ZBrush. From there, it was a matter of using the inflate slider and some polishing.
The mural was a challenge and would have been a serious pain if I didn’t have all the reference photos. On the real world gun, each side has subtle differences. Sure, each side has a deer and a dragon, but some plants have extra leaves, and shading might be different. To save myself time, I chose to just mirror the 3D version, apart from the eagle’s head and crown.
In the blockout phase, I made a rounded shape that would serve as the base for this part, while paying attention to the fact that I would need to eventually extrude and pull out some parts for the silver caps on either end. I then smoothed this shape and UVd it. I took those UVs into Photoshop and laid out the reference images. This is where things started to suck. I had to use a mix of puppet warp and content aware tools to straighten out and blend all of the reference photos so they appeared flat. I moved them into the UVs and began tracing the masks over them.
The first mask (in all black) was used to extract a shell in ZBrush from that base shape. And by some absolute miracle of Pixilogic’s genius, the UVs were preserved in this process! That meant that I could go back into photoshop and trace over the finer line detail, which resulted in the second mask (line drawings). I brought that into Zbrush, masked by alpha, then played with the inflate and surface noise tools until I got something I liked.
The magazine was a very inelegant process, that I had to brute force. First, I took the concept art, and with some filters and levels adjustments, I made a mask that I projected into the base shape of the magazine within ZBrush. I then, very lightly, used the inflate tool to get some shapes down. Once that was done, I used the 3-tone, hand-drawn alpha, as a height mask to offset the inaccuracies of the first image-based mask. From then on, it was a matter of hand sculpting everything, and breaking all the pieces apart so that they could be used for an ID map bake. That process is best demonstrated in Mike Pavlovich’s video, Chest Armor Breakup. The backgrounds were made in Maya with box modeling and creasing, to create that nice contour line and depth from the concept image.
Because this weapon is so curvy, non-planar faces were a lot to clean up, as well as closing off edge loops for controlling polycount. Be sure to check your surfaces from extreme angles and manually split quads that are defaulting in the wrong direction. In my experience, they almost always default in the wrong way, so give it extra scrutiny. You don’t want your silhouette to be ruined.
It’s pretty embarrassing to show you my UVs, but I guess I may as well explain the logic behind them. Because this weapon isn’t symmetrical and I wanted to bake AO, none of my UVs are mirrored. On top of that, I wanted to create near-seamless wood grain. So, I chose to encapsulate as much of the stock and foregrip into a single contiguous mesh as possible. I tried breaking off the plates, barrel, tail cover, and emblems into their own submeshes, but their topology wasn’t looking good where they intersected with the wood. This approach also required a lot of topology for each emblem, so that I could capture the silhouette of the shape properly.
My final choice resulted in a large, odd-shaped UV shell for the stock. This UV shell set the texel density of the entire project, resulting in a lot of wasted space for the magazine and foregrip materials. I could have put the dog-arm, wheel housing, and other sub-meshes into the magazine UVs to fill space, but it wouldn’t have made a difference in texel density, because I chose to keep the stock and side plates together in a single mesh.
I pushed my highs and lows into Marmoset Toolbag 3, set everything to mikk/xnormal space, and built my baking groups. I really can’t give the team at Marmoset enough praise for this software. Being able to paint cage offsets and skewing is a huge help in the process. And with recent updates, now we can finally bring in our own cage? Fantastic.
Once all my bakes were done, I took them into photoshop to clean up any small errors. A great way to check for errors in your bakes is to plug them all (the bakes) into your low poly mesh material in TB3, then crank the metallic to 1, and the roughness to 0.2ish. This will produce a cloudy-mirror finish to the surface. If you see any irregularities, it’s most likely one of a few possibilities:
- Make sure your high poly mesh has enough topology. Decimating it too much will cause artifacts.
- Make sure your high poly mesh has no normal map plugged in. Any normal map in its material will be transferred in a bake (crazy, right?)
- Some edges in the high poly may be hard/soft, and not playing well with the other surrounding edges. I normally harden all of the edges in Maya as an easy fix.
- Sometimes ZBrush decimation will fail to hold very sharp corners that are built with one edge. This typically comes from sharp corners of boolean operations. You can counter this by dynameshing / Zremshing the mesh, and projecting the sharp detail back in before you decimate.
The last error is what’s causing the chipped flakes in the render above. Because the inlay and wood have to be perfectly flush with each other, dynameshing and projecting resulted in obvious grooves between the 2 high poly meshes and running those operations at higher subdivisions and iterations were either crashing ZBrush or taking hours to complete. It was faster to just use the decimated ones, and fix the errors in photoshop with the spot healing brush.
Texturing in Substance Painter
Before this project, I knew a fair amount about Substance Painter, but I had never really taken a deep dive into building materials from the ground up. To prepare for this part, I purchased two tutorials: Chamfer Zone’s Ultimate Weapon Tutorial, and Simon Fuchs’ Handgun Tutorial. In addition to that, I watched just about every video Allegorithmic has on youtube, since probably mid-2017. Yes, that took a lot of time. The wood I built is a blend between the two tutorials, and everything else is just attention to detail, and applying what I learned about the software. I will say, the difference between 4k and 8k textures is night and day, and exporting 3 materials at 8k is going to take you the better part of 2 hours, so find something else to do in that time.
Beware of compression! My initial renders of this project had a solid black background and no alpha on the original. When I uploaded to Artstation, the compression made for some incredibly ugly pixelation where my mesh met the black background. I went back, changed some lighting, exported TGA with alpha, and created a background with a gradient and some lens dust noise. This helped conceal the compression and provided a less distracting contrast between the subject and the background.
This rifle represented everything I wanted in a personal project: hard surface, ornate details, sculpting, weapon/prop. I learn more with every project, and this one taught more than anything before. I got a chance to test baking methods, the limitations of UV islands and smoothing groups, where contiguous meshes work best in low poly modeling, and all the subtle nuances with tri-planar projection in Substance Painter. I’m stepping away from production modeling for my next few projects, and focusing on some 3D printing. It’s going to be so nice to not worry about retopo for a while!