Michael Cox shared a breakdown of his stylized 3D weapon based on Fernando Correa's concept art and made in ZBrush, Maya, Substance Painter, and Marmoset Toolbag.
In case you missed it
You might find these articles interesting
Hello! My name is Michael James Cox, and I’m an Environment Artist at TT Games in the UK. I’ve been in the games industry for almost a decade. For the past 5 years, while at TT Games, I’ve worked on several titles including Lego Dimensions, Marvel Superheroes 1 and 2, and now I’m working on Lego Star Wars: The Skywalker Saga.
Games have been my passion for as long as I can remember, but it wasn’t until around high school that I wanted to get serious and pursue this as a career. They were such a huge part of my childhood and the idea of having a career where I got to create them seemed like a dream to me.
At school, I had a keen interest in drawing and traditional art, but at the time I wasn’t aware of exactly how, or if, those skills applied to games. After studying art at college I immediately enrolled in a Games Design course at the University of Bolton. This gave me a glimpse of what to expect of the games industry, and how demanding and stressful it could be!
I was halfway through the course when I started feeling like Game Design wasn’t the avenue that I wanted to go down in my path towards landing an industry job. And so after my graduation, I decided to dive into game art on my own. For the next year, I taught myself the basics of 3ds Max, ZBrush, and Photoshop and started to get familiar with general game art workflows at the time. Once I felt confident enough with my new skills, I started freelancing as an environment artist, doing outsource work for a racing sim, as well as a couple of mobile games. After this, I landed a job at TT Games. Being part of a team in a studio environment has been a valuable experience. It gave me the opportunity to work closely with like-minded people, share workflows and technical solutions. It’s allowed me to grow much faster professionally.
Laser Rifle: Concept
I have followed Fernando Correa for a while on ArtStation and Instagram, having the intention to create something from one of his concepts for a long time. The hardest part initially was deciding which one to choose! I knew that I wanted to create one of his weapons though, which narrowed it down. Eventually, the laser rifle won. The chunkiness and the readability of everything really sold me. It had a nice balance between large areas with relatively little surface detail like the main barrel and the stock, and nice clusters of complex areas like the scope and the barrel underside. I felt like it was begging to be made in 3D!
Once the concept was chosen, gathering reference from other places was the next step. I knew that a lot of 3D artists had done various interpretations of Fernando’s work, so I went through ArtStation and looked at their approaches. The main influence aside from the concept itself was undoubtedly going to be Borderlands, given the bold cel-shaded outline effect and the hand-painted ink strokes. This is when I came across Romain Lambert’s work. His brilliant Compact Gun breakdown was a massive help to achieve a result I was happy with, and I was thankful to have it to refer to.
I collected a few more images of Borderlands weapons to see how the developers achieved the look in order to try and emulate it, as well as several real-world weapon parts such as scopes, handgrips, and stocks. I threw in a few laser rifle images directly from Fallout 4 too. Not so much to model from but just to have some additional ref for the material types.
ZBrush + Maya Workflow
I spent a good chunk of the process blocking out and trying to get the scale of everything to match the concept. Without having any front or side views to work from, I needed to keep one eye on the concept as I worked in Maya. This is where PureRef really helped. It’s a superb tool for reference. I was introduced to it by a colleague at work and it is now the only thing I use for collecting ref. I had the PureRef document set to “Always on Top” and scaled down on the same monitor as I created the blockout. I find that it really helps to have the reference in your vision when modeling and saves you from having to turn your head constantly or to keep minimising/maximising the window.
I started off with super simple geometry (which could be considered the blockout of the blockout), roughing everything in with boxes and cylinders until I had something that resembled the gun. It’s really helpful to just get everything “sketched” out as soon as possible. It’s too easy for me to get tunnel vision and start working right away on micro details, but then it’ll never get done. It helps me to just get something overall in the viewport to make the project “official”.
The proportions of the gun in the concept seemed quite toy-like and I wanted to make sure I was nailing the feel of that early on. With the absence of any front or side views as a guide, I decided to do a rough sketch over the concept in Photoshop and import it into Maya as an image plane. I bookmarked the camera from the same perspective as the concept to ensure that the image was overlayed correctly over the model. This helped me to ensure that I was staying close to the scale of the concept, and the bookmarked camera meant that I could always switch back to the same view.
Once I arrived at something that I was happy with, I started to subdivide the mesh for the high-res. I kept it simple here, just starting with basic geometry and gradually working up silhouettes before adding in cuts and subdivisions where needed. The plan was to do the majority of this in maya, and then afterwards take it into ZBrush for a final pass. Below, you can see how it looked in Maya before exporting to ZBrush. At this point, the small indents and recesses hadn’t been added. That sort of thing is a lot of work in Maya, so for more control and flexibility, it was better for me to do those things in ZBrush.
The most complex part of the modeling process by this stage was the scope. I spent a lot of time trying to get the shape to match the concept, particularly the rear side, and in the end I opted for a mirrored version of the front with a large eye piece around the lens.
Once in ZBrush, I started by using auto groups and splitting everything into individual subtools to make it easier to manage. Then I began to subdivide each piece and add small scratches and scuffs. I didn’t want to go too far with it so I stuck to just the trim_dynamic and dam_standard brushes at a low intensity. I wanted to reserve a lot of the surface detail for the inking. The main thing I wanted to make use of in ZBrush was Live Boolean to create the indents on the main cylinder and the scope. These would’ve been too fiddly to model in Maya, but Live Boolean made things much easier. I started by creating shapes to cut in. Most of them were simple boxes with bevelled edges. The screw holes at the front of the cylinder were made using cone shapes that I’d subdivided and adjusted by hand slightly to get the right shape.
After making the Boolean mesh, the edges were very sharp where it had made the cuts into the mesh, so I went over them using the trim dynamic brush to create a bevel. Once I was satisfied with the sculpt it was just a case of decimating and bringing the high poly back into Maya for retopology and UVing.
For the retopology I was able to use the existing geometry that was already there for most of the parts, just needing to remove the subdivisions that were added earlier. For everything else I used quad draw in Maya, using the high poly as a live surface. I’ve used other software in the past, such as 3D Coat and TopoGun, but I find quad draw in Maya much more intuitive personally, and it saves me having to go between various programs.
For the UVs I used the 3D Cut and Sew tool in Maya, which has really sped things up for me when UVing. First, I did a planar map on the UVs to remove any existing seams. Next, with the 3D Cut and Sew tool, it was just a case of going in and making cuts, and then afterwards doing an unfold. If it wasn’t quite right, I would go back in the viewport and make further cuts if necessary and then unfold again. This kind of workflow has become the standard for me as I find it much easier to work with UV seams in the 3D viewport as opposed to the UV editor.
When everything was unwrapped, I used the layoutUVs option to give me a starting point and then made final adjustments. Then it was time to bring it into Substance Painter!
Baking and Texturing in Substance Painter
When baking assets with a lot of pieces like this one, I would usually “explode” the mesh and bake all the pieces far away from one another to avoid any situations where the normal map projects incorrectly onto adjacent geometry. I figured this time it would be a good opportunity to use the bake by mesh name feature in Substance Painter.
For this I started by splitting up the mesh into several parts in Maya (6 in total, for each mesh). So, for the low mesh, I had Part1_L, Part2_L, and so on. Same for the high but with a “_H” suffix instead. I split the mesh into chunks to ensure that no two parts of the mesh were close together.
The next task was the inking. Following tips from Romain’s 80 Level breakdown, I decided to do the inking process first, before adding in any kind of colour or base materials. This bit was tricky, and it took several attempts. I first tried using fill layers with the curvature as a mask, which was then inverted and adjusted through the levels. This went some way to create the effect and it looked as though something similar was used in the Borderlands reference, but it was lacking that personal, hand-painted feel. I then tried using the UV Border Distance generator, as I saw that on a lot of the Borderlands assets the linework was sitting right on the edge. It worked in some areas, but it looked odd in others, and it still looked too generated on its own
In the end, I opted for three separate layers. Two of them were black fill layers being masked with the UV Border Distance generator. One was for the primary lines, that were sitting right on the edges, wherever there was a break in the UVs. For the other layer, I increased the distance value in the generator to create an offset line away from the edge. I didn’t want this effect to happen all over the gun though, so in order to have full control over it, I grouped each layer and added an additional mask, so I could paint the lines in and out wherever I wanted. The final and main layer would be the hand-painted one where I would go in and add my own hand-painted strokes. On this layer, I painted extra details like the warning symbol, the vaultboy head, and the small bolts (I created a separate layer with a height offset too for those, to affect the normal map). I also included the curvature set to overlay at 20% to make the whole thing pop a bit more.
For the materials themselves, I began by setting up fill layers for the base colours of each surface type, picking the colours from the concept one by one. From here I was able to better organise which surface would go where. To generate the roughness of the metal I created a separate fill layer, only affecting the roughness channel. Then with a clouds texture added to the mask, I used a slope blur to create a more stylized effect. Finally, I added some drips on a new layer using tri-planar mapping for some additional roughness and colour detail. I didn’t want to go too far with this part as there was a risk that the inking would be lost in the base colour, so the noise was kept fairly low, relying more on the roughness to make sure the materials would read correctly.
For the outline effect around the gun, the largest parts of the mesh that were affecting the silhouette were duplicated. Then the faces were reversed and a black flatlit shader was applied to them. This process really helped to sell the borderlands effect, but there seemed to be a bit of a disconnect between the lines on the texture and the outline geometry, especially when orbiting around the gun. To solve this, I painted thicker lines in areas where parts of the mesh intersected. The aim was to carry through the appearance of the outline at front-facing angles by having thicker strokes to support the outline mesh.
To create the mesh itself I followed this fantastic tutorial that Romain shared too in his breakdown:
For the final presentation, I decided to import the gun into Marmoset. The local light sources on the scope and the laser beam at the front were achieved by adding point lights and parenting them to the mesh in Marmoset. For the general lighting, I didn’t want to overpower the base colour too much. The style of the concept is bold and the lighting looked quite diffuse. “Uffizi Gallery” seemed the ideal skylight to use as a base, as it didn’t have too much additional colour. I added two extra spotlights behind the gun to pick up the edges a little bit and then a subtle one on the right side to pick up the highlights of the metal tubes and main barrel. All of these were set to an orange colour to mimic the concept background. The FOV was set to around 55 as I didn’t want too much perspective, in keeping with the original concept.
Challenges and Future Plans
I had a lot of fun making this project, and it was great to try something new. I think the biggest challenge by far was the inking process. There was a lot of trial and error at the beginning and it took a while to get to a stage I was satisfied with. Being able to arrange the generated and hand-painted strokes into different layers rather than keeping them all on one made the whole thing much more manageable and easier to work with.
If I was to improve it further, I would probably be a bit braver with the base colour and introduce some brush strokes to make it look even more hand-painted. That was something I tried at the beginning when I came to texture but I didn’t like how it looked. It could be something worth revisiting though.
In terms of what I’d like to try next, there’s a personal character project that I’m in the middle of doing at the moment. It’s something that I’ve been working on, on and off for a while now, but I’m nearly finished! So hopefully I’ll be able to share it within the coming weeks.*
Hope this was useful!