Forest Gate

Environment Breakdown

Predrag Đelmić

1
187

Predrag Đelmić

Environment Artist

Introduction

Hello! My name is Predrag Đelmić and I’ve been working as an Environment/Technical Artist in the Architecture and Automotive industry over the last couple of years.

Recently, I’ve decided to change my direction towards the Video Games industry, as it has always been my true passion, and this project servers as a stepping stone that may lead me towards my goal.

Goals

The goal of this project was to challenge myself by trying out new techniques and tools, which will help me become a more effective and versatile artist, while also enhancing my portfolio and demonstrating my proficiency in crafting beautiful and aesthetically pleasing environments, which are optimized and game-ready.

Specifically, I wanted to try out Trim Sheets and Procedural Content Generation (PCG) in Unreal Engine 5, and the perfect project for this would be a forest environment with some kind of ancient architecture or ruins.

Goals

Software

  • Blender
  • ZBrush
  • SpeedTree
  • Substance Designer
  • Substance Painter
  • Photoshop
  • Unreal Engine
  • Davinci Resolve

Reference & Planning

Every project starts with an idea, followed by a mood board and a plan.

For inspiration, my main reference was an AI-generated image found online, which has an almost otherworldly, ancient feel to it.

The next step is creating a mood board using PureRef. The mood board is divided into different segments, each focusing on a different aspect of the environment.

In this case, I gathered reference images for the mood, gate, different types of foliage and trees intertwining with architectural elements.

During the planning phase, I take my time to plan and decide the scope and focus of the project. This is followed by a detailed list of tasks and assets I will need, where I decide if I will create them from scratch, or use existing resources like Quixel Megascans. This process gives me an approximate timeframe for the project.

Moodboard

Blockout

Before the actual blockout in Unreal Engine, it’s crucial to set an appropriate camera shot to capture the scale and composition of the concept accurately.

To achieve this, I use fSpy addon in Blender.

The blockout process is relatively straightforward. I create extremely simple blockout assets to populate the scene to get a sense of scale and general mood.

This phase should be iterated on quickly and efficiently and the focus should not be on details, but on shape, flow and composition of the scene, as it serves as a foundation for the rest of the project.

Blockout

Trimsheets

Trimsheets were suggested to me by Boris Stajić, and I would like to thank him for helping me throughout this process and giving me some very valuable input, I appreciate it a lot!

Trimsheet_Render

Trimsheet is a powerful technique for video games – a thoughtfully created trim can efficiently texture a large portion of the scene, while being highly optimized and detail-oriented.

In the scene, a trimsheet is used for the entire gate, lanterns and stone blocks.

The initial, and arguably the most important step is planning the necessary trims and determining their scale. In this case, objects are mostly made of stone with elongated golden elements and a single golden ornament.

The modelling process began in Blender, where I created the base shape and divided the trims into a different object, which made it easier for me later in ZBrush. Everything here is pretty simple except for the ornament, which I modeled using a spline with a custom profile.

Moving into ZBrush, the goal is to add details for the trim, which mostly consists of edge damage, cracks, surface noise, grain, and general damage.

It is very important to keep these details subtle and not go overboard, especially with cracks that spread over the middle of a stone block, as this can lead to noticeable repetition when tiled across an object. The best approach here is to strike a balance – keeping it simple, yet sufficiently detailed for a realistic result.

TrimSheet_Sculpt

Finally, I used Substance Painter to bake the high-poly sculpt onto a simple plane acting as a low-poly mesh.

This process not only creates visible details from the sculpt but also provides very useful information for procedural materials, such as Ambient Occlusion and Curvature, which I utilized with various smart materials and masks to achieve more details, dirt and grain.

TrimSheet_Substance

Gate

The gate was modeled using modular pieces, providing more flexibility for scene variety and randomization. As previously mentioned, the entire gate is textured using the trimsheet, making efficient UV arrangement a crucial step after modeling to maximize the utility of trims.

I added an additional UV channel for a dirt map overlay, blending it with the trimsheet material, which enhances the overall realism of the gate.

GateModel

Landscape material, in addition to basic parameters like tint, brightness, saturation and contrast, has 3 different layers for grass, dirt and rock, which use Megascans textures. To reduce tiling and add more variation, I used distance-based tiling and macro variation with a noise texture (The result is just multiplied with the final Albedo).

The overall landscape shape is pretty basic and mostly flat, with some hills here and there. What gives it more detail is the road. It is created with the landscape spline system, which has a layer reserved for splines only. This allows it to reshape the landscape with every modification.

Road

The road was created with the conventional high-to-low-poly workflow, starting in Blender, transitioning to ZBrush, and finally going through the baking and texturing phase in Substance Painter.

Unlike most other models, however, I created the Level of Details (LODs) directly in Blender, as opposed to Auto LODs in Unreal Engine.

This was done to achieve a high-fidelity LOD0, gaining smoother edge blending with the landscape.

Simultaneously, the lower LODs  were modeled as planes with only a few length segments to bring more optimization, since LOD0 has a slightly higher poly count.

Road

Since the environment is a forest, a great emphasis is placed on the foliage.

Each foliage had the same workflow, which begins with the creation of a parametric leaf/grass blade material in Substance Designer. Then I bring it in to SpeedTree to create an atlas. Barks were downloaded from PolyHaven.

This workflow is very efficient and easy and allows me to stay inside SpeedTree through most of the process.

The modeling process is mostly simple – start from the trunk, add main branches, then smaller branches on them, and finally fronds, which utilize atlas material.

I’ve also used forces and tweaked many parameters, depending on the need.

For the trees, there are 3 types:

  • Tall trees – these will give the forest its “shape”;
  • Normal-sized trees – these are used to fill in the space;
  • Small trees, or saplings – small details.

Another type of tree is Locust, which is the tree that grows around the gate.

Foliage_1

For medium-sized foliage, I created ferns and bushes, and to save time, I used the leaves I created for the Locust tree, modifying their shape and making new atlases.

There are two types of grass:

  • Short, wide and dense ground covers grass;
  • Tall, flowy patches of grass that give great variety.

To bring more variety, I created an Oxalis plant, serving as a ground cover without wind so it can be more optimized.

The gate is overgrown with various Ivy shapes and sizes, which brings more variety and realism to the scene, otherwise, there would be too much repetition and the scene would look unnatural.

Lastly, there should always be some small branches, twigs and rocks scattered around the ground.

Foliage_2

Procedural Content Generation

This was my first time using this tool, so I had a lot to learn through trial and error.

It is an amazing tool that seems like it has limitless possibilities and I am glad I finally got around to learning it.

The entire forest is procedurally generated, with a few foliage meshes added in the main playable area to achieve the desired look and mood from the concept.

PCG_All

Primary sampling is done on the landscape, which generates all the foliage.

Trees, short grass, ground cover, branches and rocks are just randomly placed around the landscape.

Bushes, ferns and long grass have larger points sampled, but they are much rarer. These larger points then create a grid around them, spawning multiple smaller points that generate a mesh.

This was done so they would be more grouped up and not just randomly scattered, giving them a more natural feel.

PCG_Sampling

Another sampling is done for the landscape spline, which servers two purposes:

  • Removes all foliage from the road and it’s vicinity, depending on the chosen falloff. This not only cleans the road, but also controls how far the giant trees can spawn in relation to the road.
  • Generates denser grass and ground cover around the road, enhancing the visual richness and fullness in the areas where the player typically moves.

Lastly, I created an exception for objects and splines with certain gameplay tags that remove points if they collide, which gives me even more control.

If I don’t want a certain PCG tree in a particular location, I just place a box on top of it and give it the tag “actor_exclusion”, and it’s instantly gone. This is very similar to the exclusion by road.

Other than the forest, PCG was used for ivy and small trees on the gate.

It simply samples a manually placed spline on the top of the gate and randomly generates the meshes along its length (and around it for different elevations), or inside it for small trees.

The lighting phase can make or break a project. Regardless of the quality of assets and the environment, poor lighting can easily cause the entire project to fall apart.

This project utilizes Lumen with a fairly simple and basic lighting setup.

As in every project, I begin by opening the Environment Light Mixer and adding all available light elements it offers. Then, I add a Post Process Volume and adjust Exposure.

After that, it all comes down to finding the correct sun angle and intensity (Both for directional and sky light, but also with exposure).

Light_Basic

With satisfying lighting, I move on to the temperature and general mood of the scene.

This particular scene is very foggy and the forest seems cold, so I turned down the temperature of the sun and increased the exponential fog amount, while also decreasing the height falloff so the fog goes higher up.

Volumetric fog is very important, as it gives the scene depth and realism, while also enabling volumetric effects on lights.
This feature can get expensive, so it should be carefully balanced with the normal fog by tweaking the distance.

Another very important parameter is the Emissive color of the fog, which lights up the environment and gives it more color and mood.

Aside from the lights and fog, post-process effects are very important in defining the lighting and overall tone.

Light_Fog

Every scene should have its cold and warm moments, but in this case, most of the scene is cold, and there is not very much warmth, except for the sun.

This isn’t enough to achieve a balanced and visually satisfying composition. Additionally, the player’s eyes should be drawn towards the gate, not stopping in front of it.

Therefore, I added a very warm light source in the middle of the gate. This creates a beautiful contrast and guides the eyes towards the main focal point of the scene.

Light_FocalPoint

Polish & Final touches

In the end, I went around the scene and looked where it was lacking.

The transition between the road and the grass appeared too monotonous, so I added additional foliage along the road. I also added extra foliage around the gate where it seemed too flat and uninteresting.

Foliage_Polish

The main camera shot looked pretty rich and detailed around the gate, but the rest of the environment was lacking.

So, I decided to add a bridge, some stairs and lamp posts, that will at the same time serve as a visual guide to the player.

Bridge

Fog Cards add the required “Layering” of the scene, and even more depth and immersion. I just scatter them around the scene where I think it looks empty or when I have to highlight some kind of transition.

To bring the environment to life, there must be moving elements. While the foliage is already animated and in motion, it was not enough, so I added particle effects of dust, leaves and birds.

Finally, I added two deer. This was like the final touch that brought the whole environment to life.

The buck is proudly standing and carefully watching over their surroundings, while the doe is carelessly eating and feeling completely safe in the presence of her mate.

Main_Wide

Decals

One very important step – decals. They are an essential element that adds so much more detail and variety to a scene.

Here I used cracks, pebbles, gravel, branches and dirt, using the Megascans library.
I  scattered them mostly along the road and on stone blocks.

Decals

Presentation

Many times I’ve noticed some artists showcasing spectacular environments with amazing assets, but they don’t pay much attention to the final presentation, which, in my opinion, can devalue the art piece.

Therefore, I decided to create a showcase video, featuring a small cinematic at the beginning, followed by a real-time walkthrough.

The cinematic sequence was created in Sequencer, rendered using Movie Render Queue, and then color-graded and edited with Davinci Resolve.

Throughout this process, I can’t recommend enough videos by William Faucher, who taught me almost everything I know about Unreal Engine cinematic creation.

As for the walkthrough, it was a fairly simple and unscripted play session with two keybinds that allow on-command camera target arm length change, by using the timeline in the player pawn blueprint.

Conclusion

Overall, I am very satisfied with the project, but also extremely humbled and thankful for all the kinds of words and feedback I’ve received from my family, friends, and the community!

While there is still a long road ahead of me to become an exceptional environmental artist, I am very excited for the future and all the projects and opportunities that await.

The journey of becoming an exceptional artist, or any type of professional,  can often be challenging and overwhelming.
However, it is crucial to remain patient and persistent. Take one step at a time and you will surely reach your goal.

Thank you, Games Artist, for giving me this amazing opportunity to create an article, and a big thank you to you, reader,  for taking the time to read this article.

I hope you learned something valuable and enjoyed the read!