logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Creating a Realistic Porter's Bolt Cutter With Blender, ZBrush & Marmoset Toolbag

Oleksandr Reznik talked about setting up a Porter's bolt cutter model, showing how he used brushes to apply dents and signs of wear and explaining how he achieved the metal-look using color and lighting.

Introduction

Hello there, brave reader who decided to open this link! My name is Oleksandr Reznik. I'm a Senior Vehicle Artist from Kyiv. People say I'm a bit of an oddball, but I guess in game development that's almost a requirement. I stumbled into this world 10 years ago, back when I thought I'd become an illustrator.

And no, I don't have any formal art education, I just drew a lot from a very early age. I really wanted to switch from my career as a fashion consultant to something more artistic, so I started looking for courses, and completely by chance, Google suggested 3D graphics to me. It felt like a lightning strike: "Dude, this is it!"

Another thing I've been doing since childhood was playing, well, everything I could get my hands on. From early computers in the late 80s, to pirated (and not so pirated) consoles of the early 90s (Ukraine in the 90s was quite a place), and of course, the king of gaming, the PC.

I signed up for courses (this was long before "going into IT" was everywhere), worked super hard, and after a year, I landed a junior vehicle artist role at Wargaming. The beginning was absolutely intense. A new life, finally a dream creative career, feedback at the bake stage spanning 300 pages of Word on all previous stages. Yeah. Good times.

Since then, I've worked on several projects I can't really talk about, but mostly on World of Tanks. Most of the time, I worked on vehicles, but there were plenty of tasks with props and materials too.

Bolt Cutter Idea

After completing my last major project (Periscope), I decided to shift my perspective slightly. If the main idea of that project was: "create as much variety as possible on an almost fully painted object," then for this one, I wanted to take a different route: to see where the limits of my abilities (both physical and cognitive) lie when it comes to micro-surface details.

Since complicating my life and inventing problems in every little spot has been the third thing I've been doing since childhood, I decided to make the entire brushwork manually. What I mean by this: there are tons of really good brushes, alphas, and surface noises online that you can easily combine into an almost-ready surface with minimal fixes. (Even if it doesn't match a photo exactly, as long as the metal reads clearly, the goal is achieved.) But if you really want to understand something, you need to study it in depth.

In the case of surfaces, to teach my brain what a metal surface looks like and how it forms, I need to replicate those irregularities with my own hands. You don't have to sculpt every single dot with a DamStandard brush, but you should try to reproduce as much as possible.

I chose the tool as my object for a simple reason: it fit nicely on the screen in close-ups. Very long objects are tricky to render, so compact ones are just more practical.

Finding references for an interesting object when you don't even know what it will be isn't easy. For me, Pinterest and Unsplash help the most. The first one doesn't always have the highest resolution images, but artistically, they're often way better than what Google gives. Unsplash, on the other hand, is a photographer’s site, with big images, but a bit different in character. Pinterest actually suggested the references for Porter’s Bolt Cutter, I think from eBay. Here are a few of them:

Any artist who's been in the field for a while will tell you one thing: you should always have good references. It's pure gold advice, and unfortunately, beginners often ignore it. You're lucky if you have references for everything you need to make.

If not, first search, then create. Just trust me on this, it's way better to know what you're doing (and focus solely on doing it well) than to figure it out while you work. To dive a bit deeper into this topic, the first reference I found was this one:

It has a cool surface, but as a finished asset, it looks a bit too grungy. Too much rust and dirt, and not enough metal (at least for my taste). The full set of references I used to start the work looked roughly like this:

If your object is something that exists in real life and is fairly common, you can find plenty of good-quality photos on auction sites and similar platforms. I like to organize references for easier readability by the sides of the object, left, right, and so on.

It's a godsend if you can find an orthogonal photo of your object. If it's close enough, you can fix the perspective in Photoshop. A little over three years ago, I switched to Blender. Here's what a reference set-up looks like in it. The thing is, this plane has settings like these:

And it's super convenient. I can move the reference forward or leave it in the background as I like. I can adjust its transparency or make it visible only in perspective or orthographic view. It automatically scales and adjusts the alpha.

If you can't find an orthogonal photo and only have a perspective shot, here's another trick I use. First, you'll need to do at least some blocking based on what you have, at least roughly block out the sizes with simple boxes. You can set a background image for the cameras in the settings.

There are even a few more settings than on the reference plane, but to use this method, you'll need to create a separate camera window and try to match your camera's settings and position as accurately as possible to your blocking.

Modeling

I always start modeling with blocking. Basically, it's the process where you try to understand proportions and just start getting your brain familiar with the object. If the object consists of a bunch of complex shapes, I first build everything with primitives, going from large to small. There should be enough points so the geometry doesn't look too low-poly, but not millions either. Only after that do I move on to adding complexity. I usually start either from the most complex shape or the largest one.

What I definitely love about Blender for modeling is its flexibility. The fact that modifiers are super stable allows me to tweak a lot of things at almost any stage. Here's an example: At the early stage of shaping forms, I usually use just one face, applying thickness with a Solidify modifier. This way, I always have the correct thickness even as the shapes evolve. It also helps to read the shape better.

Here's another one: Because the modifier stack is, as I said, very stable, I can set the thickness with Solidify and then apply Booleans afterwards, and it most of the time calculates correctly. But you can go even further and tweak not just your main shape. For example, I have this cutter object for the Boolean.

Right now, it's flat on both sides, but if I assign a vertex group to one side and apply a bevel to that group, I get a fully controllable bevel that I can adjust however I want until I apply it.

I won't go into much detail about modeling, because honestly, there's not much to say here. I think this process is more or less the same for everyone. If you want to hear something more interesting on the topic, I highly recommend checking out Jordan Cain's pages. He's a cool guy and writes a lot on X. Here's a breakdown of the handle modelling:

Usually, at this point in the process, I have two options: either throw everything into ZBrush and polish the model there until it's where it needs to be, or first make a traditional submodel and then go into ZBrush. I don't remember why, but here I chose the second option.

Generally, I use bevel shaders too, but because I love sculpting objects before baking, I save that method for times when I'm short on time and sculpting isn't really necessary.

Most of the edge loops here probably had more of a Zen effect than any real necessity. And the very first thing I ran into when importing this stuff into ZBrush was that the brush was about three times bigger than the defects I planned to sculpt.

Of course, at first, I tried sculpting it as is. The classic method: store a morph before starting, then "draw it in and erase it". But, as I mentioned earlier, the brush was three times bigger, so I ended up erasing two-thirds of it. My good friend Illia Chornobrov suggested a simple workaround: scale the object up 10 times before exporting. And here's the result.

And this is the brush at an even slightly larger size. How much you scale it up can really depend on how fine you want the details to be. I use this brush pack quite often, both in the early and later stages. I also recommend checking out this material (I use a lot of what's described there). Unfortunately, I don't have the WIP files left, but the process roughly looks like this:

When it comes to inscriptions, the first stop is Photoshop. I created an alpha of the text, making sure that the spacing between the letters roughly matched the reference, which was my main guide.

Before applying the letters, I make a separate save and reset the morph.

By this point, the brush model is already pretty close to finished. You can start the final polishing. Usually, at this stage, I try to look at different parts of the model from different angles and distances. What looks great in close-ups can completely get lost from farther away.

It's never a bad idea to slightly boost points of interest. For this, I use two brushes: Contrast Delta and Target. They're also useful if, for example, you feel the depth or the definition of the sculpt could use a little extra punch.

Almost forgot, for this project, I was curious to see how much dirt applied directly on the sculpt could affect the overall look of worn areas (usually I add it in the texture). So I added dirt bases all over the model.

Low-Poly & UVs

Usually, at this stage, I convert my mid-poly to a low-poly. In this case, I started doing the same. The initial plan was to push the dirt and text using displacement. But when one element was ready, I test-baked a Height Map on it, and the result was completely unsatisfactory. So I started transferring the most noticeable details onto the geometry itself. The goal was to preserve all that detail while ensuring good shading.

Then I got too lazy to retopologize the entire model (without any real need), so I started looking for other ways. A good friend of mine suggested that if the goal of a project is just renders, they often use the simplified sculpt itself as a low-poly. After a bit of experimenting, I did just that using this method.

At the end of the day, the real focus of this project was on two phases: sculpting and texturing. The benefit of this low-poly approach is that it supports nearly all the detail through geometry, albeit minimally. I laid out the UVs with planar projection to get as many intact pieces as possible. Usually, when I don't know what texel density I need, I use a high-quality alpha or texture (8K) in the albedo as a kind of checker and stop where the quality looks right.

Here, I just scaled the biggest intact piece as much as the map allowed, with a little buffer. The result was 21K px/m, three and a half 4K maps, all done in Blender.

Baking & Texturing

For my day job, I still bake most of the small details in Maya (because I like the quality of the transitions much more), while all the big pieces go into Marmoset Toolbag. Here, though, the high-poly was 120 million polygons. That was too much even for Marmoset Toolbag (let alone anything else). It only stopped crashing around 30 million.

So, little by little, using decimation, I searched for the highest possible limit. Each UV set had its own separate scene (otherwise it would crash). Marmoset Toolbag is an absolute beast when it comes to speed.

Usually, in Marmoset Toolbag, I only bake a Normal Map. As for input maps (AO, curvature, etc.), I prefer to get those from Substance 3D Painter. For that matter, I always keep a separate project file where I can add extra normal details, make quick adjustments, and then export all the mesh maps. After that, I plug those exported maps into my main texturing project. This way, the main project stays lighter, which is important since they’re usually quite heavy. For this project, I tried the UDIM workflow for the first time, and it's awesome.

Among game dev artists, there's a common opinion that creating something with a super high texel density is easy ("just throw on a smart material and you're done"), and that the real challenge is working with a low texel density. I don't really agree with that. That idea tends to fall apart once you actually apply a smart material and realise that, at high texel, every flaw becomes visible.

Even more so, the strokes from default brushes (not all, but most) become very obvious, so using stencils for painting becomes almost mandatory. Unless there's a specific logic or exception, I usually structure my materials roughly the same way they exist in real life: metal → rust → paint → dirt, and so on.

Usually, I start with the material that covers the biggest area on the object and work my way down from large to small. This way, I don't waste time detailing things that won't even be visible. The structure of almost any material I make is usually divided into three parts: light (1), mid (2), and dark (3). In the case of metal, here's how I read it on the reference:

But if you look closely, you can see that there are actually two types of patina in the mid-tone area, one with a slightly bluish tint and another leaning more toward purple. So that's exactly how I built it. I also decided to add one extra layer for the deepest patina.

There are two main approaches to texturing that I use: additive and subtractive. Most of the work on the metal here was focused on the polished areas, so I created an edge mask, cleaned it up a bit, and started adding damage using stencils. Not gonna lie, that mask turned out a bit heavy.

Once at the gym, I noticed this interesting multicolored shimmer on the surface of patinated metal, tiny little specks catching light at different angles. That's the metallic grain reflecting different wavelengths of light. A cool, completely unnecessary detail, so of course, I added it.

To understand how much rust volume I'd have to work with, the next step was to paint the base layer of paint.

I'm not really a fan of "flat fill" textures. Even if the object in real life is painted monochromatically, it will still have at least subtle color variations. So in this case, I used two additional shades: a colder, bluish one and a warmer, slightly purple one. For the edge, I applied a greenish outline with a slightly higher roughness. The whole mask was mostly painted with stencils using a hard brush.

Since dirt had the next biggest impact on the model's appearance, I started with a light dust layer. This group turned out to be the largest in volume, but for some reason, it also looked the worst in renders. I'll show you in the slides how much more nuance is present in the texture in Substance 3D Painter.

I attribute this to a lack of experience in Octane (this was my second large model I rendered there). So, for the dust, I started with a simple generator, mostly using curvature.

First comes a cleanup pass, then I wipe off the excess, and after that, I add more where needed using stencils. The next layer is the heavier dirt. It's a mix of fine sand, dusty sand that’s been collecting in AO areas for years, and some clumpy mud. Here's a reminder of what it looked like in the reference:

This part was one of the most fun ones.

I painted these layers using a brush set to lighten blend mode (to build up dirt accumulation) and a bunch of sand stencils. I won't name specific ones, mainly because my stencil folder is almost 100 GB and organized by purpose, not by source. So I honestly can't tell which stencil came from which pack. But I definitely recommend having as many high-quality ones as you can.

As seen in the references, in certain spots, rust "protrudes" or "sits" on the surface of the dirt. Therefore, I added two Rust layers to the dirt folder. To make it look more lifelike, they are "filtered through" the anchors by the largest chunks of dirt and sand.

The final steps in this group are the Color Correction layers and two contour layers. Color Correction makes it possible to add even more color variety to the needed areas without duplicating stacks or materials. Though I have to admit, these layers in Pass-through mode become quite heavy as more are added.

The contour layers help distinguish the paint between light and dark regions. One strange thing appeared with the dirt, and I noticed it fairly late. Pay attention to how the sand looks.

See how flat it gets when you rotate it? I couldn't figure out for a long time why this happens. One day I paint the dirt and it looks great, the next day I sit down and it all looks sad. I never really understood the cause. My noise is applied by height (so it shouldn't depend on light direction), the HDR in the scene is tied to the camera, and nothing is masked based on baked lighting. Weird, right? Maybe it has something to do with UDIMs and the fact that materials are instanced between UV sets. If anyone knows, drop me a message. I'd love to read about it.

And the last important group is rust. This is the only material I didn't make myself. It's a material from Textures.com (Rust Plain). I used the same material for the entire model, but adjusted it through HSL and added two height layers. Here's the breakdown in the slides:

Rendering

I mostly render in Octane (for Blender). I'm just amazed by its flexibility and how convenient it is. It’s not exactly simple, but it’s incredibly convenient. The biggest challenge is the lack of tutorials online (unlike Cycles, for example), but you can make parallels between the Blender and Cinema versions. I always recommend doing test renders very early in the texturing stage.

At the very least, this helps align your texture parameters with your render scene. You'll get the best results if your HDR is the same in both Substance 3D Painter and the render engine. I did test renders for almost every material I added to the project.

Once all the materials are ready, I move on to the scene rendering. I never rush this step, instead, I explore different angles and lighting until I find something compelling. Here are a few discarded versions.

As you can see, my render scene is pretty straightforward. For lighting, I use an HDR and one or two light sources, sometimes plugging in an albedo texture of studio lights or another HDR. This just makes the lighting a bit more interesting. To create accents, I use simple primitives, they cast shadows and guide the viewer's eye to the spots I want.

Sometimes I do a few renders with different lighting setups. For example, if a close-up comes out a bit dark, I might make another render with neutral bluish lighting to later use as an AOV for filling in shadows. For the final adjustments, I turn to Photoshop.

The Camera Raw Filter is an incredibly helpful tool that lets you enhance your image in a non-destructive way, avoiding any distortion. Most artists make standard changes like sharpening, brightness, contrast, and color correction. In Camera Raw, these are organized into various groups, giving you much more control. I highly recommend it.

Conclusion

If you want to make a strong asset, you have to push yourself beyond your limits. No way around it. I can't even begin to tell you how many times my brain just exploded because I didn't know what else to do to make it better. Smart people say that’s exactly when intense learning happens. That's the moment when you’re overcoming the obstacles your brain puts in front of you to save energy.

So the best advice you can get has already been said a million times: "always do some projects for yourself", "Pick tough tasks and give them your best shot", "Explore areas related to your work that you haven't tried before", and "Look for solutions from other artists because you’re surrounded by so many talented people".

After finishing this project, my sculpting speed improved massively. I also realized I was overcomplicating textures, so it’s better and faster to keep them simpler. I've also started making quick scenes from photos (usually under 16 hours) to improve my composition and rendering skills. I'll show you just one of them:

I really appreciate you sticking with me till the end. I know it wasn't easy. Sorry about that! Wishing you tremendous success in your creative endeavors. If you keep going, you'll definitely get to where you want to be.

Oleksandr Reznik, CG Artist

Interview conducted by Emma Collins

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more