Hello there! My name is Ben Johnston, and I am a freelance weapons artist from the UK.
My 3D journey started about 2 years ago, where, like many, I stumbled upon a trailer for a blender course revolving around a rather famous doughnut.
Since then, 3D has become an obsession, with my focus becoming games art and then, most specifically, weapons art.
I’ve had the pleasure of creating a series of modern weapons for an unannounced project, the most recent I will breakdown in this article which I hope you will find useful!
Like any project, the beginning starts with researching and collecting references for the weapon.
As the Type 20 is a very new rifle only in use by the JSDF, finding references was quite challenging.
With many weapons that have either been in production for a long time or are available to civilian markets, youtube, google images, manufacturer websites, auction pages, blogs etc., are filled with great references, which wasn’t the case this time.
I was able to find some pictures on google images and an official demonstration video by the JSDF on Twitter; however, the best reference came from actually translating the name from English to Japanese and stumbling upon a Japanese gun enthusiast blog.
All of this went into a pure ref board to use whilst I was working.
Another important part of this process is researching the dimensions, calibre, moving parts (adjustable stock, releases etc.) and materials. All of this information will come in very handy when modelling.
From my research, I had the length of the rifle and a side-on shot, so I was able to import this into Blender and scale it to help me with modelling.
I first started with the bullet. Knowing that this was a 5.56mm, I was able to find detailed proportions online, which I then used to create the barrel and, based on this, blocked out the rest of the weapon.
Everything is kept very simple at this stage as most of the work will be done using booleans in ZBrush for the high poly and blender for the low poly.
Once blocked out, I created booleans in Blender to get the main shapes and preview these to make sure there won’t be too much change needed when I move over to ZBrush. A convenient add-on for booleans in blender is bool tool.
This automatically moves all booleans into a separate folder, applies a wireframe to them and allows you to apply the boolean operation using a shortcut.
It is essential to stay organised when working, so I make sure everything is named correctly and organised by folders which bool tool helps tremendously with.
When I am happy with the booleans, I mark edges with creases and apply a subdivision modifier to have a mesh that will dynamesh nicely.
Whilst modelling, I stay aware that I will need to use subd and creases, later on, so the topology has to have decent edge flow so I don’t end up with a bad looking high poly.
Moving over to Zbrush, I used dynamesh and then imported my booleans.
When dynameshing, you’ll have to pick a resolution to use. The larger your mesh, the higher the resolution will need to be to give a good result. It’s quite clear to see when you’ve picked too low, so sometimes, this requires a little trial and error.
It’s then a case of applying the booleans, dynameshing again, then polishing and masking out areas that I do not want to be polished.
After this, I decimated the mesh and brought it back to Blender. This is an iterative process, and sometimes it may require you to go back and forth to get the best result.
It’s always important to make sure edges are a lot softer than they would usually would be in real life, as these will give better results in your intended engine.
This is a very simple task of applying the booleans in Blender and simply cleaning up the topology removing unwanted vertices and edges.
During this stage, I make heavy use of Blender's knife tool to create a new topology. It is not necessary to connect up every edge by hand, as a triangulate modifier can do a lot of this for you.
Afterwards, I mark seams and UV unwrap, splitting the meshes between three different texture sets and then straightening, scaling UV’s (depending on how close to the camera they will be), mirroring and packing.
It is also important to note that you should keep texel density consistent when working with multiple textures sets. You can do this in Blender using an addon called texel density checker.
Afterwards, I set smoothing groups by UV’s (this will give the best result when baking) and export them to Marmoset.
Now onto personally my favourite part of the pipeline, texturing. This is an opportunity to really tell a story and bring life to the asset. However, before I jump into substance painter, I have a few extra steps to help me during the process.
First of all, I will copy my original reference board to use it specifically for texturing and begin adding new images. Many different weapons share similar manufacturing methods and materials, so it’s fine to get references from other weapons as these will age and weather similarly.
As mentioned before, the Type 20 is quite a new gun and not available to the public, so most images are display models that haven’t been used extensively. AR-15 style guns made up a large bulk of my texturing reference here. Apart from google and youtube, here are a few of my favourite sites for finding references.
- Morphy's - https://www.morphyauctions.com/
- Days - https://www.durysguns.com/
- Royal Armouries - https://collections.royalarmouries.org/#/objects?search=glock&sort=relevance
- Flickr Album - https://www.flickr.com/photos/ecprevatte/page3
I also set up a marmoset scene for look dev, just using a basic HDRI and one key light to bring out the textures. In substance painter, I also use one mesh of the rifle and an exploded mesh to easily paint in difficult areas.
Another thing to note is that in substances painter, I use the ACES colour space. The below video does a great job of explaining why to use this and how to set this up.
When texturing, I use the principle of going from big to small details to work in a logical order and make sure my base material works before I start detailing.
To get a nice base material, I think about what will cause variation in my colour and roughness, such as grease/oil stains, oil transfer from being touched by the user, wear, treatment to the material (i.e. anodization or oxidization on metals), rain, sun damage, dirt/dust etc.
To create my base materials, it’s usually a case of layering grunges and generators (though these will need breaking up due to how uniform they can be) on top of each other to get the base look down.
The below image of the Type 20 stock/cheek rest is a great example of just how much variation can be going on when looked at under a strong light.
Here you can see all kinds of smudges and colour variation on the smooth plastic of the stock and even spots where the original colour has begun to wear away, and we’re left with much lighter, less saturated areas.
I used three layers on top of the base layer, and noise blended together to get this effect of smudges and light wear.
I also want to note here that feedback was vital in creating this material. Originally, I went completely in the wrong direction, and I was able to fix this due to feedback.
Having a good base to work with where I have got the larger repeating details down makes it very easy to go in and detail in the form of dust, dirt, scratches, oil, etc.
When detailing, I use a lot of stencils that either I have created myself or bought online and are a fantastic way of creating complex details. Rick Greeve has a great video on stencils which I’ve linked below.
To make sure there’s enough variation going on in each channel, I tend to overlay grunges on top of the hand-painted parts in the mask, or if I need even more variation, I will mix between two folders, each with two different colours and roughness values being masked out in them.
Picking out specific details on references is a great way to give your gun life. For instance, on the reference we looked at above, you can clearly see long horizontal scratches from the adjustable stock being extended.
Adding this detail also lets the player immediately know what the function of this stock is and gives an extra amount of reality to the weapon.
Another detail I added was carbon build up after seeing the below image where build-up had occurred around the upper receiver and handguard. Again, adding details like this can really add storytelling and bring life to the piece.
As you can see, these details were added to my gun.
When coming to rendering, I first thought about how my scene would be set up. Looking at real-life photography can be super useful for this.
I came across this photo that ended up being the basis of how I wanted my render to look.
Although the composition and lighting aren’t so great, the blue background and clear acrylic stands provided me with enough inspiration to get started.
I quickly created the stands and a basic shader in marmoset and got them into my scene. I stuck with a very simple three-point lighting setup along with an HDRI to give some neutral lighting.
For most of the renders, I used a 150mm lens. Using a high focal length on a subject like this gives quite a nice result as it flattens the background and helps your subject stand out. I also make use of marmosets built-in post-processing tools.
This was the initial plan for the renders; however, playing around with the composition and background, I came up with a few different renders, so it’s always a good idea to play around with ideas.
The last step I take is bringing my render into photoshop. No matter how good you think your render looks, taking it into photoshop can do a lot to bring it to the next level.
Even though a lot of this can be achieved using marmosets post-processing settings, I find it far easier to do this in photoshop, especially with the use of opacity and layers.
And that’s that! Thank you for taking the time to read my article, and I hope it was useful in some way!
You can check out more of my work on Artstation:
If you wish to stay up to date with our published articles, get feedback on your work, help others, or just want to hang around with us, and the people in these articles, please join our Discord!