Tire Trim

Material Breakdown

Aleksandr Silantev

1_Cover-scaled
84

Aleksandr Silantev

Environment Artist

Introduction

Hello, I’m Aleksandr Silantev, a 3D Artist at GSC Game World.

Throughout my life, I've been an Archviz artist in Uzbekistan, but my true passion has always been games. Three years ago, I made the life-changing decision to switch to game development.

This decision turned my life around completely, and now I find myself thousands of miles away from home, working on the next chapter of my favorite post-apocalyptic franchise.

Project

The main purpose of this project was to further practice Substance Designer, a software I don’t often use, but deeply admire for its procedural approach to content creation. I’ve decided to create a few artworks using this software to explore its capabilities.

3_Project_01-scaled

The main idea came to me after I saw Pavel Matousek’s “Tire dump” work on the Artstation.

4_References-Inspiration_01
4_References-Inspiration_02

I got an idea of how to combine these in one artwork.

I gathered some references from real-life photos and artworks; and many details I obtained from analyzing photogrammetry scans on Artstation and Sketchfab.

4_References-Inspiration_03-scaled

Modelling

First, I’ll start with modeling in Blender. This part is as simple as a donut, nothing special.

5_Modeling-and-UV_01-scaled

Then I spent some time with UVs.

From the start, I knew that I needed a trim texture, but I didn’t know how many trims I could put in my UV layout without visible stretching. After a few tests, I settled on four trim variations and one trim for the inside part.

This part is made with overlap, and there’s one trim for all tires.

Then I made a simple composition from my models and exported it as an FBX to have a preview of my trim textures on the real model.

Graph

For better readability of my graphs, I heavily rely on portal nodes. I start by sculpting the heightmap and then move on to the albedo and roughness.

6_Graph_01

Tire Patterns

For different tire patterns, I tried different approaches; some were made with a procedural approach, while others were created using a simple SVG trace.

The goal of this part is to generate square pattern pieces, which will be used with the Safe Transform node to create horizontal tiling.

SVG is fast while procedural is challenging and more fun; there is no right or wrong, choose your path based on your deadlines.

Text

The text is created simply with a default text node and various fonts. Initially, I created large text featuring the brand name and model. The crucial aspect was to ensure that the text appeared on both sides of the tire.

To achieve this, I utilized a combination of transform, mirror, and blend nodes. This setup enables any modifications made to the text on one side to be mirrored on the other.

The same approach was applied to additional text containing technical information about the tire model.

7_text_01

The fun part about creating the breakdown is that I just realized I can achieve this with a single transform node and blend.

I used a distance node to create an outline for some brand names.

7_text_02-scaled

The same process goes for all text, and then it blends with a specific pattern.

7_text_03-scaled

I asked ChatGPT to generate some brand names and tire models.

7_text_04

Be gentle with ChatGPT; it will help you survive the 2037 AI uprising.

First-pass Wear

After combining the pattern and text, I add basic damage specific to this pattern if necessary.

This is because, in future graphs, damage will be added equally for all tire trims.
At this point, I can regulate how much damage I want to add to a specific tire.

8_first_pass_wear_01-scaled

Trim Combine

After individual trims are prepared, I place them on the UV layout to form my trim sheet.

9_tire_combine_01-scaled

To avoid pixel hunting placing my trims, I made a simple blockout texture in Photoshop with marks on the center and sides.

9_tire_combine_02-scaled

Wear and Tear

This stage is quite simple; I’m not using any custom nodes or tools, just basic nodes. Layer by layer, I add damage, starting with large shapes and ending with small imperfections.

Mostly, it involves slope blur or some grunge blending on top.

The main key is to separate different damage types with different node groups so you can navigate your graph without getting lost.

The key to handling damage is to maintain clear separation between different damage types in your graph.

This will provide you with flexibility and control over the damage.

Albedo

I start building my albedo from the Ambient Occlusion and Gradient Map node. Layer by layer adding dirt, water and oil spots on top.

11_albedo_01-scaled
11_albedo_02

As an albedo sample for the gradient map, I used Sergii Rudavin’s scan.

11_albedo_03-scaled

Sergii’s photogrammetry work is truly amazing. I used various photos for reference, but many cool details were referenced from his scans while attempting to recreate them with procedural tools.

Once I’ve obtained the base color for my albedo, I start developing and adjusting the appearance of the main shapes using the AO and Curvature mask from my height map.

Noise is the key to a realistic look; I’m trying to avoid clean colors with my albedo and roughness by adding a Slope Blur Color node after the Gradient Map.

With different masks, I’m isolating areas to reveal wear and dirt and also to highlight text. The key here is not just to fill it with color; I’m isolating different sides of the tire to simulate real-life wear and tear.

The flat part in contact with the ground will have a different color than the sides, and so on.

There is a great article about noise from Malte Resenberger-Loosmann; I highly recommend reading it.

Roughness

I create my roughness map using the same maps that were used to build the albedo.

I simply place a portal node on most of the blends and then blend those portals for the roughness map.

The key to a good roughness map lies in its synergy with the albedo. If there’s color variation, there should be a corresponding variation in roughness to maintain a natural appearance and preserve an appropriate amount of visual noise.

While noise adds texture, excessive noise can detract from the quality of your work.

Presentation

Before setting up my scene in Unreal Engine, I returned to Blender to set up a simulation. I created a box measuring 4x4m inside which would accommodate my simulated tires.

For the simulation, I used rigid body physics with default settings.

To increase simulation performance, I changed the collision type to the cylinder preset.

After the simulation is complete, I manually adjust some tires to hide any ‘seams’ in the geometry. By using collection instances, I can clearly observe the transitions on all sides.

13_Presentation_03-scaled

From this point, the simulation result can be used for baking seamless surface material, but that’s for next time.

I import my trim textures and models into Unreal Engine and begin building compositions. The material setup is pretty standard, except that I’m utilizing the nanite tessellation feature, which is available in UE 5.3.

13_Presentation_04-scaled
13_Presentation_05

To enable tessellation, use console commands:

  • r.Nanite.Tessellation 1
  • r.Nanite.AllowTessellation 1 (requires engine restart)

Lights, Camera, and Post-Process

My light setup is quite simple; I’m using default lumen settings, HDRI Backdrop with HDR maps from HDRI Haven site as fill light along with spotlight and point light for accent lighting.

There is not too much post-process, basic tone and color adjustments, a little bit of sharpness, gain, and chromatic aberration.

I try not to rely too much on post-processing but to push lighting more.

My lights and PP settings:

13_Presentation_08-scaled

My best advice for rendering and presentation is not to rush through it. At this stage, you may already feel tired, exhausted, and eager to publish your work as soon as possible.

However, the best practice is often to set up your lights and cameras and then give yourself a little rest. Go for a walk, play some games, or do whatever you want to clear your head from this artwork.

Return the next day with a fresh perspective. It’s highly likely that with a fresh look, you’ll make adjustments to the lights or composition, resulting in a much better outcome.

When your artwork is 95% complete, it’s easy to convince yourself that it’s finished. But exercising a little patience will allow you to refine that missing 5% and propel you to the next level.

Conclusion

It’s not a rule set in stone that if we opt for a procedural approach, we must be 100% procedural in our work. If you have a specific pattern and it’s quicker to create it by tracing SVG, go for it.

The more time you save on one aspect, the more time you can allocate to polishing other areas.

Always be open to trying new techniques and exploring different pipelines that suit you best!

14_Conclusion_01-scaled

Remember, the main rule of this game is to have fun.

Thank you for reading; I hope you found something useful in this article. If you have any questions, feel free to contact me on Artstation.

A big thanks to Games Artist for making this possible!

And a heartfelt thanks to those who share knowledge and those who seek it!