Palm Grove

Environment Breakdown

Omar Souissi


Omar Souissi

Environment Artist


Hello! I’m Omar Souissi, I'm currently a 3D Environment and Lighting Artist with 3 years of professional experience working as a real-time environment artist in the video game industry.


The idea of making this palm grove environment came naturally from going through a history book covering the 19th century from a West European point of view. A figure called Jean-François Champollion caught my interest and made me dive into the rabbit hole of orientalist paintings on Pinterest. I then stumbled upon this painting (image under) from Albert Rieger.


The painting attracted me, and I was mostly caught by the colors and lighting. I found them more original than the more common yellowish desert oasis sunset paintings. The lush green vegetation, strong red light and brown earth tones felt like a great harmonious combination.

I was planning on doing another historical architecture environment but having some vegetation ready beforehand felt like a good idea. I aspire to remain an environment artist and realized I almost never dived into the foliage.

This project felt like the perfect occasion to familiarize me with the subject. I also am on the track to building a personal library of assets that I could reuse in my upcoming works, and foliage is a must for the outdoor environments and vistas I like to build.

The quiet and peaceful mood of the painting was my target feeling. The characters who seem like travelers resting after a day trip and the grand landscape surrounding them spoke to my sensitivity to German romanticism, but I did not want to venture into making or even posing characters found somewhere online. Luckily, I found a cool horse in the UE marketplace and decided to replace humans with horses. They ended up blending well in the environment without drawing too much attention. Perfect!


I like to use the least amount of software and remove any unnecessary steps in my workflow. The reason behind this is that I like to iterate a lot and get assets in the game engine as soon as possible, mostly directly from the block-out stage.

Then comes a lot of modifications, iterations and reimports. To make this process as fluid as possible, the workflow must be as lean as possible. I build everything in Unreal Engine, so I can reimport assets and textures every time I modify them on my modeling or texturing software.

I model in 3ds max, make the block out in engine (UE), sculpt high polys in Zbrush and bake/texture on Substance Painter. When needed, I author my tiling textures in Substance Designer. I don’t like using online resources such as Quixel’s Megascans as I am attached to the ownership of my personal artwork.

This is also why I did not use Speedtree to make those trees. I do, however, love to inspect and use Megascans before making my own textures for reference and study purposes. I really recommend doing this!

Tree Workflow

Palm trees have very different looks depending on the species and subspecies. One thing I always loved about them is how they all look very different despite being all together in the same place and of the same species. After gathering a lot of references and taking some pictures outside, I decided to go for a dry and spiky look with the date palm trunks to get a noticeable silhouette.

I considered using planes with alpha for adding fibers around the trunk and getting a partially “hairy” look but ended up backpedaling after a few iterations. It didn’t feel like it was a worthwhile time investment considering their weak contribution to the silhouette and the amount of time required to manually place them.


The base palm trunk texture is made in Substance Designer. I started by creating a simple shape for the trunk scales, warped it differently three times to get a slight variation going and then used a tile sampler to get a tiling pattern for those stems.


After this came the usual passes of dirt, scratches, damage, gradients, color and roughness variation. Daniel Thiger’s Store on Artstation has some great tutorials to get an in-depth introduction to Substance Designer and feel more comfortable authoring tiling textures on this software.


The Stems texture is then applied to the very simple trunk of the tree. The UVs of the trunk are flattened, and the width of the UV island fills all the UV space’s width. This way, the texture tiles seamlessly. It is also possible to hide seams by placing stems or any add-on asset on top of it.

The trunk is manually displaced to give it some volume and avoid regular lines that break the organic feeling of the asset. I did not go above 25k polys for the highest tri count per tree. The one you see on the image has 15k.

The stems that stick out and give the spiky look to the silhouette are separately baked assets, packed together in the textures of other assets from the scene (ex: rocks, leaves etc.) for optimization reasons. They are made using a classic high to low poly bake workflow.


Regarding the leaves, I went for a very basic workflow. Modeling all the elements (leaves, dates, fronds, etc.) and baking them onto a plane. I then assembled everything manually and merged all the meshes along with the trunk.


Once the baked plane was done, I just took each element apart to be able to assemble them on the tree’s trunk.

Simple real-time editing can be a great help to iterate fast. The main material I created for this scene allows for tweaking the Albedo/Base Color’s brightness, Hue and Saturation. I added the possibility to overlay color on top just in case.

The SSS texture, which can be created using a blend of the Base Color and Thickness map from Substance Painter, has a controllable Hue and intensity. The tutorial series from Ryan Manning on Youtube called “Creating Master Materials” was a perfect base for creating my master material.


All other vegetation assets were following the same workflow.


The wind for the leaves is made using the simplest possible system, just the SimpleGrassWind function and parameters for the intensity, weight and addition WPO that can be tweaked to the users’ liking.


The rocks are made using a base block-out model from 3ds max that I exported to Zbrush to dynamesh it and sculpt details. Alternating between the trim smooth border, trim dynamic brush and using alpha/VDM brushes got me the shapes I needed.

Below is also an image of the meshes at a distance.


Distance Meshes: the distance meshes (the two furthest assets in the image above) are made using displacement maps made in Substance Designer as well. Starting with the Crystal node as a base (image under), I could work my way up to a satisfying terrain distance mesh that was good enough for being viewed from a very far distance.

I believe it’s important not to attach too much importance to the visual appearance of meshes that are only destined to be viewed from a far distance and be a small part of your scene that is just supporting the main elements.

When tackling large scenes, it can help to identify and separate key hero assets that will be in your shot’s focus range from all the other ones. The hero assets are the ones to polish while the others can get less attention and work time. Those distance meshes only occupy a small portion of the shots, are far into the distance and are out of focus. Looking at them now, I even think I gave them too much attention.



The water is simply made by panning a few normal maps generated again in Substance Designer. I found the Voronoi node with a subtle blur in Substance Designer to be a good starting base for generating those normal maps. Tyler Smith’s Ocean Material tutorial on his Artstation Store is a great quick watch to set a water shader up and running.

Asset Placement

The in-engine scene is composed of a manually sculpted terrain base using UE’s terrain creation tool. The terrain has three layers: a rocky shore sand texture, a grassy one and a brown sand one, all manually painted. I then used my rock meshes and distance meshes to create some relief and volume.

The material for the terrain is quite simple: Three times the same layer function.


The layer function contains all the usual maps and parameters that go with them.


All the assets are then placed considering my camera angle for each shot/scene. At this point just dragging assets into a scene, it helped to block my camera angle and view my work through my main camera.

Having enough layers of detail in the foreground, midground and background allow for giving depth to the scene. It helps to add small meshes, such as tiny rocks, on top of ground textures to give them some volume.


The lighting comprises 6 base elements: the leading directional light, skylight, sky atmosphere, exponential height fog, Post process volume and the default BP_Sky_Sphere. The use of the BP_Sky_Sphere is exceptional in this scene. It worked this time for me after changing its settings (image under), but it is overall not very versatile and, most importantly, not original. There are many great sets of skyboxes in the UE marketplace.

My favorites are the ones from Valerian. I am getting my result implied tweaking all the settings of every one of those lighting elements and going back and forth between them. The post-process volume should be the one coming last. Regarding the rest, I don’t really have a particular order, but I usually start with the atmosphere, fog, skylight and main directional light.

You see many directional lights in the world outliner because I like using the lighting channel option when I want specific elements to be independently affected by particular lights. The leading directional light is applied to everything, the second one is a fill light, and the other ones are just used to lighten some shadow patches I found too dark.

Additionally, there are a few spot and point lights located in specific areas where the shadows were too dark.


The lighting channel option can be found in the details of most elements of a scene. Putting a light in the same lighting channel as one or many meshes, for example, makes them affected by the light.

Last comes using the high-resolution screenshot tool to get some beauty shots. I really recommend having a foundation knowledge of photography and trying to use a real DSLR camera to understand how aperture, shutter speed, ISO, focus and focal length affect each other.

The Cine Camera settings of Unreal Engine are designed to emulate real-world cameras, so having a basic understanding of the latter is a great help when composing your screenshots in-engine.


To end this article, the few pieces of advice I could give would be to work a little bit every day instead of doing rare extensive sessions.

Working on what I love is the only thing that gets me motivated when doing personal projects. I’m inquisitive about almost everything and reading about many subjects, mostly history, always makes me want to dive into an issue and I enjoy taking the occasion to make an art piece about it.

Finding subjects that are passionate about you and working on them every day is a great way to keep getting better. Exploring environment art subjects that you don’t explore at work is also a great way to broaden your artistic sense and taste, which improves the overall quality of work.

Picking up artistic hobbies like photography or drawing is definitely a great way to get out of the screen, travel a little and get new perspectives. The best inspiration happens outside of the screen for me.