Professional Services
Order outsourcing

Creating a Post-Apocalyptic Crossbow in Substance, Maya & ZBrush

Florian Neumann talks about the process of designing props from finding reference pictures to the final render and explains why the latter is a crucial step where you should never get lazy.


My name is Florian Neumann. I am 29 years old and I live in Vienna, Austria. I am a Senior 3D Artist at RabCat Game Art where I have the opportunity to work on all kinds of great projects including games like Overwatch and Crash Bandicoot 4. I try to keep my ArtStation Profile as updated as possible, so if you are interested in specific projects I have worked on, you can find them there. Prior to that, I studied MultiMediaArt with a focus on 3D Animation at the FH Salzburg in Austria, but that was a long time ago.

But enough about me, let us talk about the pipeline I used to create the Post-Apocalyptic Crossbow.

Getting Started

The main reason I created this asset was to find out how to get realistic-looking welding with realistic-looking textures. I came up with a couple of methods on how to do welding. I tried adding them as separate meshes in Maya or painting them on in Substance Painter but I came to the conclusion that I would get the best result if I put the whole piece into ZBrush and sculpt everything onto the mesh. And that was actually where the troubles began.

But let us start at the beginning, the blockout. I wanted the whole piece to look like it was welded together from junk you find around your house or at a junkyard. That is why I made sure all the parts were things that exist in real life. The back piece is a shovel handle, the middle piece is just a square tube, the trigger is a bicycle brake, in the front we have some hinges welded onto both sides and the stirrup in the front is a bicycle gear cut in half.

Finding references for those pieces was quite easy and a good old Google search did the job. All I needed to do next was to create all those pieces in Maya and put them together to get the final blockout.

Putting the Pieces Together

As you can see, everything is very low-poly and is just there for the silhouette and for guiding me in the creation of the high poly. I also tried to create pieces separately as they would be in real life, so I did not have to start breaking up pieces when creating the high poly.

Speaking of the high poly, I created a smoothable model of all the pieces in Maya first. This part was very straightforward, I just used the standard modeling tools to add support loops and created all the parts, piece by piece. In most cases, it was enough to take the blockout and add support loops to it.

As you can see, I just stuck all the pieces together where I wanted to create welding afterwards. Also, I did not really care about topology at that point, because I knew I would move all the pieces to ZBrush anyway. And this would also include using dynamesh which generates new topology.

I used a small trick to create the duct tape around the wood and the metal grip. All you need to do is create your model underneath the duct tape first. Then create a single-sided poly strip that wraps around your piece. Then, use the shrink wrap deformer and let your duct tape wrap around your piece. That gives you this nice look of very tight duct tape that even has folds in it. All you need to do now is extrude it a bit so it has some thickness, and you are done.

After all of the pieces were smoothable and done, I transferred the whole model to ZBrush. In ZBrush, I had to think about what pieces should be welded together and group them in that way. So let us say there is a screw on a metal plate, and I wanted them to be welded together, I had to put both of them in the same subtool. After I grouped all of my pieces accordingly my subtool menu looked something like this. 

And now the interesting stuff, how do we get welding between different pieces? First of all, I dynameshed the whole subtool with a very high resolution, something between 3000—4000. It depends on how large the object is scaled in ZBrush. After everything was made into one evenly spaced watertight mesh, I began indicating where I wanted welding to be with the Flatten Brush while holding down Alt.

After the preparation was done, I used the Elastic Brush in a very small circular motion. This creates the look of welding. It is pretty easy and pretty straightforward. You just have to make sure that your models intersect slightly before you press dynamesh and that all the assets you want welded together are in one subtool.

Creating the wooden pieces was very straightforward as well, I just used the Clay Brush, the Flatten Brush, and the DamStandard Brush to imitate a little bit of damage, and wear, and tear. Also, I tried to give the front piece of wood a dirtier and more damaged look than the back pieces, so they would look like different kinds of wood. 

This process took some time because it was a back and forth on which pieces should be welded together, etc. But in the end, the high poly looked like this. 

To move forward with the ingame model I had to export all those pieces and import them into Maya. To do that, I used the Decimation Master before the export, so I did not have to work with millions of polygons inside Maya.

The Pain of Retopology

This was the most annoying and most difficult part of the whole project. The reason for this is that the whole ingame model needs to be one mesh at the end to cover all the welds. To create it, I modeled the assets separately before and used boolean operations to combine them. Unfortunately, boolean operations always require a lot of cleaning up. But after the model was cleaned up I could use the MultiCut tool and cut in all the weldings and extrude some polys to cover them. The process itself was very repetitive and rather easy, but it took very long because I had a lot of welds to cover.

UV Mapping

After the ingame model was done I started creating the UVs. This process was very straightforward because I always create hard edges where I want my UV cuts to be while I create the ingame model. So all I had to do was select all hard edges and press UVCut to get my shells. To select all hard edges I used the 'Select Using Constraints' menu in Maya. This way of creating UV Shells is by far the fastest one I know. So I always try to keep my hard and soft edges clean while I model my ingame model.

Afterward, I looked at every shell separately and tried to clean them up. This involves straightening the borders, combining shells that are next to each other and where it makes sense, unfolding pieces in different ways to get the best results. To get my final UV Layout I used Maya's Layout Function inside the UV Editor. This gave me good enough results to work with. I just had to do some minor manual tweaking to get the most out of my UV map.


After the UVs were done I could finally start with the most fun part, the texturing. For this asset, this process was rather easy. All I had to think about while texturing was how it looks in real life. To get the best results I just used Google to find images, for example, of a rusty shovel and then copy that in Substance Painter. Here you can see a small breakdown of how I layered the textures.

First, I created a standard metal material, with only a little surface noise. Secondly, I added the peeled-off paint and finally I added a rust layer on top.

To get all of the different masks I needed, most of the time I used the Mask Editor generator to get the basis. This should already get you about 90% to where you want to be. Afterward, I applied either a gradient, a noise, or a grunge texture to break up what the Mask Editor had created for me. In most cases, a combination of those layers will give you pretty good results already. You can always use a paint layer on top to get rid of the details that got created procedurally.


To render the final asset I used Marmoset Toolbag 4. One thing I normally like to do is setting up the rendered scene before the textures are done. This allows me to put in lights and cameras and I can already see what works and what does not work. Most of the time, the image in Substance will not look exactly like what you see in your rendering engine, so it is good practice to start viewing your textures in your render engine as soon as you can.

This allowed me to change my textures right at the start before I spent a lot of time on them. It also allowed me to see what parts of the Crossbow needed extra details because I put the camera close to them, for example. That is the reason why I added peeled paint onto the hinges at the front, for instance.

For the lighting itself, I always start with an HDRI that fits best what I want to achieve. Afterward, I start adding lights to the parts that are not as bright as I want them to be. I also like to add smaller lights that just create a nice highlight, without brightening up the whole model. For manual lights, I would always recommend using spotlights instead of directional lights. The nice falloff they produce creates a nice gradient on your model and they just look so much more realistic than directional lights.

With Marmoset 4 I used ray tracing and I did not have to worry about any other setting basically, it just created beautiful renders from the get-go! And that was pretty much it, that is how I rendered the asset.

Tips for Beginners

Let us start with the most annoying part that no one wants to do, the blockout. The blockout is the single most important step while creating an asset. It will define the silhouette of your asset, the size of your model, and how different pieces will interact with each other. I would say the blockout should be a good 25% of your total time spent on a project. So you basically have no open questions while creating the high poly. You know how the piece will look at the end, you know where a screw will be, you know how objects will interact with each other, etc. If you have a well-thought-through blockout, the rest will be easy and you will save yourself a lot of time in the high poly phase.

Another important thing I would say is, think about your ingame model while you create your high-poly model. A lot of people create shapes or corners that will not work when baking the asset. Always remember to ask yourself, whether the ingame model will actually be able to support what you are creating in the high poly right now.

Another thing I would keep in mind is not to get too constrained by poly limits when you create your personal projects. It does not really matter if a character or an asset has 1000 more tris in the end, as long as it looks good. Do not sacrifice quality for polycount or texture size. Of course, you should not end up with an in-game model that has one million polygons, stay around the ballpark of current-gen models, but do not limit yourself when it comes to polycounts.

The most important part of the whole process is rendering. I know this sounds strange because we are creating in-game assets after all. But the final render is the only thing people will see. That also means everything that is not on the render is not as important. Always keep that in mind while you do the textures and the details. Look at the final render camera before you call the textures done. Tweek areas that are visible and leave others that are not visible at all how they are.

And that is about it. Thanks a lot for taking the time to read through all of this. I hope I gave you an insight into how I created the asset, but if you have any questions, you can always reach out to me on ArtStation or Instagram.

Florian Neumann, Senior 3D Artist

Interview conducted by Arti Sergeev

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