A Prop Artist Ilya Chernobrov shared an extensive breakdown of the Schwimmwagen project and talked about setting up realistic dirt and mud.
Hi, community! Thanks for reading this! My name is Ilya Chernobrov, I’m almost 35. I’m from Kyiv, which is situated on the river Dnipro.
I have 2 master's degrees in Law and Finance, which are not related in any way to my last 8 years of work in the game development industry. One day, I decided to change my life completely, and now I finally do what I love. At Artclub, I got myself a solid base of 3D skills. I would like to recommend this awesome school to those guys and girls from Ukraine who are looking for a good education and want to start their careers in gamedev.
Since that time and for the last 7 years I have been working for Wargaming Kyiv. I worked in different fields, for example as a 3D Artist, an Outsource Manager, a Project Manager, and Art Managing is what I do now. Our team is creating most of the 3D art for the World of Tanks project – one of the most famous and successful projects in the world. We create props, vehicles, buildings, destructions, maps, and a lot of other stuff for the game. My part is managing up to 7 teams of artists – planning the backlog, reviewing the pipeline and processes, making sure deliveries are great, creating a comfortable environment for all the artists in the team, and leading them to success. Taking advantage of the moment, I would like to shout out all Central Art teams and tell them that they are the greatest and I am very proud to be a part of this team!
As a huge fan of 3D art, I always keep my knowledge up to date, digging new stuff, techniques, trying it all out, and doing experiments. My main focus is props and vehicles, this is what we do at Wargaming and what I really love and try to push further.
Volkswagen Type 166 Project
The idea of a vehicle was in the air a long time ago. The process was catalyzed by the works of Andrew Zelfit for Metro Exodus and Alex Buryak for World Of Tanks. After checking their works, I decided to start doing the vehicle.
After two weeks of mental pain and searching Pinterest and Google before sleep, I came up with the idea of Schwimmwagen. The cherry on top was the fact that no one had done any of it in good quality before (at least I couldn’t find any), so I was an explorer here.
Before jumping in, I decided to specify particular goals for this project, as I understood that it will cost me a lot of paint and private time, so I should have understood clearly where I would go. When I was starting work on this piece, I specified 4 main goals for myself:
- To create some complex-looking vehicle with its own character, at least the same quality as those projects I mentioned previously.
- Include a bunch of props and practice texturing
- Create some consistent library of materials for myself
- Do all the renders in Unreal, not Marmoset, Learn the basics of UE and embed this vehicle in some kind of environment to make the scene complete.
Talking about the refs, it was a straightforward process. For this kind of vehicle, you have a lot of resources starting from WW2 websites and ending up with amateur collections forums. I think I dug it all and formed a pure ref for all of the parts. Also, I bought some PDF guides for this model from Amazon and the 1:45 model which was patiently assembled (but not finished) to investigate the details.
I also gathered dioramas, other vehicles with interesting details, such as dirt and mud, a pic of muddy roads, etc. Well, actually my ref board was being filled all the way to the final.
My general recommendation about the refs – take your time to gather and structure them, don't be lazy here. Always stick to real refs, no matter what. If you don't have a ref of what you need on your car – pick another ref with another car or whatever and adapt it, but keep it within a real-life scenario.
Most of the problems of 3D Artists I see along with my career – they do not use refs properly. They will do everything else like using generators in Substance, dreaming about things, and do it from imagination, convinced that their fantasies are good-looking, they do not search and examine real refs and replicate them. “ALWAYS STICK TO THE REFS” – it would be as simple as that and the main problem of all of us and the key to awesome artwork.
Extracting good ideas from refs – it’s another problem worth a separate article.
Talking about this vehicle, as mentioned above, my main goal was to create a complex-looking vehicle, but at the same time, I was very limited in time. In this case, I would highly recommend, and that's what I did, to create a general to-do list and priorities. I usually use an app called Clockify. It’s free and allows you to create projects, tasks, estimates.
To make it organized I did an overpaint and put all the obstacles and to-do tasks for each general task. It really helps at the beginning, especially when you have to switch and come back to it later. It’s almost impossible to stay focused without a written plan.
Also, it allows you to track your time, the same as Jira or other tracking apps. So, in the end, you will know how much time you spent on the project and each task.
So, after we have all the tasks and priorities listed – it is time to dive deep.
As for the hull, the workflow is pretty straightforward. I found blueprints, refs, and started modeling. Big forms to small, I put all the big parts like wheels, seats, hull, etc to test out all the dimensions, forms, and so on. It is an essential part and I would recommend never jumping to details unless you test out all the elements.
As this one was my personal project I jumped a bit further with complexity in this stage, but it's still very raw. I would recommend not much more than 4-6 hours on this stage in general. The hardest part is to catch the shapes and to match the blueprint. I always check at least 2-3 refs for the particular part I am modeling. Also, at this stage, you can decide what is really important and visible and what is not.
Worth mentioning that I work on a low poly model first that on high res. You will get the point later.
After this stage, I started to put more details, first medium, than small. The key is to do it consistently. Do passes. It is mentally hard to keep parts not too detailed. But believe me, it’s way too fast and allows you to change parts or even composition without much additional work. Besides, you could test all the technical functions or even test animation if it would be a production work. Believe me, at some point you will see that the vehicle does not need details anymore, it is consistent and looks good (even if in real life there are more details). This workflow is much more efficient than polishing each detail and doing high poly first because most of this polishing is not needed at all. And complexity is made by the right balance of passes: big - medium - small and putting the right amount of details where needed or leaving some space free to relax the eye.
After low poly is ready I create hi-res. In fact, I don't create high poly for all the details, only for those which are important and have the most visual effect. Also, I search for ways of very fast high poly processes.
For the hull, I put bevels on hard edges. And to eliminate shading bugs here and there I did DynaMesh and Polish in ZBrush. The result is perfect for bakes.
For the seats, I did a fast SubDiv model and then sculpted all the main folds. I decided not to use Marvelous Designer for seats as it is a more time-consuming way in my case and the effect would be the same.
To keep the seats alive, I decided to put more polygons here and to leave the edge part with Geo, not only bake. Seats are one of my favorite parts in making vehicles as most of the artists tend to skip them. But with a very small effort, you can get them really pop.
As for the weapons, it was just modeling with no fancy approach. In fact, weapons weren't the main priority, so if you check them very closely – they are much simpler than they would be if I did them separately for the renders.
I made them pop with materials. And this is the part of the main approach – if you do compositional work with a lot of elements – sometimes there is no need to polish each detail. I can't imagine how much time I would need to finish it if I would have replicated all the weapons 100%.
For weapons, I don’t even have the high res. I have this low poly above – then I baked edges in Blender with Bevel Shader, and did small details by adding Height in Substance. You can find more info on Blender bakes at the Arrimus3D YouTube channel.
So, you can easily combine quick methods depending on the details. This approach, in most cases, is very fast and efficient. Yes, probably not the best, and sometimes you will have some bugs, who cares if it can't be seen in the game or on renders. For my assets, it just worked perfectly – a good result in less time.
The tires were interesting. First – we have to do a Normal Map that would deep. Not just flat, but realistic.
To achieve this effect we have to make angles on high poly Geo to catch that deepness.
You should experiment a bit with this angle to get your Normal Map to look deep. I usually don't model the tire for SubDiv. It's much easier to make it with Instances, to achieve the angle I need.
Then just go to ZBrush and DynaMesh – Polish. You can always change Instances whenever you need.
You can also bake a Height Map and Test Displacement here. But I decided to leave just a Normal Map as I planned to add geometrical dirt.
As for the tent, you will be surprised, and it is probably not obvious, but for me, it was a real challenge to work with both variations of the tent. For the closed option I managed to get good results by making garments in Marvelous Designer and then sculpt details in ZBrush.
I used the same approach for the bag. I put in some good time to make it, but I bet most of the people didn't even notice it at the first glance
For the open version, it was a real pain in the back. And I believe I spent most of the time here. There were two main questions: First - how to roll it? Second - how to get a low poly version?
I wanted to achieve a look like this, when it's rolled and tied with belts, a bit neglected and artistic.
I did at least 3 different iterations with different types of garments.
My mistake was that I tried to replicate real-life construction. And it was just impossible to fold it this way. The garment was always conflicting, jumping and creating bugs. I even tried to simulate the real-life scenario, you can find this approach here.
We discussed this approach with Alex and he did this great tutorial. But the problem was that it didn't look like I needed it to look (ref above). So, I decided to go the easiest way (which is the decision in most cases) – to simplify.
You see? Just a quad, folded gently with good folds and belts. With the good effect of rolling on the side. And some experiments with the type of fabric. I did it and saw that it works just great. Easy peasy, we are going forward!
Retopology and Unwrapping
Retopology in this project was used only for the tents. For other parts as my workflow is low poly first for most of the parts – I didn't need to deal with retopology at all. This is another advantage of this method. After ZBrush you usually have a wire like this:
There are a bunch of ways that could be used here, like ZRemesher, Retopologize functions for 3ds Max, etc. I just did it manually using Quad Draw in Maya.
Folded tent was a real pain in the back. Especially those internal parts. In the end, it would be solid mesh.
I did it manually over the high poly to get optimized results. That is how production would work. This one is the case where you have to turn on some Drum&Bass and just do it. As for the other parts, I fully used my initial low poly Geo.
As for unwrapping today, you have a lot of workflows. For this project, I had 6 UV maps to achieve a good texel:
- hull (body)
- interior + suspension
- details 1
- details 2
If I did this for production, I would have reduced the number of textures to 2 or 3. Here, I decided to bump up the quality of the details. But you can see that I still did a lot of overlaps and reuse. This is the main key to good texel.
On the technical side of UV, my personal choice is Maya + UVLayout + Blender + Manual packing. Most important in the UV process are:
- good unfolds and straight lines
My first pass is usually made in UVLayout. It allows you to do it really quickly with no pain. I love how their unfolding and alignment work.
Also, you can do boxes and pack the same details together.
This is the draft first pass to get good unfolded shells and a good consistent checker and texel (point A).
Next – overlaps. All the small stuff, you can easily copy UVs either in UVLayout or Maya or any other 3D program. I usually do it in UVLayout.
As for big precise overlaps, like sides of the vehicle, I usually do them manually in Maya.
After I have everything unwrapped and overlapped my UV looks like this. Usually, it's a bit messy, but still, the texel is consistent, parts are more or less grouped.
What I usually do is pack manually all the big parts on the left. It is needed to rotate them properly and to understand the texel at this stage. A small trick in Maya – if you open the Grid setting you can adjust Grid size to your textures and padding.
So, I packed all the big islands with needed padding and rotation.
After this, I drop the model to Blender and use the plugin called UVPackMaster. It allows you to save your manual overlaps and automatically pack other islands with saving overlaps. I won't be describing all the settings, I suggest you dig this script. In the end, it looks like that:
The same process is applied to all the other parts. The main advantage of my approach is that it includes a bunch of different software.
Texturing is the most fun and painful part at the same time. The main mistakes I did in my career and I see other artists do them a lot are:
- Not searching for good refs
- Not searching for good 3D works
- Not planning what to do (no concept, no written plan or legend).
- Not being good with Photoshop (you will see next why)
- Use generators instead of previous points 1-3
All that leads to wasted time and excess polishing with chances to get an unwanted look. And get it after you spend a lot of time. For me the working approach is as follows:
- REFS REFS REFS
- Extract a general look from refs
- Do a rough 3D concept
- Specify the structure of each material
Pretty much the same "General to Details" approach as for modeling.
As mentioned before, I got myself some target refs first.
Plus a desired 3D look:
After that, I decided that the main feature of this vehicle will be dirt! I suggest you choose the main feature for your asset and make it pop. So, the main priority is dirt, and everything else is secondary. I decided that it should be more contrasty and more visible for artistic reasons than in real life.
So, the main concept was – it will be a workable vehicle with medium wear and tear, and it is just after running through a muddy forest or field.
I dug a bit and found these cool refs of muddy juicy look:
Before jumping to details I usually do a raw concept of the general look of the vehicle and search for colors and contrast.
Absolutely the same process for each material. Ref - Quick sketch - Polishing after I found the general look.
The main advantage here is that you can do these sketches even before all the base materials and get a general feeling.
After that, I start working on the general structure of materials and effects.
Paint variation – in my case I decided it would be 2 types of paint, the main one and under it a lighter one. It is the choice of taste but such a setup is always adding a second layer of details to the paint. Here it is all about balance.
Main dust setup. If you examine the refs carefully you will find that there are a bunch of dust variations, not just 1 layer of Substance Generator. AO dust, cavities dust, upper dust, etc. In fact a lot more. Depends on the refs and your goals.
Technically I achieve it with the help of a bunch of Fill layers and cut-out masks.
Sand leaks setup. It has more contrast than dirt and replicates the idea of dried water with sand same as on the boats. For the setup, I did a hand-painted mask with an anchor to make it a bit more complex.
Main mud setup, that includes 3 main layers:
- dried mud
- dark wet mud
- contrast wet fresh mud
For masks like that, I use Layering with Fills, Light Generator, and then stencils made from photos.
All this you can get from textures.com and create atlases as I did, or you can do it directly from photos.
I took a real photo of the glass and did the stencil from it.
This is where Photoshop skills come in handy. I mean, working with pictures, effects, levels, curves, selections, etc.
Also, there is a cool tutorial on Artstation on this topic.
All small details like rust or leaks: these are just small details made with separate layers and stencils.
I should mention that I mostly use photos or photo scanned materials as base textures for leather, wood, and other materials. And only then do I add effects, wear and tear, dust on top + stencils if needed. This leather setup is just a good tiled texture made from photo + wear and dust on top.
I put this image into all the Maps (Albedo, Roughness, and Height) and use this method to get correct values.
Thanks to Andrew Zelfit for sharing. More info here.
Setting Up Dirt
As I've said before, dirt is the main priority and a cherry on top of this project. On the first tries, I set up dirt with the help of Megascans master material but it was looking bad – flat and not realistic at all. Especially the grass material looked very fake in close-ups like these.
Then I decided to make it without grass and squared like real dioramas.
But still, with just a tiled Vertex Paint shader it looked poor. If I put rocks and decals there – the vehicle stops poping and all attention goes to the environment. Besides, I realized that I can't find a composition with a square floor.
Long story short, I found this ref and decided that the ground will be round, as the composition is much more clear and readable that way.
Also, I decided to leave the Vertex Paint shader for better times and do a unique texture set for the ground as I wanted a more realistic and unique look. So, I did a fast sculpt of tire trails
Then I baked it to a unique texture set and texture everything in Substance Painter. Also, I added alpha on the edge to make it faded, as it was looking more pleasant. For texturing, I used Megascans materials. Actually just two of them. They were mixed with Compare mask in Substance and water added on top with the same compare mask setup. You can find more information here.
Compare Mask allows you to mix tiles based on their Height Map, paint a layer of Height, or even combine them together. Awesome feature to create mixed tiled materials.
For the tire marks, I used my Normal Map from the wheel protector and created an alpha with a Substance Designer node Normal to Height.
For the mud, an important part was to make a strong connection between the ground and the vehicle. Also to keep good contrast between clean parts and dirty parts. I think this is exactly the place where artists tend to have problems. They put too much dirt, for instance, and ruin the balance. The idea is that you should clearly see where it's dirty and where it's clean.
So, for my vehicle the dirtiest place is the bottom and wheels – this is where the connection and main contrast should be placed.
For wheels, I used the same approach: refs – base materials – stencils, and contrast.
To connect wheels to the ground, I used the same colors for wet dirt. Also, my first pass was without geometrical dirt. At this stage, I was showing my work to my friends and colleagues to gather feedback. And thanks to Alex Buryak for this idea with geometrical dirt. It was a really cheap and so effective solution that boosted the visual effect drastically and I would say this puzzle with mud was completely solved now.
How did I get this Geo? I made a duplicate of the wheel in ZBrush, inflated it a bit inside to reduce z-fighting, and sculpted all the dirt.
Then I used Decimate, Unwrap for these parts, and put the same materials, as on the ground, on it.
Rendering and Lighting
The idea of rendering in Unreal was actually one of the main tasks from the start. UE is currently the most progressive real-time renderer, especially after RTX was announced.
I consider myself a strong Marmoset user, so I decided to broaden the horizons here. Also, I was impressed by how RTX scenes look, especially how shadows work and materials feel.
The abilities of UE4 are limitless, so I decided to solve problems as they come. Basically, I tried to recreate what I usually do in Marmoset but in UE: importing and setting up the scene, basic PBR shader, glass shader, tessellation and displacement setup for the ground, light setup, camera setup, sequence setup. That's basically all the tasks for UE.
As for exporting the scene, it’s pretty clear – I set up all the assets in Maya and combined them in separate prefabs which are really handy to work with in the scene.
As for shaders, there were 3 of them.
Basic shader for PBR materials
I added the ability to tint base color, switches for emissive and opacity. And then used this master material for all my parts.
This one was tricky, this video basically shows how I set up the glass shader. I used the same setup but I added the ability to add dust using a custom mask and repaint this dust.
Ground shader with tessellation and displacement
Worth mentioning that I also added a diether effect to Opacity – it works cool for my taste.
As for lighting, I ended up with fully dynamic ray traced lights with a 3 point scheme + additional small light for my taste.
The light setup is pretty classical. Relatively cold skybox + warm main light + neutral contour light.
I used sharpen post-process material which allowed me to sharpen final renders. It is free and you can find it here. Also, I used a bit of standard stuff such as contrast, exposure, etc, nothing fancy here.
For the camera setup, I used separate camera actors for each shot as I also used them in Sequencer. For cameras, I used mostly standard functional as focal shift and manual focus adjustments. I really like how it works in UE. You can see the main plane of focus – also you can animate it.
I usually use 50mm + focal length – I like how it feels more realistic in terms of scale.
For videos, I used UE Sequencer which is really cool and handy. You can animate whatever you want. I am no good with animations but I manage to do simple tricks with cam movement etc.
I faced the problem of how to rotate all the scenes in animation – and I found that you can add Geo and Lights to one actor and animate it. It's a really handy approach for rendering scenes like this. I also used some decals from Megascans for the ground so they were also put into the Geo actor.
All the videos were exported directly from Sequencer and decoded in Sony Vegas.
This is basically it, THE END.
In conclusion – UE is the future for renders like this and allows you to achieve cool results with the quality and complexity of the scene. My favorites are the quality of shadows and the material’s quality. Also, shaders give you enormous possibilities of adding interesting effects and for me, it is definitely a zone of improvement.
Long story short, my free time is super limited, I bet every 3D Artist understands that such works will make you sacrifice a lot. I decided to work at least 1 hour per day and sometimes more on the weekends. I had a long pause while attending the UE lightning course but then I resumed all the work. So I think I spent not more than 200 hours on everything and almost a year of work in general with all the pauses and delays. This project wasn't about speed but the experience so I wasn’t pushing myself to the limits. I was focused on two things – regularity and new experience.
The main challenges were finding time for the project and to stay focused while these small sprints of work. Basically, I was trying to squeeze maximum effect in a small amount of time. On the tech side, the hardest to work with were tents and shaders in UE, as this experience was new for me.
For aspiring artists and all other ones I would recommend putting more time into understanding what you're gonna do, why, how, and what would be the result. Basically, to spend more time on planning, refs, research, concepting, and comprehending your future workflow and result. This is the main challenge on each and every project I had to deal with. All other stuff is mainly technical. Also, I would recommend gathering feedback from your friends, colleagues, and other cool artists. For me, feedback helped to increase visual effect a lot, so, taking advantage of the moment, I want to thank everyone who was giving it to me: Rumshin Roman, Vadim Popenko, Evgeniy Khristnichenko, Alex Buryak, and all others.
Thanks for your time dear readers, thanks 80 Level for posting it and helping with the content arrangement, good luck, and peace!