Tilable Materials for Moroccan Courtyard

Tilable Materials for Moroccan Courtyard

Environment artist Joakim Stigsson talked about the production of tilable materials, props, vegetation and lighting in his newest Moroccan Courtyard scene.

Joakim Stigsson gave a wonderful talk about his most recent Moroccan Courtyard scene, assembled in Unreal Engine 4. In this article he talked about the production of tilable materials, props production, vegetation and lighting. Very nice and detailed look into the production of great environments. Joakim is currently working with EA DICE on the upcoming Battlefield 1.



My name is Joakim Stigsson, I’m from Sweden living in Stockholm and currently working on Battlefield 1 at EA DICE. I’ve been working in the industry around 5 years, started at Crytek working on Crysis 3 and Homefront: The Revolution, then moved to EA DICE after 3 years where I have worked since. Besides that I enjoy working on my own projects to improve workflow and develop my skills.





I just finished my latest project which I’ve been calling Morrocan Courtyard. I wanted to share my workflow and break it down a little bit. I’ve mainly been focusing on exploring Substance Designer, Quixel and Substance Painter as texturing tools. I have been using it for a while here and there but really wanted to try it out for a full project. At the same time I wanted to learn Unreal Engine 4 since I’ve mainly been using CryEngine before, both professionally and personally. You might have seen my project “Mountain Lodge” that was made in CryEngine, if not, check it out here.


As always I start to gathering lot of references and continue with a blockout, mainly to get the proportions and scale right. I think getting the scene in to Unreal as quick as possible is key to be able to see how the final composition will look like. I wanted to go for that colorful Moroccan look, which I though have some interesting materials and shapes.


Tilable Materials

For this project I decided to use Substance Designer to create my tiling materials. Before I’ve mainly been using Zbrush and Photoshop but I think Substance Desinger is a really powerful tool for crafting your materials. Its gives you a lot of flexibility and it’s very easy to iterate on. First I mainly focus on the shapes and pattern for my material.


Once I have the shape I’m happy with, I start to break it up with different nodes to create a more organic and believable look. One of my favorite node is the “Slope Blur” that you can use to create wear on edges to get that damaged look. Last thing I do is to create the albedo for the material. Once the material is done I ended up with something like this:


I kept the albedo in mid-grayscale because I wanted to be able to tweak the colors in Unreal. I used a master-shader for all my materials that made it easier for me to create instance material and tweak settings/color etc. For this kind of Moroccan pattern, I created a mask in Substance Designer that made it possible for me to tweak different tiles separately, using the RGB channels. By using this workflow I could create variation without adding more textures. In the master shader I also added the option to tweak roughness strengths, ambient occlusion, displacement, etc, to fine-tweak the material.



I slowly started to build a library with the materials I needed for the scene. Since I exported my materials directly from Substance to Unreal I just had to tweak the settings in Substance and save to see the result in the engine which made the iteration process a lot quicker and easier. For all my tiling materials I also used a “RMAH-texture” which means I had the roughness in the red channel, metal in the green channel, ambient occlusion in the blue channel and height in the alpha channel. I also created a blend for some materials to break them up over large tiling areas.


Props and Assets

I modelled all my assets using 3ds max. Here it’s also a matter of finding good references and decide what you think will fit with your environment. Doing rough blockouts and put them in the scene to see how much impact the will do and how they fit with the environment. I usually block out most of the assets before I even start doing the first high-poly.


I exported the highpoly and lowpoly to Substance Painter, where I baked normal, ambient occlusion, curvature and world space normal. Those maps are useful when masking out different areas to create the final material. Once I was happy with the look and material in Painter I exported the textures using Substance Painters presetexpoter for UE4. I used a similar approach for pretty much all the assets in the scene.



Marvelous and Quixel DDO.

For some assets such as pillows, throws, footstool, I was using Marvelous Desinger to simulate my mesh. For fine tweaking I imported the simulated mesh in to Zbrush to add some smaller wrinkles and tear.


Once I was happy with the mesh I baked a material id, normal and ambient occlusion and imported the mesh to Quixel DDO. By using some of the Quixel smart materials for leather and textile together with my maps I managed to get archive the result I was looking for.


Trims and Architecture

For trims I combined a custom normal together with a tilable material. First I sculpted the trim inside Zbrush to create some wear and tear on edges. I then baked a custom normal and loaded the mesh together with the normal in to Quixel DDO. There I created a mask with stains in the red channel, dirt in the green channel, edge scratches in the blue channel and ambient occlusion in the alpha. This allowed me to change the tiling material and still keep the custom normalmap, but get different type of material using the same mesh. I could then tweak the strengths of the different masks by setting up a material in UE4, to archive the result I wanted.




Creating the vegetation for this project was pretty straight forward. I modeled the highpoly leaves and branches inside 3dsmax and mapped the HP leaves to a photo texture. I did roughness and translucency on the original texture and baked out different pass for the texture. I created a vegetation material inside UE4 with vertex animation to get some movement in the mesh. By using the vertex color I could control which areas I wanted to move, and which areas that I wanted to have more translucency/spec.



Lightning and Final Pass.

I tried to get in a lighting pass as quick as possible. Even at the blockout-phase I created a lighting that would somewhat represent the lighting that I wanted for the scene. This made it a lot easier to work with and kept me motivated though the whole process. I decided to go with baked lighting for the scene to get that extra high fidelity of bounces and shadow. In this stage I also did a final tweak on materials and base color to get everything fit together the way I wanted.


I used a Directional Light set to stationary. I added a boxreflectioncube as my main reflection and then had small local sphere reflection volumes. I also added an atmospheric fog to bump up the sky multiplier to get that bright sky shining though. Once I was happy with the final lighting I did a final lighting bake and captured a movie using matinee. I also used a post process volume to add some final touches and color grading.



Using Substance and Quixel as a part of the workflow together with Unreal really helps to speed up the process and to get a better and more accurate result. It’s very easy to iterate on and tweak your materials during the entire process. This kind of workflow will definitely be a part of my upcoming projects. Stay tuned for the next one!





Join discussion

Comments 3

  • Nadia

    Hey Joakim Stigsson! Great job nice use of the Quixel smart materials for leather and textile together mapping.
    The luxurious feeling at SLS Dubai, there are great features adding on the particular project.



    ·a year ago·
  • HLGeroge




    ·2 years ago·
  • jack

    Nice sharing!
    Interesting the lighting setup, could you share more detail?




    ·4 years ago·

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