Meysam Khani shows the workflow behind the Liquid Pump Machine Gun project, explains why Fusion 360 was chosen for modeling, and talks about the intricacies of making weapons for video games.
Hi, my name is Meysam Khani and I am the Lead Hard-Surface Artist at Offworld Industries. I am in charge of creating weapons, equipment, and vehicles.
I got into 3D when there was no YouTube and the internet was just dial-up, so I would spend hours finding books online and would wait days for them to get downloaded.
I started my career as an Architecture Visualization Artist, so basically creating renders for architects. Then I decided to pursue my passion a bit further and in doing so, I moved to Malaysia and got a Bachelor of Animation. Right after graduation, I was employed in Codemasters as an Environment Artist and later on moved to the Vehicle Department. I've created many vehicles for games such as F1 2014, F1 2015, F1 2016, Grid 2, Grid Autosport, and Dirt Rally.
The Liquid Pump Machine Gun Project
The Liquid Pump Machine Gun was created as part of a project for a mentorship that I was doing at the time with Ethan Hiley. The main goal of this project was to create photorealistic textures using Substance 3D Painter.
I saw this concept on ArtStation from Christian Pearce for Mortal Engines (2018) and really loved it, I felt it had a good variety of materials for me to work with, such as metals, wood, and fabric.
So the first step is to gather as much reference as you can. This is a preview of all the references I gathered specifically for this project. We also have a ton of weapon references that we use every day at work, they are very high-quality photos of different kinds of weapons.
Before doing any 3D work, I felt that the weapon could be balanced a bit further proportion-wise, so with the help of Ethan and with the use of real-life weapon references, I replaced and altered some parts in Photoshop. The Drum magazine was added later on to make the reload mechanism more believable
The model is all done in Fusion 360. I just make sure I export one lower version to use in Maya before going all the way to high poly. The non-destructive aspect of Fusion helps us to make changes even when we have finished the model. We need to export the low poly version from Fusion to MOI 3D to be able to get some clean topology.
Later on, I exported the high-res version to ZBrush to add some edge damage to the metals, some woodwork, and to add the welding for bake. I went over almost all the edges with the Trim Dynamic brush using a pen and tablet to break the clean straight lines a bit. Just by changing the brush size and using pressure, you get some nice results.
The other part, which I worked a bit more on, was the barrel, I added some subtle dents on it to make it look a bit old and weathered.
For games nowadays, we can use more polycounts compared to previous generations, but we still try to keep an eye on the count. So the whole weapon is sitting roughly at 55K. We also need to be smart about the places we add micro details on the geo, for example, with the receiver of the gun being where the player can see all the time up close, that’s where we want to have as much of the details modeled as possible. But for something like a barrel or even the back of the stock, we can rely more on the bake. For this gun, because of the shape and size of the barrel, I had to add more details to the barrel too.
The bag is done in Marvelous Designer, I just love how easy it is to use, and the result looks great. Again, I started with finding some backpack references that I liked and also looked into how the fabric is sewn for a backpack because that is how we set it up in Marvelous as well.
The next step is one of the most important – to unwrap the UV for the weapon. This is a critical stage in weapon creation because it will determine how much detail you will get out of your textures. You need to be really smart with your UVing. Try to mirror as much as possible, especially for weapons, since players see the left side almost 85% of the time. Even if there is a specific detail that needs to be different on the right side, maybe fake it out by cutting out a portion of geo around that detail or even get a floater there.
In production for a weapon, you usually use 3 to 4 texture pages, sometimes even more if you are planning to have modular pieces. So what we usually do is have a 2k texture page for the receiver, a 1k map for the stock, the barrel, and the sight each. And probably a 512 for the magazine. For this design, I had to make the barrel a 2k as well, since it is a big piece and is in the player's view. I assigned a separate texture page for the backpack.
About the Normal Map and UV cuts, I know there are a lot of methods out there. What we do is try to have as few UV islands as possible so we can have better and cleaner UV Maps which will help to have better texel density for our parts. So the smoothing groups in Maya will look broken in some parts, but in the final render, when we add the Normal Map to the model, it will be nice and clean.
The only reason my receiver is not mirrored fully is that it is completely different from the other side. Here are the receiver and the barrel UV Maps.
When starting the texturing process, I always find references that I like for the part I am going to start with and try to get results in Substance 3D Painter. The workflow we are using in the program is like what we used to do before with Photoshop. With Substance 3D Painter, what you need to be careful about is not to get lost in all of its tools and generators and end up using them for everything. Sometimes, you need to use real-life textures to get a good result. We use lots of grunge masks to get a specific detail that we are looking for. For example, if you want to add subtle scratches, you can use a grunge mask that is created from metal and then start removing the ones that you don’t like. The same goes for roughness variation, dirt, or anything else.
Here is an example of the workflow that I use when texturing. So I start from bigger shapes and details and add everything else on top.
I used the base layer from Substance 3D Painter materials to get the values right and added a tileable Bronze texture (albedo, roughness and normal) on top to get some natural details on the base. I have also used 3 normal textures to get some metal micro details. The next few layers would be hand-painting details for edge discoloration and general dirt.
The welding details are from the high res bake, but I added another set of details in Substance 3D Painter to give it a bit of sharpness, also added a layer to make the center of the welding a bit lighter in color. The heat treatment is just hand-painting colors and blurring them out layer by layer. And one of the last layers is the grease and the fibres that would get stuck on them.
Bronze was one of the harder metals to get right. I think I tried two or three versions before settling on this one. I think my mistake was to try to get the metal right without enough Bronze references. The workflow is the same for almost all the other surfaces. I always have a tileable texture for the base and add details on top of them.
We use a lot of Grunge Maps to get specific details on the metals. For example, to add some dust fibers, we start with the Grunge Map that has that kind of detail, then add levels on top and adjust the setting until you are happy with the result. Lastly, using the paint layer, remove from the mask what you don't like.
When I was confident I was 90% done with texturing, I took the asset to Marmoset and set up some simple lights to see how the whole asset looked. I felt it needed a bit more Steampunk feel to it. So in Substance 3D Painter, I added a fill layer, used a Grunge Map, and added some brown color variation to the main metal surfaces. I used the same layers on the receiver metal surface, but I made sure to give some different values as I wanted the barrel to be a bit brownish in color.
For lighting, I try to keep the light counts as low as possible. In this case, I just used the HDRI that comes with Marmoset and added a few lights in the HDRI. I normally choose an angle and tweak the lights to get the result I like. When working on weapons, I am looking to get some nice highlights on the edges.
With the camera, I changed the Field of View to 6 to remove the perspective and get more details in the view, I also added some Chromatic Aberration. For the Post Effect, the biggest change was the Tone Mapping that I changed to Hejl. Also, I added a bit of contrast using the Curve.
Gather a lot of references, do not try to make a texture for a surface from memory. The references you use do not need to be exactly the same piece you are doing, so if you are texturing the barrel of your weapon, find references of the barrel you like and which look interesting even if they are from completely different guns. You just want to add interesting details to your texture.
Also, if you are new and have not done many weapons, start with smaller assets that have few surfaces on them, maybe some weapon attachment so you can focus only on one or two surface materials.