Long life to Embark studio and its fabulous procedural artists dream team !
truly excellent and inspiring to read. Would have loved to read some on the texturing since that is top-notch.
great environment with a lovely serene sense. Thanks for the write-up!
Sven Mrđen shared some details behind his Old Western General Store inspired by Red Dead Redemption 2. Software used: UE4, Blender, Substance Painter, and Substance Designer.
Before anything else, I want to thank 80 level for giving me the opportunity to share my process with you.
I am Sven Mrđen and I’m from Zagreb, Croatia. I’ve been self-learning 3D art in my spare time for a year and a half. 10 years ago, I remember trying out Blender and having a desire to create animated movies with it. That didn’t last long. 10 years later a series of events got me into 3D modeling. After using 3ds Max for a few months, I realized the power of 3D and what a great addition it would be to my current skill set. I’ve been pursuing other creative endeavors prior to this and I see this medium as another way of expressing myself and as a great tool that will help me achieve my visions.
Inspiration, Preparation & Goals
I always have numerous projects in my mind, waiting for the right time to be executed. I think some are still too big in scope for now, but some might just be around the corner. After the latest ArtStation challenge based around the Wild West theme and with all the hype around the release of Red Dead Redemption 2 (I’m a huge fan of Red Dead games), I felt it’s time to start working on an Old West project of my own. I do wish I started with this project while the Wild West ArtStation challenge was active since I already had plans for it during that time, but I was busy with other things so the project had to wait.
During the pre-production phase, I immersed myself in the setting I was creating. I didn’t go that far to imitate Daniel Day-Lewisб dress as a cowboy and move my workstation into a barn, but I still tried my best. I grabbed references from various places: Google images, Pinterest, YouTube, Reddit, and other social media platforms, but what can also be really useful is Google Street View and being able to study real environments from different angles.
I wanted to focus on a single building and try to detail it as much as I can. It had to have some kind of a story and meaning behind it. If it’s just there to look pretty and doesn’t leave viewers wondering about it, it’s ultimately pointless in my eyes. From all the types of the buildings, I felt the general store was the one that had the most potential because of all the props I could put around it. As you will see in the next image, the original building looked different from the one shown in the final renders. I wanted to go with an old, small store, but during the project, I realized it was too simple and that I could push the architecture further. More about it later in the article.
This scene took around 4 weeks of work to come to life. As always, the project started as a blockout in a 3D modeling program. It is important to make sure the scale and proportions are correct, so I imported a default mannequin from UE4 to serve as a guide and duplicated it a few times around the scene, covering a few key areas.
Once the blockout was detailed just enough to capture the feeling of the place, I imported everything into UE4 and immediately started working on basic materials and setting up the lighting. I wanted to make sure that this is the right direction I’m going in. Once the architecture and first assets were finished, I continued creating more props during the project to fill up the front of the store. All the necessary props were written in my to-do list and I made sure to cover various types of items. I didn’t want to spend huge periods of time just generating models one by one, so I broke that workflow by constantly switching between modeling and texturing – finishing a small group of selected assets, texturing all of them, and then going back to another group.
Props were created in a standard way. I created both low and high poly versions and then baked the details from the high poly to the low poly in Substance Painter. Since I wanted to speed up the modeling process, I sculpted some additional details only on the assets that would really benefit from it, while for the rest I did everything in Painter.
I always try to add imperfections in models like these to make them more natural and feel like they have actually been used in the real world. Let’s take for example the supplies boxes on the left side of the building. Once the planks were duplicated and perfectly aligned, I started editing each one of them – changing their sizes, making some sides slightly angled, adding a few extra loops to change the width along the plank, changing the spacing between each plank etc. I believe all of that makes the final model more interesting and it breaks that 3D look where everything looks perfect.
Most of the props were textured in Substance Painter. I usually start with some base material from the Painter or from Substance Share because I don’t have a lot of experience with Substance Designer, but that will change in the future. I created a few smart wood materials from the premade wood base, and I used them often as a starting point. Then I began with the layering. When approaching the texturing phase, it’s good to think about how the model would be used in real life. That will help figure out things like how it gathered dirt or how it was damaged over its lifetime. I always try getting a nice variation in the texture, especially with the roughness, which is very important. I used a lot of smart masks during the process but always made sure to edit them manually with various brushes for additional variation and also to break the repeating patterns of the mask. Using references can help a lot, and during this project, I realized that Sketchfab can sometimes be really useful for this as well. One can find lots of models made with photogrammetry and inspect them in a viewport.
There is a great ACES UE4 LUT you can find here, which makes the materials in a viewport better match the one in UE4.
After exporting textures, I imported them in a new material instance and made some additional changes to them so they could fit better in the scene. That’s how I made them slightly different in terms of colors which I thought was important considering a large part of the scene consists of objects made from the same type of material.
With planks on the walls, I tried a couple of approaches. At one point I modeled them, covering the shape of the wall, but I wasn’t satisfied with the result. So, I decided it’s time to jump into Substance Designer and start learning that software. 3 days later, I came up with the following material:
I tried breaking everything to escape from the uniform look of the material: colors, roughness, dirt, damages, shapes, angles, height. All of these variations across the texture maps helped to make the material feel real and more interesting. The planks were angled just enough so those inconsistencies could be seen from a distance.
I started with a tile generator in which I made basic tileable planks and gave them some angle variation. Then, I proceeded with a bevel and blur nodes to smoothen out the edges. Flood Fill nodes gave the material color and height variations and all the wood grain, knots and damages came from various noises warped in a specific way and then blended together. That information went into a height output, while the scratches and smaller details only went into a normal map. Once finished with the height information of the planks, it was time to color them. The process consisted of using those same blends as masks for a Gradient Map node and then also creating some new masks for bigger variations across the whole map. Later, I made some smaller additional color and height tweaks in the material to make it look like the finished result.
To give the planks some height, I used parallax occlusion mapping (POM). Tessellation didn’t work for me as I wanted it to so I figured I should try a new method. This was the first time I used it so the shader setup is more or less identical to the one provided in the Unreal Engine wiki page. It’s a fairly straightforward setup and it just works. You can learn how to do it yourself here:
So, in the end, my approach for the walls was modeling the wall itself as a simple plane with the holes for all the windows and doors (they are just regular models), applying the material and using POM.
Working With Decals
A lot of detailing in this scene comes from decals of all kinds – dirt decals over the walls, windows and the roof for some additional variation, roughness decals on the edges of the porch and even a few normal decals on the ground for tracks left in a mud. I have a small database of decal textures I’ve gathered from various places that I tend to use for some finishing touches. Then it’s just a matter of scaling and rotating them in different ways to create the desired effect.
Blood and signs are also decals. At first I created unique textures for each sign, but eventually, I switched to a generic material and decals for words that were made in Photoshop. That way it was easier and faster to make additional edits.
Lighting & Post-Processing
I decided to go with a baked lighting for this project because it was something I never did before in an exterior scene.
The setup was as simple as it can be – a directional light (sun) and a skylight – both set as stationary. The sun’s intensity was set to 3.14 and I made it a bit warmer. The majority of parameters of the skylight were default, with the exception of the color of the lower hemisphere, which I changed to a shade of orange to fit better with the ground.
It is important to have a specific point of focus in the scene, and getting the angle of lighting right is a one way of achieving that. At first, the directional light came from the left side of the frame, illuminating both the front and the side of the general store equally. You might sometimes not like hiding some things you want to show in the shadow, but think of the whole picture. Both walls being illuminated equally caused neither of them to stand out, and that was bad. I made it clear I wanted the front of the store to be the area of interest which will eventually lead the viewer towards the blood on the porch. Thus, I rotated the sun at approximately the same angle it was at before, just to the other side. I kept the doors and windows on the porch hidden in shadows on purpose to increase the visual contrast.
Now, if you’ve seen my post on ArtStation, you noticed that I also provided a couple of renders with a different lighting setup. That one was dynamically lit (with the same settings) and I wanted to show the difference it can make. I positioned the sun so that it shines from the back, through the treetops, and towards the viewer, casting lighting and shadows on the ground and amplifying the details of it, but at the same time, the general store was in the shadows and the focus changed.
For the sky, I used an HDRI texture which I applied to the sky sphere, but I actually used a default UE4 sky during the lighting bake. I tweaked the colors and boosted the cloud opacity, and this gave me a specific look after the bake which I couldn’t get with an HDRI. After the bake, I switched the skies but still made sure they looked similar in terms of colors and the number of clouds because otherwise the look of the lighting wouldn’t match with the sky and it wouldn’t feel right.
It is important to mention that I used Luoshuang’s GPULightmass for baking. It looks brilliant so I highly recommend checking it out here.
Post-processing is what made this scene. I spent a lot of time with it and it made a huge impact on the mood. I played with a white balance and then changed a tint just a bit towards the green tones. I like slightly desaturated look so I usually lower it to somewhere around 0.8 and 0.9. I boosted the global contrast to 1.2, but notice how I boosted it in a specific direction. Those tweaks can drastically change the looks. I did the similar changes for every other parameter, trying to balance everything. Right from the beginning, I set the min and max brightness to 1 so it doesn’t constantly change while I’m working with colors. I removed the bloom and added a tiny amount of chromatic aberration for finishing touches. I think that it can improve the sense of realism, but for me, if it is noticeable, there’s too much of it. I also felt like boosting an AO in the whole scene, but I reduced the radius of it drastically so it doesn’t become overwhelming. I made sure the shadows are not impossibly dark and that details are not lost during the process.
In short, it’s important to be subtle when tweaking these values. If it is too much, it can really hurt the visuals. One rule I tend to follow is this – when you want to boost something, start with a too strong value and slowly reduce it until it feels right, instead of starting from 0 and increasing it. In my experience, there’s less chance of overdoing it.
I also made certain changes in .ini files and via console command to improve the visual quality. I switched Unreal’s diffuse BRDF to Oren-Nayar, changed an anti-aliasing method to TAA (r.DefaultFeature.AntiAliasing 2) and sharpened the image (r.Tonemapper.Sharpen 0.9). Then, for grabbing final images I set the screen percentage to 200 which basically rendered the image at a higher resolution than my screen and then scaled it down to fit the viewport. This resulted in a much sharper render. On top of that, I always use a custom Post Process material to sharpen the scene even further. The setup of it looks like this:
Everything has a story, in one form or another. With props, I can tell it through modeling and texturing. In a scene as a whole, I can tell it with object placement and lighting. This place had its own story as well, and I wanted to push it even further, but it just wasn’t possible at this time. I wanted the viewer to be drawn to the front of the general store. I wanted them to notice the blood trail going from the front door and eventually disappearing in the mud. The pillar on the left has blood stains as well. The window is shattered. The bucket with oranges is kicked over and they all scattered across the ground. Did somebody run away? I wanted them to ask themselves – „What happened behind the walls of this place?“ – and to feel a need to find the answers.
Challenges of the Art Direction
From the total of 4 weeks I spent working on this project, the last week solely consisted of tweaking the lighting and the post-processing. In these situations, it can be easy to fall into a never-ending cycle, and I have to admit I was a victim of it as well. I ended up with 300+ screenshots depicting various changes in things like color temperatures, fog density, the contrast of the shadows, the strength of an AO etc. I constantly compared them and tried to figure out which one is better, but it seemed like there is no end to it. Like in other art disciplines as well, spending too much time with it tends to weaken your senses and bad choices can be made. A few times I made the image worse, burning half of the details in the process, while in my mind it looked like an amazing improvement just because I was so used to and bored with the current version, so anything different looked better. That is why it is important to make regular breaks so the brain can rest a bit, be it about visual art, music production, writing, programming or anything else.
At times like these, feedback from other people is incredibly useful. Everyone should try being active in some internet communities and not be afraid of posting their work to be judged. Only recently have I started joining some Discord communities and the experience so far was invaluable. DiNusty Empire and 3D Modeling stood out as great places to learn from and talk with like-minded people.
As I have mentioned in the beginning, the scene looked different in the first week of the project. I realized that if this was the only building I was going to make in this setting, why wouldn’t I celebrate its architecture more? I didn’t use many of the recognized shapes in the original version. The other problem was that material-wise, it was just too boring. Almost everything was brown and that meant nothing stood out. It was time to turn everything upside down – I boosted the saturation and the lighting, I started brightening everything. The walls became colorful – green, yellow, red, blue. Eventually, I stuck with the blue one and from that point on, the direction changed drastically. I went for the color palette which consisted of blue, white and gold tones. I avoided the red color in props on purpose so the blood could be the only red part of the scene. This is how the scene looked like before those changes:
In the end, it wasn’t performance issues that were the most challenging part of this project – everything still runs smoothly. It wasn’t the modeling, the texturing or the environment design either. The real challenge became the pursuit of my vision and trying to make it the reality. Did I accomplish it? No. I feel like I’m about 70% there. But we can always take a deep breath and try again the next day.
Below we are listing a couple of related Unity Store Assets that may be also interesting for you. Thank you for reading!