Duard Mostert talked about his Thompson Gun made with ZBrush, 3ds Max, Substance Painter, and Toolbag within CGMA course Weapons and Props for Games.
For me, finding a good reference and building a good reference board is the most important step in the process. It will define the course of your whole project. In my case, I decided to go with the 1928 Thompson. I chose the Tommy Gun because I wanted to push my texturing (and it’s a really cool gun) and I knew that collecting the right reference would be vital. In the texturing phase, my reference board really helped by getting a great look for the wood on the stock and also the texturing on the receiver and frame group.
After reference gathering, I start on the block out. I primarily focus on the big shapes making sure proportions look good, the silhouette is pleasing and that it looks good in the first person. It also helps to identify parts that will need to be animated, problems that might come up and also early on give you an idea of the art direction that you will be heading in, especially if this weapon will be used in a first-person environment. At this point, I do not focus on the small details and topology, that way it makes it really easy for me to iterate and change shapes with ease. Focus just on the big shapes.
After being happy with the block out, I move to the high poly phase. I like to “build” the weapon the same way you would assemble it in real life, this will just make for a more convincing low poly. For my high poly workflow, I like using a combination of 3ds Max and ZBrush. I set up all my boolean shapes in 3ds Max and then send it all to ZBrush. With the release of 4R8 you now have the live boolean tool which is great for this workflow. The polish feature is really handy to get nice soft edges without bothering about topology (I like a bit more of a softer bevel on my high poly models because it will make for nice reflections on the normal map, but don’t go too soft otherwise you will have a gummy bear looking model). You can also do some sculpting if you want to do some custom work on it.
When you are happy you can just decimate the mesh and send it back to your preferred software solution. I tend to stay away from any custom detailing in the high poly phase (things like text, decals, and scratches) because it’s really easy to add those details in Painter later, making it easier to iterate on those details down the line.
Having good UVs will just make your job so much easier later on. For this project, I used 3 UV sets: 2048×2048 for the body, 1024×1024 for the drum magazine and a 1024×512 for the sling.
When it comes to packing UVs, I like doing it by hand, I always feel I learn something new and gives me total control of the layout. I first identify the shells that I want to mirror/stack and set them aside. When you are done packing you can just align and scale those shells to its counterparts and offset them outside of the 0-1 space. For this project, I identified the geo that will utilize mirrored UVs and then just mirror the geo itself after the final pack so that I don’t have to worry about getting the shells to align properly in scale and rotation. The objects that will be closer to the camera I tend to give a bigger resolution to the other shells just to make it look a little bit better in game. Unfold 3D is a pretty neat software solution for these kinds of jobs especially it being able to take a UV island scale and apply it to another island and also identifying similar UV islands and selecting/stacking them (if you are working with a ton of geo). TexTools plugin is also handy, especially to set smoothing groups to UV shells.
For me, a texture makes or breaks a project. I like to tell stories with mine, I want the player to be able to feel like there is a story behind what the character has endured with that weapon, that there is a “bond” so to say. I use Substance Painter for all texturing jobs. When starting off, I like to break things up into groups, start defining the metals and non-metals with color and roughness that define them. For a base I like to use textures that I think will work well, CG Textures has a great library that will make a solid starting point. When it comes to wear and tear, generators are a great starting point but don’t just leave them as is, this will give your textures a procedural look.
Build yourself a library of custom alphas that can help add some custom wear and break up that procedural look. Keep wear only where it makes sense, if you aren’t sure, your texture reference will help you. Keep wear subtle! The amalgamation of all your slight roughness changes, wear and tear etc. will make for a great looking texture in the end.
For details like emblems, logos, text and whatever else you fancy, I like to use decal sheets. Illustrator is my best friend here. For logos and emblems that you can’t find easily or only find low-quality pictures of, you can use the pen tool and a combination of other tools Illustrator offer to get high-quality versions out quickly. I also have a library of decal sheets so I don’t have to recreate those decals on every project.
When it’s time to submit the asset, I separate all the parts that need to be animated, setting the pivot at the point of rotation. I triangulate the mesh at export to make sure the shading is the same in all engines.
Marmoset Toolbag is great for those portfolio shots. I must admit, I’m not the best at setting up lighting but I normally shoot for environmental light that has some blues and reds in them and then setup up custom lights to highlight the surface details and a rim light that gives nice reflections along the silhouette. I do final touchups in Photoshop.
TIP: To get the most out of your texture details in Toolbag, set the texture filtering to 16x and disable mipmaps, that way you will keep your details crisp!