Sebastian Ujhazi shared his hard-surface workflow when working on guns: modeling, texturing, and presentation.
Intro
My name is Sebastian Ujhazi, and I am a 22-year-old hard-surface artist from Osijek, Croatia. I am currently working on Serious Sam 4 at Croteam, and I also collaborate with Dekogon. My first encounter with 3D happened in 2012 when my friend and I were trying to make a game in Unity. I got introduced to Maya, but I didn’t really pick up the whole 3D thing until 2017 when I decided I wanted to do this for a living. I quickly found out that weapons and hard surfaces were the way to go for me.
Modeling
With every project, I start by collecting as much reference as I can find and at the highest quality. I get those into PureRef and arrange them to my liking. I also try to find high-quality videos of the objects on Youtube, mostly disassembly videos when I’m doing guns.
In most cases, I start making my assets with the target polycount of the low poly in mind, which means, if I know a cylinder will have 16 sides, I give it 16 sides right off the bat. That way when I’m finished with the high poly, all the low poly needs for finalization is a bit of clean-up. I use a combination of classic sub-d modeling on simple parts and creasing + ZBrush (dynamesh and polish) on more complex parts that would take more time to do in sub-d.
It works by creasing all the hard edges of the mesh and then subdividing. This way the round parts become rounder and hard edges stay hard. If we were to bring the mesh into ZBrush without creasing and subdividing, we would get banding on areas that are supposed to be rounded because of the small number of polygons. Bear in mind the topology doesn’t have to be clean at this stage, it only needs to subdivide nicely.
This can all be done in Max without creasing, just set your smoothing groups accordingly and apply a TurboSmooth modifier and check Separate by Smoothing Groups.
Before subdividing, the creased mesh is duplicated to later be cleaned up and serve as the low poly. The subdivided mesh goes into ZBrush for a dynamesh and polish pass in order to get rounded edges. I then decimate it and bring it back to Maya.
The mesh we duplicated before can now simply be cleaned up and the low poly is finished. When making a low poly mesh it’s very important to maintain a nice silhouette and make the geometry most dense in areas the player will see clearly and be close to. We can now move on to the UVs.
Both geometry and textures are incredibly important in the creation of game assets, I would not label either more important than the other. The most important part geometry wise is having a nice looking high poly for baking, and a clean, optimized low poly with good UVs and good resolution so the player can’t see obvious polygons from important angles. Textures, however, in my opinion, decide whether the final asset looks good or not. So I would dare to say that more care should go into texturing.
Texturing
We’ve definitely come a long way in real-time graphics, and except for the massive increase in polycount, the huge factor in-game assets looking as good as they do is PBR (physically based rendering). Artists are quick to grasp the ins and outs of the workflow, be it metal/rough, or spec/gloss. There’s a lot of documentation on PBR online and scanned values that can help the artists use the correct ones. I’d say the most important value is roughness (glossiness) as it is, in my opinion, the determining factor of the surface and really “sells” the material. It’s your biggest friend in material separation.
I texture all my stuff in Substance Painter and approach each asset and each material differently. Sometimes I start creating a material from scratch, for some parts I use base materials from Quixel Megascans to get the correct values, and other times I start with smart materials that are either my own or bought from other amazing artists, which I heavily tweak and go from there.
Let’s take the uzi I did for Dekogon as an example, we’ll be focusing on the main metal material. I started with a simple fill layer and tweaked it until I was happy with the look. I then added some subtle anisotropic noise to get that brushed metal feel. Some barely noticeable color variation and surface imperfections, and I have my base material ready for detailing.
After I’m satisfied with my base material, I usually go straight to the edge wear, or any kind of wear revealing the underlying material as I feel it’s important to make it look good. For this, making a good mask is key. I use a few generators, knock it down with some grunges and then hand paint some wear in and out, so it looks more natural. I sometimes also use images with shapes I’m looking for as stencils and draw those in as well.
When I’m done with the wear I move on to all the fun stuff like scratches, oil residue, smudges, dirt, and dust… I mostly approach these by using grunge maps and then removing about 80% of it by using other grunges and hand painting it out. I also use other images as stencils for some unique details.
As I see it, realism is extremely important when making guns in this typical art style. We want to make the guns look natural, but also interesting, so I tend to look at my reference, find interesting detail that occurs naturally, like oil leaks and smudges, holster wear, cool-looking scratches, etc. I try to recreate those details, exaggerate, and put my own twist on them so they look good later in the game.
Presentation
For the presentation, I usually like to have a few shots with the gun on the ground, it just feels more realistic to me when it’s grounded. It’s harder to make good shots with a ground plane, so I generally don’t make a lot of those.
I don’t really know lighting theory, so I mostly add and tweak lights until I’m happy with the result and I always make a separate lighting setup for each shot. My usual workflow here is to start with a very dim HDRI map which serves as a fill light and no other lights.
Then I create a few lights that best show off the surface details. In the case of this uzi, I have three spotlights.
Finally, I add some rim lights. These are usually strong directional lights emitting from behind the gun. Here, I colored two of them blue to make the shot a bit more interesting.
I tweak all of these lights until I’m happy with them and add more if I think I could make a certain area pop more.