Layered Environment Storytelling in 3D

Layered Environment Storytelling in 3D

Ehsan Ebrahimzadeh talked about the production of his amazing “Our Heritage” project, which he’s assembling with Aidin Salsabili. Amazing high-level environment design.

Ehsan Ebrahimzadeh talked about the production of his amazing “Our Heritage” project, which he’s assembling with Aidin Salsabili. Amazing high-level environment design.


My name is Ehsan Ebrahimzadeh, I’m originally from Iran. Currently, I live in Washington, United States. I started my BA in computer science in 2006, and from the first semester, I started an indie game project with two of my friends. I am self-taught since we had no 3D art school in Iran back then. We kickstarted our own small studio, working on an FPS game, Men of Freedom: Tangestan. Iran Computer and Video Games Foundation funded this project with 150k $. We were a small team, thus besides working on 3D art and Environment, I had to work on lots of other things, such as level design, VFX, technical art, and even sounds. As a co-CEO and artist in our studio, I learned a lot.

After all, in 2013 our game won the second-best game award in Tehran Video Game Festival, where I was awarded for the best picture and best sound awards. I have also the experience of working on some other titles like Shadow Blade: Reloaded and other freelance projects. Moreover, I was an instructor of 3D Environment Art at Iran Computer and Video Games Foundation. Currently, I am working on my portfolio and looking for a job as an environment artist in the US.

Project “Our Heritage”

“Our Heritage” is a story by Aidin Salsabili and me about the future of the world and human being. The story happens in 2050 New York, where the human being is fighting with horrific climate change and its effects. A massive company called “The Answer” has made sanctuary cities with special technologies so that people can live in. Adrian, our main character is a scientist working on clean water and food in The Answer company. During his research, Adrian finds out the company had a very decisive impact on the climate change and they have changed human genetics and food. Adrian decides to get out of the sanctuary city and find the truth. Thus, he ends up in part of New York where has been abandoned and overgrown by foliage.

This environment is the first part of the series we have planned for since we have a full story with characters and environments. This room is his safe house where he studies about the truth and works on evolved creatures.

1 of 3
1 of 4

Layered environment storytelling

I started making video games because it was the best way to express my notions. By layered storytelling in an environment, I mean an artist should consider the story in all the levels of creating the environment, from the block outs and design works to tiny little things like texturing a can and placing it. To explain my point, imagine that you want to create a room. According to your story, the room needs a table, you should think about tables usage, the role in the scene, backstory, room’s temperature, its age, small stories like a decal or scratch, etc. This helps the scene to have a harmony and cohesion between the objects, from the biggest one like walls to the small ones like pebbles. As an environment artist, my goal is to picture the story in my scene and serve the gameplay.

Planning and blockout

While working on the story and concepts, we thought about the project, as it was a full game, not just an environment in UE4. We tried to have a reason for every single object. Almost everything that you can find in our scene has its own story and a reason to be.

We even talked about the gameplay, how Adrian fights, weapons, what are the enemies look like, why they are like this and how they attack. We thought about the weather, biome, and Adrian’s requirements to survive. Aidin did some fast sketches for the sanctuary city, outside world, and many other things we talked. Climate change affects the earth in different ways, while drought intensifies in some areas, massive rains occur in others. Our story happens to be in New York with a massive amount of rain and overgrown building.

1 of 4
1 of 4

All these helped us to have a complete understanding of the world we were going to create. Based on our story the safe house has four main parts. The hall where Adrian lives and sleeps. The research room where he works. The powerhouse, where he generates electricity for the research room and upstairs where the chopper has crashed before Adrian decides to live there. I started blocking the safe house with simple boxes in 3ds max and then a quick lighting in UE4.

1 of 2


Adrian works and lives in the same place, we made a list of objects he needed for both his living and his research room. On the other hand, based on our story, nature is taking back the earth, so overgrown foliage was a necessity in the scene. To this end, I gathered many references. I also made some blocks for props to have the sense of scale. We talked about blocks and changed a few things, and then I started making props. For props, I used 3ds Max, Zbrush and typical high to low poly approach while using Knald for normal maps an AO. I also used Quixel Suite for textures.

1 of 2

Mood and Colors

We wanted to have two main color themes for the scene. Cold colors for the research room to give it a futuristic and Sci-Fi feel and warm color for the other parts. Therefore, I created some color palette for these two and we used them throughout the project. I recommend using Adobe Kuler for the color palette. It can give you quick results and a good understanding of colors.

I used UE4’s filmic tone mapper along with LUT to get the colors I wanted. In addition, looking at games like The last of us, Uncharted series, and The order 1886 throughout the project, were inspirational to me.

1 of 2
1 of 2

Textures and Shaders


I used Quixel Suite for texturing and Knald for baking normal maps and AO. We created many smart materials and this helped us to fasten our process.

Some tips on making better textures in Quixel:

  • For props, hand touching the textures in 3DO is critical. Using smart masks can help you but it is not enough. Hand paints improve your textures and make them more realistic.

  • Pay attention to every texture you have. Roughness, albedo, metallic, AO and normal map are all important. You can have extra details on roughness that does not exist in albedo.

  • Telling our story was the most important matter for us since we had no gameplay. Textures was a very good way to show the story of the scene.

  • I used RMA pack for my textures. It is easier to use in UE4 and definitely more optimized.

  • I made a master shader in UE4 for sake of consistency and optimization.

  • 1 of 2
    1 of 2

    Tile textures:

    I used substance designer to make tile textures like bricks and research room tiles.


    One of the most important benefits of using software’s like Quixel and Substance products is consistency between artists. However, sometimes it is a bit difficult to reach for small teams like us. Especially if two artists have 11:30 hour time difference! At the beginning, it was hard to have consistency, the amount of dirt and rust and the color palette of our textures, since I wanted us to have flawless texture work for our project. However, after a while, we figured things out and the result was satisfying.

    Blend Shaders


    I had long brick walls and concrete ground, which needed extra attention to get the look I wanted. By looking into references, I decided I need three layers for wall shader.

    Therefore, I made a blend shader with vertex color and height map blend.

    Red channel for wetness:

    After looking at some references, I made my shader in a way that it uses a custom mask to give the dripping look. I lerped the base color with its square to darken it and changed the roughness of wet parts. I used my red vertex color to do this.

    Green channel for Moss:

    For moss, I used my green vertex color with a combination of the height map. I also multiplied it to a mask texture to give a variation to the Moss mask.

    Blue channel for efflorescent

    Efflorescent happens in humid places. By looking at references, I realized it grows on the bricks surfaces somewhat the opposite of moss. Therefore, I used invert version of my height map to get the look I wanted.

    Concrete ground:

    I needed Water, Moss

    Therefore, I put the red channel for water, the green channel for water falloff, blue for moss. For water falloff, I also added a custom mask.

    Glass and Plastics

    I had different kind of transparent glasses and plastic materials. I needed to tackle various things like glass tint, dirt, refractivity, detail normal maps and Alpha blend.

    1 of 2

    Skin shader

    For the skin shader, I made an SSS shader with detail normal and roughness map and tint support for translucency. I used a mask texture to mask out areas I did not want to have detail maps. In addition, according to Aidin’s concept, there were emissive on creature’s body parts, which I used a mask to make them glow!


    The foliage had a massive role in these scenes and I spent lots of time to finalize foliage shader, model, and textures. For the shader, I used two sided foliage mode. Making good textures was the key to having good-looking foliage. Also, remember to multiply a two-sidedsign node to your normal so you will not have inverted normal for backsides.


    I used a material Koola introduced (I saw it on his thread I don’t know if anybody before him used it) for fake volume lights. It really helped the scene come alive and gave the mood I wanted. I also made some emissive shader with alpha support, tint and variable power, which is used in research room.


    Decals can really help define the scene. I used a different kind of decals in my scene. For dirt and moss decals, I used translucent shader but if you want to have 100% opac parts in your decal, you can use dither node to have soft blends like translucent blend type and also 100% opac parts. I also made a vertex color/height blend decal, which had tessellation for gravel and pebbles on the ground. I hand placed the curved plane on the ground for them. One technique I use to get a better result for decals on textures like bricks or large stones it to use two normal maps. One for the decal texture and the other is the back surfaces normal map with the same UV tile as the back object for example bricks, so moss or dirt textures reacts to the surface. I also made a cut out decal for the papers I had on the ground.

    1 of 2
    1 of 2


    For the carpet on the ground, the blanket on the sofa and some other cloth pieces, I made a cloth shader based on the cloth shader UE4 introduced. It really gave me the fuzzy look that I was looking for.


    I mainly used 3DS Max and Speedtree for foliage in the scene.


    For the Ivies, I used 3DS Max since I had lots of props in the scene and it was easier for me to hand place the Ivies in max. First, I placed the objects in UE4 then exported them as FBX to 3ds Max and used them to place the ivy branches. Of course, there were some back and force since during the project we changed the position of many things. However, it was super easy to export the props again and simply adjust the position of the Ivies. One important thing about the Ivies was how they grow and flow of the leaves. For that, I studied and analyzed many photos and took some pictures. I have made some tips on creating realistic foliage, which you can find here.


    Foliage and mainly the tree was the connection between outside world and the safe house. It was very important for me to get to the right shape. I used Speedtree and its powerful mesh attraction options to reach my goal. I exported a block of my room where I used some simple boxes to guide the tree into the room. I could use Zbrush but I really wanted to test Speedtree and I was very happy with the result.

    Ground plants and ferns

    For ground plants and ferns, I used 3DS Max since they were simple and the important thing about them was looking at the reference to see how they grow and how could I use them in the scene.


    Perfect lighting for the scene

    Picking the perfect lighting for the scene took a bit of time since we had two main sources of light. Natural light comes from the windows, broken walls, and artificial lights coming from light bulbs and emissive objects. At the beginning, we wanted to have an overcast lighting but as we went further, I thought maybe sunlight coming from the windows could give us better results. Therefore, I changed the lighting and by that, I had to change the intensity of artificial lights as well. In the research room, all the lights were artificial. I had a few source lights like fluorescent lights and emissive objects. Therefore, the lighting was completely different. I tried to guide the audience eye to the positions we wanted and emphasize them. Also for the research room, most of the lights have blueish tint since we wanted to have a cold atmosphere in there.


    There are different ways and techniques to light your scene in UE4. For this scene, I used a combination of DFAO and baked lights for the scene. We had two kinds of lights in our scene, the natural light from the sun, which came through the windows, and the artificial light coming from light bulbs, fluorescent and emissive lights. Balancing these two was a challenging issue. DFAO leaded to soft AO I wanted and had the real impact. I also used some stationary and static lights and baked them out to reach the result. Also, IES lights helped me a lot, especially in research room where I had many sci-fi props.

    4.16 Volumetric fog:

    Epic announced volumetric fog for 4.16 version of Unreal Engine. I tried it in 4.16 preview and it caught my eyes instantly! It improves the realistic mood of the scenes. Therefore, I used it for sunlight coming from the windows and broken walls. I also used both atmospheric and exponential height fog in my scene.

    Post Effects

    I used the new filmic tone mapper for my color grading and did some small changes via LUT color. I love grain jitter effect, the combination of this effect and vignette enhances the cinematic feel of the scene. In addition, I used bloom effect and a small amount of chromatic aberration.

    1 of 2

    Concept art

    We did not have any pre-concept for our project. Aidin did some top down sketches, which I used to make the blocks. However, as we moved forward I took some screenshots from UE4 and Aidin did some paint over and photo bash on it so that we get the details we wanted. This helped me a lot we could talk about the scene easily. Aidin also did some quick concepts for sanctuary cities, creatures, outside world and NPC characters of the story. Looking at these concepts helped us both to know our environment better even though we didn’t use them particularly in this scene.

    1 of 2


    I knew what props we needed according to the list we made at the start of the project. However, as we moved forward I made an additional list of particularly small and supplement objects to make the scene come to life. For instance, the chopper story is so interesting. I talked to Aidin about we needed some action in the scene. Especially for upstairs. A few days later Aidin came up with the idea of the chopper. It was late in the project and we had to make many kinds of stuff for that concept. However, we loved the idea so much that we decided to put extra time on the project to get it done.

    The composition was another challenge. Having many objects in a small room was challenging, I had to make sure every object works with others while compositionally it was hard to have correct look.


    I used high-resolution Screenshot tool for most of my screenshots, except the one that HRS had a problem. I found out HRS has some problems like refractive materials rendering, or with volumetric fog was on I had some side effects like blotches and other artifacts in the screenshot. (My CPU may cause this since it is a 4th gen Core i3). I used Unreal Engine to show my prop sets and Marmoset Toolbag for some others. For high poly renders, I used Keyshot. For 360 degrees view, I used Nvidia’s Ansel. It is very easy to use and I loved the result.

    Final word

    I believe one can reach to awesome points in art individually, but with teamwork, you can learn art faster and enjoy more. I want to thank my best friend, Aidin, who is a tremendous artist. Working with Aidin was so awesome, we decided to work on more projects almost the time we finished this one. In addition, thanks to all the people who gave us critiques throughout the project. Finally, yet importantly, I want to thank Kirill Tokarev and the group for providing this opportunity and thank you for reading this. I hope you like it.

    Make sure to check out my portfolio here.

    Ehsan Ebrahimzadeh, 3D Environment Artist

    Interview conducted by Kirill Tokarev

    Follow on Facebook, Twitter and Instagram

    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

      Layered Environment Storytelling in 3D