logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

How To Model & Texture A Photorealistic Oil Lantern Featuring Metal & Rust Textures

Imad Messaoudi provided a step-by-step guide on creating a vintage oil lantern using Blender, ZBrush, Substance 3D Painter, and Marmoset. He explained how the high levels of wear and detail are achieved, sharing techniques for making the prop look naturally aged and enhancing realism.

Introduction

Hello everyone! My name is Imad Messaoudi. I’m a 3D Environment and Props Artist. If you caught my previous article, you might remember some of my work, but if not, welcome!

Over the past three years, I’ve contributed to multiple game projects from different studios while working at an outsourcing studio where I created a variety of assets. Last year, I had the pleasure of working as a 3D modeler at Blur Studio for multiple projects, where I created film-quality assets/props, from modeling to texturing and lookdev. Recently, I’ve been working on refining my approach to asset creation and exploring new tools to push my work further.

References

Starting this project, the idea was to make something as a metal and rust texture study, so I started where I always start my projects: to gather references and find inspiration, which is Pinterest. Although it has become full of AI content, I still find a lot of cool real references there.

Upon stumbling on this vintage oil lantern, I really liked the levels of wear and details and decided to go for it. I try to gather as many references as possible from different angles and also use texture references from similar objects to help during texturing. In this case, I ended up mixing a few elements from different lanterns to make it a bit more unique and interesting.

Modeling

The modeling process for this project was pretty straightforward since the asset’s shape is relatively simple. Most of the work was done in Blender, with additional sculpted details added in ZBrush, which I’ll discuss in more detail later.

I started by blocking out the main forms, focusing on getting the proportions and overall structure right while keeping realistic measurements in mind. Since I didn’t have exact dimensions for this specific lamp, I referenced similar models, with eBay being a surprisingly useful resource for finding measurements and close-up images of vintage items.

After that, I started creating the high poly, following mainly a subdivision workflow but also using a boolean -> remeshing -> smooth workflow on a few parts where it would save time, all while trying to keep things non-destructive with modifiers in Blender to simplify future adjustments and low poly authoring.

Once the base model was ready, I made a duplicate of the mesh and brought it into ZBrush to add surface details and break up the clean geometry, making the prop look naturally aged. This step was crucial for enhancing realism, as small imperfections go a long way in selling the history of an asset.

I used a combination of metal damage alpha brushes to add subtle surface wear, dents, and scratches while also manually pushing in certain areas with standard brushes to create depth and variation. Additionally, I chipped away at edges where damage would naturally occur over time, giving the prop a more organic and weathered look. Breaking up the silhouette of some parts helped reinforce the idea that this object had been through years of use and exposure to the elements.

Next, I started making the low poly, starting from the high poly copy that wasn’t sent to ZBrush. Since it is mostly non-destructive, I disabled the modifiers and started clearing all unnecessary edges that don’t contribute to the mesh shape and silhouette, also making sure to triangulate all Ngons. I was quite generous with the poly count for this asset, as I intended it to be a hero asset that would be seen up close in the first person.

Once the low poly is done, I start making UVs, and in this case, it was a pretty clear-cut process, considering that the asset is made of mostly basic shapes. My software of choice for UVing these past few years has been Rizom UV; it makes the process a lot less annoying and quick.

This asset has two texture sets: one for the full lamp and one for the door glass. Here, I follow the common rules for UVing a game asset, where I add a seam on every hard edge/smoothing group for a correct normal bake. I also straighten UV shells where possible to maximize UV area and reduce aliasing. I also make sure the UV islands follow the same directions; this makes it easier to texture when adding grunge textures. Additionally, some UV shells are scaled based on how they are viewed; if they are hidden on the inner side, I would scale them down to give more texel density to other important parts.

Next, I send both high-poly and low-poly to Marmoset Toolbag, where I prefer to do my baking, as I find it provides better tools than Substance 3D Painter in this regard. There is nothing special here; the only thing to mention is that I like to bake two AO maps: one with ignore groups checked and the other unchecked. This is so I can get more control over masks at the texturing stage in Substance 3D Painter.

Texturing

Now, we get to the most important stage of the project: texturing. This is where everything really starts to come to life. With the modeling and UVs all set, this stage is all about adding depth, material definition, and those little details that make a prop feel real.

This process involves building up materials, using smart masks to speed things up, and adding hand-painted touches to achieve that extra level of polish. It’s all about finding the right balance between procedural workflows and manual tweaks to make the textures feel natural and believable.

My goal for this project was to study and improve my skill with metal and rust texturing. Before getting into Substance 3D Painter and starting to work, I usually gather further references on the materials I’ll be working on. I looked for images of objects with interesting metal and rust details and wear to better understand how they age and react to different elements. Once I had a solid reference library, I moved on to setting up my base materials in Substance 3D Painter.

I start with a base metal layer by adding some normal details like engraved text, dents, and welds, as well as micro surface variation.

After that, I began layering subtle color shifts and roughness variations to break up the surface and add more depth. I used my references as a guide, paying attention to areas where dirt and discoloration naturally form. I introduced slight hue variations to make the metal feel less uniform and more organic. Then, I refined the roughness, creating a contrast between worn-down, shinier spots and rougher, dirty areas. I didn’t spend too much time on the metal layer, as it would be visible only subtly.

Next, I tackle the paint layer, which I find to be the most interesting, as it has a nice interplay between the rust damage and paint. I start by making a base paint layer with a bit of detailed variation.

Then, I paint the base rust layer using different dirt brushes and stencils. I try to keep a nice balance between detailed areas and areas of rust to get a nice contrast and improve realism. This layer will be later referenced multiple times for adding details on top.

Afterward, I proceeded to layer various details based on my references, adding variation in color and roughness. I always try to add different scales of detail — large, medium, and small — to give the texture more depth and richness. Furthermore, I use multiple fine noises on layers to break up my masks; this helps enhance the frequency of details.

I should mention that by this point, I had set up a basic scene in Blender with lighting, where I regularly export the textures to check how they look. Sometimes things look good in Painter but differ in other software, so it’s good practice to check textures outside of Painter.

Next, I textured the most worn rusty areas: the handle and edges, which are mostly a rust material. Like before, I focus on getting good variation and contrast between all the rust colors.

It is the same process for the black paint. Even though it is a black material, adding some subtle color variations helps with realism. Here, all the metal damage had to be done by hand, as the smart masks and generators were giving generic results.

For the fuel container, I followed a similar process:

As for the glass window, it was pretty simple: layered a few grunges and smart masks and adjusted the roughness and contrast.

One last thing I like to add to these old antique props is spider webs; they help give the asset a story and make it more believable. I mapped a spider web atlas texture to a plane and proceeded to cut and place a few where it would make sense.

And that’s pretty much it for texturing. There are a few more HSL and value adjustments to color and roughness, and then I export everything and prepare for rendering.

Rendering

For rendering, I decided to use Blender. I find setting up lighting quicker in Blender compared to Marmoset, as Blender's Cycles engine offers a lot of flexibility, allowing for fast real-time feedback and high-quality ray tracing, which speeds up the iteration process. The node-based material system and light linking provide more granular control over reflections and shadows, making it easier to achieve a realistic look. Additionally, Blender’s built-in compositor allows for post-processing tweaks without needing to switch to another software. That said, both software options deliver great results; it really comes down to personal preference.

Before setting up the scenes, I like to gather inspiration from professional photography to get a feel for realistic lighting and composition. For this project, I wanted to experiment with different lighting scenarios, so I created multiple setups to explore various moods. To enhance the realism and provide depth to the renders, I used Megascans assets for the backgrounds, which helped ground the lamp in believable environments.

For the first scene, after finding a good camera angle and composition, I experimented with different HDRIs to get a good balance of light, shadow, and an appealing color palette. After testing a few options, I found an HDRI that worked well for the lighting, but the background image visible through the window didn’t match the mood I was going for. To fix this, I used a second HDRI solely for the background, ensuring it didn’t affect the lighting. This was set up in the Shader Editor using a Light Path node, allowing me to control which HDRI influenced the illumination while keeping the other purely for the backdrop.

To further enhance the look of the prop, I added a few lights to highlight its details and create a visually appealing contrast. I usually start with a main key light to define the primary form and bring out the texture work. Then, I place a fill light to soften harsh shadows and ensure no important details get lost in the darkness. Finally, I use a rim or backlight to separate the asset from the background and give it more depth.

I followed the same process for the remaining scenes and shots:

For post-processing, I used Photoshop to refine the final render. I made subtle adjustments to the contrast using curves, which helped enhance the depth and make the details pop. I also applied a bit of sharpening to bring out finer textures and add clarity, while a soft vignette helped direct focus toward the lamp, giving the composition a more polished and cinematic feel.

Conclusion

I started this personal project a few months back, and I worked on it a couple of hours a week in my free time on and off. Since this was meant to be a study, I didn’t feel any rush to finish it, with most of the time spent refining the texturing process. One of the challenges was finding the right balance between procedural techniques and hand painting to achieve realistic wear and tear. Getting the rust and paint to look natural without feeling too random or overly procedural required multiple iterations.

What I enjoyed the most was building up the layers of paint and rust, gradually adding details and imperfections that made the asset feel more authentic. Seeing the surface evolve with each pass, from subtle scratches to deep rust patches, was really satisfying and brought the prop to life in a way that felt natural and believable.

Through this study, I learned the importance of strong references and subtle variations in roughness and color to add realism. One key tip I’d share for texturing realistic 3D props is to avoid uniformity; even if there are a lot of details, if they are uniformly spread, they won’t look realistic. There needs to be a good contrast and balance to make a material feel natural. Also, experimenting with different lighting setups is crucial to properly showcasing textures and ensuring they hold up under different conditions.

This texture study was a great opportunity to refine my approach to texture creation, especially when it comes to capturing realistic surface details. Focusing on metal and rust helped me improve my ability to balance levels of detail, making the final result feel more authentic. Studying real-world materials played a huge role in this process, reinforcing the importance of strong references and subtle variations in textures. I’m excited to carry these lessons forward into future projects and continue developing my texturing skills.

Imad Messaoudi, Environment & Props Artist

Interview conducted by Amber Rutherford

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