How to Create a Weathered Toolbox for S.T.A.L.K.E.R. 2: Cost of Hope
Vitaliy Kovalchuk spoke about crafting an interactive toolbox that players can find in the S.T.A.L.K.E.R. 2: Cost of Hope DLC, explaining how he modeled it, with a focus on fabric simulation, and gave it a weathered look through texturing.
Introduction
Hello everyone! My name is Vitaliy Kovalchuk, and I'm a 3D Artist at GSC Game World with over five years of experience in the game industry, primarily focusing on props and environments. I’ve had the honor of working on S.T.A.L.K.E.R. 2: Heart of Chornobyl and its upcoming story expansion, Cost of Hope.
My journey into 3D began back in 2012 while playing the original Dead Space (2008). I remember pausing the game and genuinely wondering: “How do they do this? How do they build such graphics, details, and interactive worlds from scratch?” That curiosity turned into a real passion for game development. Back then, learning materials were extremely scarce compared to today, but I gradually started diving into the field, reading everything I could get my hands on.
After a brief break, I firmly decided to pursue a career as a 3D artist. In 2016, Pavlo Ponomarenko from Wargaming invited me to join an indie project – a space Sci-Fi ant-farm base builder titled SpaceLab, similar in spirit to Fallout Shelter. Due to family circumstances, the project had to be frozen, but it provided me with my very first and invaluable hands-on development experience.
Early developments for the SpaceLab indie project, 2016
To structure my knowledge, I completed two specialized courses at ARTCLUB Academy:
- Texturing Course (2017): Instructor Maksym Shcherbin covered game-dev pipelines and key stages of working with materials in great detail.
- Professional Modeling Course (2018): Thanks to Vadym Popenko, I gained deep knowledge of geometry creation, optimization, and workflow acceleration tips and tricks.
After polishing my portfolio, in early 2021, I submitted my application to GSC Game World and successfully passed the art test. I worked as a freelance artist for a year and a half before being invited to join the studio full-time, where I continue creating detailed props and environment elements across various production pipelines.
Working on the S.T.A.L.K.E.R. universe is my proudest professional achievement!
In this article, I’ve prepared a detailed breakdown of my pipeline and key technical decisions. It serves as an overview of the core stages, techniques, and tips that helped me achieve the desired result.
Getting Started
Before starting work on any model, I always conduct a thorough search for compelling reference materials – both for the modeling and texturing stages. For this toolbag asset, I gathered a curated reference board containing photos of real-world canvas organizers, tool belts, worn leather straps, and various work equipment.
In addition to photographs, a huge advantage was that I had actual real-world tools at home-screwdrivers, pliers, and metal fasteners. During the modeling and texturing phases, they served as my direct hands-on references: I could hold them, feel their weight, examine how light reflects off worn metal, and analyze how dirt naturally accumulates in hard-to-reach areas and crevices.
Having gathered and thoroughly analyzed all this information, I clearly planned out all the subsequent stages of the workflow and confidently began creating the prop.
Modeling
Geometry Creation – Blockout
After completing the reference research phase, I moved on to developing the blockout. I started creating the geometry with the simulation of the bag's fabric elements. To speed up the process and maintain maximum control over the final shape, I followed a few key steps:
- Using a Frozen Helper Pattern: For the base shape, I first created a simplified helper pattern and temporarily froze it in space. This provided a rigid framework that allowed me to easily adjust the folds and overall volume of the bag without unwanted deformations.
- Final Simulation: Once the desired volume and fabric drape were achieved, I removed the helper pattern and simulated the primary material directly on the surface to capture natural folds under its own weight.
I intentionally kept all patterns as simple and straightforward as possible. This saved a significant amount of development time and helped avoid unwanted geometry pinching at an early stage.
Having achieved a high-quality blockout and a clear base shape that was easy to work with going forward, I moved on to the sculpting stage and further detail refinement.
Sculpting & Tools
Once the blockout was ready, I decided to immediately model all the necessary tools and place them in their respective positions. This allowed me to precisely adjust and fit the bag around them.
I also simulated electrical tape wrapped around the screwdriver, which added an extra layer of narrative to the asset.
After finalizing the high-poly geometry of the tools, I focused on detailing the materials and the surface of the bag.
After finishing the tools, I moved on to sculpting the bag itself, starting with the leather elements along the trim. I used a custom leather brush with Lazy Mouse enabled to ensure the cleanest and smoothest lines possible.
Next, I moved on to creating wear and tear on the fabric. I used a Mask – Extract – Boolean pipeline, which allowed me to form realistic holes and damage on the bag quickly and precisely.
Next, I moved on to creating the fabric texture and micro-relief. First, I applied Store Morph Target so I could use the Morph Brush to adjust changes or clear the noise as needed, giving the asset more visual storytelling. Then, using various alphas, I detailed the surface. By applying a mask, I protected the leather elements, after which I introduced the fabric texture via Surface Noise and applied it.
Initially, I used the Morph Brush to slightly smooth out the texture along the fabric folds. Following that, I accelerated the creation of loose threads and frayed fibers inside the tears using an auxiliary plugin, manually tweaking the geometry afterward. Having completed this stage, I transitioned to retopology.
Retopology
I performed the retopology using the native toolkit of my 3D software, which proved to be an extremely convenient and efficient solution.
Next, I completed the retopology for the tools and added card planes for the thread alpha textures.
For the in-game asset, I further optimized the geometry by reducing unnecessary polygons, whereas for my personal portfolio render, I kept a denser mesh and even added extra detail in certain areas.
The next phase was UV unwrapping. The main focus here is not the tool itself, but strict adherence to game dev technical requirements: consistent Texel Density, maximum utilization of UV space, and zero texture stretching. You can use any software you prefer, as the final evaluation is based strictly on the quality of the asset.
After that, I moved on to baking the core maps. My pipeline included a Normal Map with Flipped Y, a Transparency map for the thread alpha cards, and two types of AO: one with tight self-shadowing between objects, and a softer, unoccluded AO map free from self-shadowing, which is critical for accurate generator performance.
Texturing
Before starting the texturing process, it is essential to prepare the scene properly: configure the viewport in Substance 3D Painter so that the visualization matches the final look in the game engine as closely as possible. The workflow is based on the PBR pipeline (Metallic Roughness). After importing the geometry and basic bakes, I baked internal mesh maps directly in Painter: World Space Normal, Position, Curvature, and Thickness. Since the asset contains translucent elements, I used the “pbr-metal-rough-with-alpha-blending” shader.
Once all the necessary bakes are ready, I move on to building the materials. I work from the bottom up, maintaining a clean and structured layer stack. I started texturing with the fabric, aiming to give each material its own distinct character and visual depth. My texturing process is iterative: first, I block out the base materials for all elements and organize them into structured folders for clarity and ease of use.
At this stage, I establish the approximate color palette.
Only after completing the overall blocking do I move on to deep detailing for each individual element.
Below, I will break down the structure of some layers in greater detail and highlight important nuances.
Base Fabric Material: I applied the base fabric material and enhanced its complexity with an additional layer featuring a green hue set to the Darken blend mode.
Edge Work: I emphasized the edges with a lighter shade to break up tonal uniformity.
Leather Trim: I added wear to the leather trim using a dark shade with a Metal Edge Wear generator and a Warp filter.
Leather Damage: I created a damage layer via Metal Edge Wear, softening the mask edges with a Warp filter. Then, using an Anchor Point, I added subtle height and volumetric detail to the leather edges.
Stitching and Seams: I created stitching along splines using the Stitching tool, after which I boosted the height detail using Levels.
Thread Cards: I painted individual threads on the card planes by hand. First, I created a layer with transparency, then applied the base fabric material. Using a gradient, I adjusted the thread thickness and established an Anchor Point for precise height tweaking.
Thread Detailing: I hand-painted extra thread details onto the mask using the base fabric material, then gently softened the edges with a Blur filter.
Wear Physics: All materials were processed with real-world usage in mind: areas subject to continuous friction received lighter tones, while darker tones accumulated dirt and moisture. Dust was kept primarily within crevices and recessed areas.
Core Approach: When working with metal, I aimed to keep the layer structure as clean and straightforward as possible, focusing on achieving a high-quality visual result without overcomplicating the stack.
Variability (Color & Roughness): I introduced tonal variations and roughness diversity by pairing a generator with a Warp filter to break up the regularity of the mask.
Dirt and Color Accents: I applied localized dirt spots and subtle color nuances to make the surface look more vibrant and believable.
Oil Stains: Finally, I added grease marks and oil drips to create the feeling of an active, well-used tool.
Plier Handles Texturing:
Next, I moved on to texturing the pliers. I broke down the material creation process for their handles into five sequential steps:
- Base Color & Roughness: Setting up the foundational color and roughness values for the rubber/plastic coating.
- Color & Roughness Variation: Breaking up surface uniformity with subtle, splotchy variations in tone and roughness.
- Textured Grip: Adding a distinct colored overlay in the grip area.
- Height / Normal Detail: Applying fine height micro-detail and embossing to the grip overlay for an anti-slip effect.
- Dirt & Dust: Layering dirt, dust, and general wear within recessed areas and around the edges.
I applied this exact same approach and logic to all the other tools in the set.
Let’s look at these stages in greater detail, taking the screwdriver as an example.
Screwdriver Texturing (Base & Damage)
- Base & Tone: Set up the initial Base Color and Roughness values, then introduced a slightly darker shade for primary surface variation.
- Cavities & Edges: Deepened the crevices using darker tones and added chips and scratches along the edges.
- Cracks: Applied surface height cracks to break up the continuous form and emphasize material aging and wear.
Dirt, Smudges & Electrical Tape
- Dirt & Fingerprints: Added dirt build-up in the crevices of the screwdriver along with oily fingerprints, then created a dedicated layer group to isolate the electrical tape.
- Electrical Tape: Configured the tape’s Base Color and Roughness, mapped a Height map using a mask for realistic folds, and used transparency to fray the edges and introduce subtle color variations.
Finally, a universal set of corrective layers – which I refer to as post-effects – is applied on top: it enhances visual depth, brings out contrast, sharpens edges, and ties all the details together with a final pass of crisp clarity.
This is how the final texturing result turned out. As you can see, you don't need to bloat your layer stack with dozens of passes to achieve a striking visual result. A clean, straightforward structure saves time, maintains complete control over revisions, and delivers a polished AAA quality finish.
Lighting & Rendering
The lighting setup consists of a background light, a primary Sky Light, and several Rim Lights to highlight key accent areas of the model. The main goal is to create deep shadows and emphasize specular highlights. To achieve a render with the feel of a vintage camera, I used a very narrow field of view (FOV 10°) paired with a shallow depth of field (DOF), chromatic aberration, and subtle film grain.
Additionally, I consistently introduce volumetric fog to soften harsh contrast and give the image a more atmospheric, three-dimensional, and lifelike quality.
Final adjustments were made in Photoshop: I set a focal accent using a Depth of Field pass and tweaked the overall tonality with a Color Balance adjustment layer for a more expressive result.
For the final renders, I also exported Displacement maps from Substance 3D Painter, which added distinct surface relief and volume to the seams, fabric texture, and individual thread details.
Conclusion
In total, this project took about 8-10 days (excluding rendering, as I spent a bit extra time setting up the lighting and framing the shots).
The hardest part was making the asset truly interesting and believable – creating something you look at and instantly trust – while strictly adhering to game-ready optimization requirements. I spent a lot of time and multiple iterations on the fabric material to achieve a completely natural look.
The most enjoyable stage was working on the leather, threads, and textiles. I loved conveying their operational wear and tear and infusing the materials with visual storytelling.
This project provided invaluable experience: I mastered new fabric sculpting techniques and significantly leveled up my rendering skills. In particular, I discovered many useful tricks for camera composition and final post-processing.
I highly recommend checking out tutorials on textile sculpting, seam construction, and wear effects-they gave me the right understanding of how to approach fabric detailing.
Thank you all for your time and attention! I hope this breakdown was insightful and inspires your own texturing experiments. Special thanks to the 80 Level team for the invitation and the opportunity to share my workflow.