logo80lv
Articlesclick_arrow
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_login
Log in
0
Save
Copy Link
Share

Modeling & Texturing a Kiosk Inspired by East European Towns in the Early 2000s

Daniil Gibbs talked about the Kiosk project, explaining how the idea started as an asset, detailing how the objects were modeled, adding details like corrugated sheets and window bars, and showing how he textured every element of the scene.

Introduction

I first got into 3D in 2018 while working as an engineer in Moscow. I wasn't enjoying that profession at all and knew I wouldn't stay in it for long, so I started looking for something I could genuinely enjoy and potentially build a career around. At first, I considered graphic design and working in Photoshop. But at some point, I don't even remember exactly what sparked it, I became very interested in 3D, particularly in game development, and decided to focus on that direction.

While researching different 3D packages, I ended up choosing between 3ds Max and Blender. Even though 3ds Max was more widely used at the time, its interface felt quite complex and unintuitive to me compared to Blender. I started learning modeling through YouTube tutorials in my free time after work. Initially, I assumed I would also handle texturing in Blender, but later I realized that wasn't really a viable option for me. The node-based workflow felt inconvenient, and Blender is rarely used as a primary texturing tool in modern game production pipelines.

For the next two years, I mostly focused on improving my modeling skills. After leaving my engineering job, I suddenly had plenty of free time and enough savings to focus entirely on developing new skills while trying to break into the game industry. That's when I started studying PBR texturing workflows more seriously. The industry standard, both then and now, was Substance 3D Painter, and I immediately felt comfortable working with it.

A little over six months later, after publishing eight projects in my portfolio, I landed my first job, or rather, the job found me through ArtStation. That's how my career in game development began at CM Games, where I worked on the VR title Into The Radius. Later, I joined Social Quantum, contributing to the mobile project Lost Future. Currently, I work as a Texture Artist at L3D Studio, where I focus on realistic PBR texturing for vehicles and props used in AAA titles, including Wardogs, World of Tanks, War Thunder, MXGP, Microsoft Flight Simulator, and Enlisted.

The Kiosk

The Kiosk asset originally started as one of my final freelance commissions. I received a message on Telegram asking if I could create a kiosk asset inspired by the small street kiosks commonly seen across Russia in the early 2000s. The required polycount was mid-poly/high-poly, but without pushing the geometry too far. According to the brief, the camera would simply move past the kiosk in a fly-by shot, without any close-ups.

Because of that, there was no need to add excessive geometric detail. For example, the display window was intentionally kept flat instead of modeling individual products on the shelves. After completing the commission, I decided to refine the asset further and prepare it for publication in my portfolio. When gathering references, I tried to capture the atmosphere of that era as authentically as possible, a typical dusty kiosk somewhere in a provincial Russian town in the early 2000s, covered with advertising posters, public notices, and graffiti.

Near the entrance, there had to be a trash bin overflowing with garbage, and next to it an old but still sturdy chair where the shop assistant could sit during smoke breaks. The whole area around the kiosk is messy, with puddles left after a recent rain. Naturally, there is also a large puddle right in front of the seller's window. To prevent people from stepping directly into it, I placed a pallet there.

Most references were easy to find through Google. However, finding a good reference image for the display window turned out to be surprisingly difficult, specifically one without reflections on the glass and with decent image quality. In the end, ChatGPT helped generate a suitable reference. After a few prompts, I had something usable, not perfect, but good enough for the task.

As mentioned earlier, the client wanted the asset to be mid-poly/high-poly, so I didn't need to bake a Normal Map, which I typically do for low-poly assets. I followed the same approach with the additional props to keep everything consistent.

Modeling

Modeling all objects started with primitive shapes defining the silhouette. Most proportions were blocked out by eye rather than using strict real-world measurements, and later I added interesting details such as corrugated sheets and window bars. To create the corrugated metal, I made a small curved plane shaped like a sine wave and repeated it using the Array modifier until reaching the required size. Then I added thickness using Solidify and finished it with Bevel.

For the window bars, I used Subdivision Surface and Skin on a simple edge structure like the one shown in the video below. This approach makes it possible to create proper curved bar geometry without modeling each element manually. After that, I added a Mirror modifier along the Z axis, applied Bevel, and used Array to repeat the bars to the required width.

The torn blue faсade covering was created with Subdivision Surface in mind. I started by adding several loop cuts to bend the edge into the desired shape, then applied the modifier and gradually introduced additional edges while slightly pulling the geometry to form large folds.

The remaining objects were built from simple primitive geometry with a basic Bevel, while most of the finer details were added later during the texturing stage. The only mesh optimization I performed was removing unnecessary loop cuts created during the window bar setup after applying Subdivision Surface and Skin, since they didn't affect the final shape.

For UV mapping in Blender, I always use a combination of the add-ons UVToolkit, Texel Density, and UVPackmaster. In the end, I placed the kiosk itself on one UV set and the additional props on another.

The scene uses two 4K textures. To optimize texel density, invisible polygons were removed, and some UV overlaps were used, for example, on the chair legs or the cigarette packs hanging in the window. Additionally, I added some ready-made photogrammetry trash assets from Quixel, which I'll show later during the texturing stage.

Texturing

Next, let's take a look at the texturing process. I'll show the material setups mostly through video. It's simply easier that way. I won't go into extremely detailed explanations, but you'll still be able to see what layers are being added. I'll start with the kiosk itself. All materials begin with base colors, followed by surface irregularities and a base Normal. After that, I add details such as wear and scratches on the wooden door, darkening on protruding elements, and different color variations on vertical and horizontal surfaces.

These variations resemble sun fading or discoloration. On vertical surfaces, they behave more like streaks, while on horizontal surfaces, they appear as a combination of various stains. Next, I add Roughness variation to break up specular highlights and create more interesting reflections under lighting. Finally, I added a few dark and bright scratches to finish the material. I use a similar approach for the blue faсade covering.

The metal material was intended to look dark and dirty, with mold, rust, and grime appearing together, while keeping the rust relatively subtle. After that, I add set-dressing details such as posters, graffiti, and notices. I won't go into much detail about how I create paper and sticker materials, since it's a workflow I often use in my projects. However, one small detail worth mentioning is the black fill layer used underneath the notices.

Without it, a white outline would appear along the paper edges due to the underlying base color. Next, I add nails, leaks, different types of dirt, and of course, the water puddles. I really like the highlights they create. To finish the kiosk material, I add the Curvature Map to the Base Color in Overlay mode. This slightly mutes the overall color while adding a bit of cavity shading, which helps accentuate small surface details. I will use this trick again later as well.

Next comes the ground texturing. Here I blend several ground materials: loose dirt, smoother soil with footprints, and soil with dry grass. Then I add some color variation, debris, and color correction. After that, I create the water puddles. The puddle mask is later reused as a Displacement mask for tessellation. Again, I apply a Curvature Map in Base Color with Overlay blending for additional detail. However, in this case, it's not just a Baked Map.

It's Curvature Sobel, generated using a special filter that converts the Normal map of the ground texture into a Curvature Map. I extracted this filter from Substance 3D Designer, along with several other useful filters. The Opacity map was painted using the Dirt 2 brush and slightly adjusted with Levels.

Now for the trash bin. I start with the base color, then add a Curvature Map in Base Color with Overlay blending. After that, I introduce various variations such as aged paint, leaks, and Curvature Sobel to emphasize thicker layers of aged paint. Then I perform color correction. Next comes rust and paint chipping. The material setup here is designed so that almost everything generates automatically with minimal manual tweaking.

The dust and dirt layers are almost unchanged. They're duplicated from the kiosk material. As for the garbage itself, I found a suitable picture and generated Roughness and Displacement Maps from it. On top of that, I added Quixel photogrammetry assets of various types of trash mentioned earlier.

Next is the old chair. The main goal here was to create a convincing aged wood material. In this case, I relied more on my visual experience than on references, although that's not always the case. I added some damage and gradually built up the wood material layer by layer.

The result is a fairly complex material, so I won't go into too much detail. Then I add dirt duplicated from the trash bin material and move on to the seat. This material is simpler: faded fabric, some pilling, slight tearing, and dirt.

Finally, the old dirty pallet. I wanted it to look rough, made from untreated boards, cracked and weathered from moisture exposure, with a greyish, earthy tone. I achieved this effect by overlaying a picture of old wood on top of the base wood material and deriving Roughness and Height masks from it. Attentive viewers might notice that when I enable the Base Color layers of the old wood textures (color var 1 and color var 2) in Normal blending mode with 100% opacity, they do not completely override the base material color but rather complement it.

This happens because the Color variation folder containing these layers is set to Soft Light blending mode. The board edges were also created using a regular picture, combined with color correction. Finally, I add dirt, making sure that from the side it looks wet, since the pallet sits in a puddle and will be slightly submerged during rendering.

Rendering

The scene was rendered in Marmoset Toolbag 5. When I first started learning rendering, I came across a lot of materials about how lighting should be set up and how many light sources should be used. Over time, I moved away from strict rules and now mostly rely on visual intuition. I try to set up the camera and lighting in a way that clearly shows the depth of the scene, the details in the Normal and Roughness Maps, as well as attractive highlights and silhouettes.

I start with the camera setup. In this case, the field of view ranged from 35° for top-down shots to 45° for lower angles. Then I switch Tone Mapping to ACES, slightly increase Contrast and Saturation, add a bit of Sharpen and Vignette, and that's usually enough.

Lighting is typically adjusted individually for each shot. As the main light sources, I usually use Directional Light, typically around three to six lights. When I need to simulate actual light fixtures, I add Spot or Omni lights. I also use an HDRI, usually the same one across projects, simply because I like it.

You can see in the video that the lamps emitting yellow light use two light sources. If I use only the one placed inside the glass lamp, it looks nice visually, but due to the characteristics of the glass shader, it barely illuminates the surrounding area. No matter how much I increase the intensity, the lamp itself just turns white.

That's why I added a second light source placed under the lamp. For additional post-processing, I used Luminar Neo. It has some excellent tools for intelligently enhancing detail and contrast. In the video, I show the preset and the difference before and after.

A small tip for anyone using Luminar Neo: keep the original renders stored separately from the edited versions. If you overwrite the originals, the effects will stack every time you resave the image and eventually become too strong. Also, avoid changing the location of the original renders. That way, you can always reopen Luminar Neo and continue adjusting them from the catalog.

Conclusion

As for production time, the kiosk itself took about 18 hours, which was agreed upon with the client. The rest of the work, including improvements made for the portfolio version, took several additional days. In total, the project took roughly 7–8 days. The biggest challenge during production was figuring out what small storytelling details could be added to such a simple object to make it visually appealing and strong enough for a portfolio piece.

My favorite part of the process was working on the smaller details, the chair, the trash bin, the notices and posters, and the seller's window area. These elements required the most attention to detail and creative problem-solving when building the materials. This project was a great opportunity to recreate a small but recognizable piece of everyday urban life from the early 2000s in Russia.

Working on it allowed me to focus on storytelling through environmental details and explore how small imperfections, clutter, and aging can make a scene feel authentic and believable. For those interested in modeling, I would recommend the YouTube channel by Artem Slakva, who also created the Super Blender course on VideoSmile. For texturing, I recommend the Super Substance course by Alexander Kolyasa. You can also find several of his free tutorials on YouTube.

Daniil Gibbs, 3D & Texture Artist

Interview conducted by Amber Rutherford

Ready to grow your game’s revenue?
Talk to us

Comments

0

arrow
Type your comment here
Leave Comment
Ready to grow your game’s revenue?
Talk to us

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