David Väson shared a breakdown of the Foreboding Ruins projects, talking about the process and technical experiments, emphasizing the Megascans and Unreal Engine 5 workflow.
Hi, my name is David from Sweden and I'm currently in the last semester of my Bachelor's Degree studies in Game Graphics Production, where I specialize in Environment Art.
In this project, I set out to try out Unreal Engine 5 and its Nanite, and Lumen features. I think it's always important to stay up to date with new things in the world of real-time environment creation. I also set out with a secondary goal of learning more about procedural material blending methods like RVT, direction-based shaders, and vertex painting. But also some other things on the more technical side of things.
Again I created limitations to my scope to focus on the learning experience, to remind myself to not spend time on things that are not within my scope:
- Scene from one major camera perspective.
- Don't model the organic scene details (foliage, rocks, trees).
- Use only dynamic lighting, no baking allowed.
I looked through ArtStation's feed to find some cool concepts to work from, I found a piece by Alexander Dudar that caught my interest and I immediately started gathering references. I start every project this way to ensure that I have a clear vision through all the stages. Not all of these images will be useful to me, but I would rather have more than I need than the opposite.
I wanted to capture the mossy and overgrown nature, and pay attention to the depth of the scene.
Speaking of depth, I also take time to analyze the concept for information that I want to pay extra attention to when carrying them over into my scene. I divide my scene into the usual foreground, midground, and background layers. I also noted the directional lines of the concept, I found common lines converging on the character and the castle.
I had the idea that these ruins were the remains of an outpost of a past war, with an amount of folklore surrounding them in the local culture. The dead trees, the fog, and the crows work as foreboding elements to support the spooky tales the countrymen have been telling about this place.
As always the first thing we will do is the blockout, keeping the compositional layers and direction lines in mind even when working with cubes.
I set up a landscape and a basic landscape material and start importing some Megascans assets to get some color and scale into the scene. I want to put color into the scene so I can start thinking of it as a whole instead of scattered pieces, and besides all the white throws off my color relativity senses.
I introduce a blockout mesh for the castle ruins with a modular idea allowing me to build other castle variants for the background one. I remind myself to keep loose with the blockout as it's too early to start defining details or even unwrap them. I also throw on a Megascans stone-wall material on there for some splash of color.
I focus on getting a sense of the image by getting major landmarks down, and in the process try to avoid creating tangents. I will continue to be mindful of them throughout the process.
I needed to set up a few special shaders and other technical things for this project, I divided it up into two parts. Landscape and moss growth blending, vertex painting, and dynamic birds.
Z-Based Moss and Landscape Blending
It's time to start looking closer at the natural elements in the scene; it's important to me that the rocks feel like they belong in the environment and blend well with their surroundings.
I set up a Runtime Virtual Texture material in my Forest Ruins scene to blend the landscape with the assets and I did the same here but I took it a step further. I also set up a material function that also reads the asset's Z-up to create moss laying on top of the assets as well regardless of which local rotation it has.
'Normal RVT' is described more in my blog post about the Forest Ruins.
I knew that the overgrown nature of the castle was going to be important, I kept this in mind when making the meshes that will make up the castle. They needed to have a decent and even polygon density to allow me to use vertex painting to mix and blend different textures.
I set up parameters for this that would allow me to customize the blending. Height-blending strength, corner-noise, and macro variation to break up any tiling that might happen.
I had a need for two types of birds, one static that sits on top of the rock to the right front of the screen and some flying off in the background for the cinematic clip.
The static bird simply needed to have a few animations looped in a level sequence.
I considered utilizing the new powerful Niagara Systems of UE5, but ultimately I didn't need that level of dynamicity for my scene. I know a thing or two about blueprinting and figured I'd stretch my node muscles once again. I first created a track with a spline component that allowed me to set a path for the birds to follow.
Choosing the bird skeletal mesh with the flight animation loaded I created an event on begin play that activates the Move Actor event. The event sets a play rate for the bird's movement along the specified spline in seconds as a 'Duration'. The location of the bird is decided by getting the length of the spline referenced by the instanced bird and lerping a location with the timeline that goes from 0 to 1.
You can set new duration and choose which track the bird should follow on each instance of the blueprint actor.
You can see the blueprint in action below:
I populate the scene with some more trees and with almost all of the blockout cubes out of the way I also feel like it's time to start paying some attention to the ruins themselves. I created a few variants of stones in ZBrush and created textures for them in Substance Painter. I also created a trim texture that would serve as wood details and the stone trims on the arches.
This was also the stage where I started using the vertex paint wall material I'd made, I used it to let the moss and other foliage grow up along the walls.
I continue to fill the scene with pieces of foliage and animals to bring the scene to life. I aim to remove the last bits of blockout pieces in the midground with plans to cover them in lush foliage and rocks. I start to consider the foliage that's going to cover the scene and I start working with the big/medium/small mindset in mind. I cover the large shapes with bushes and ferns, larger clumps of grass, and clover.
I continue to add ground coverage in the medium and small shapes. It's also here that I further populate the ruins with large rocks and creeping foliage.
It's also time to address the background mountains which I fill in with large Megascan cliffs placed in the far distance to add depth to the scene. And to further thicken the fog in the distance I placed out some fog cards at the bottoms to add more deliberate layers than can be achieved by exponential height fog alone.
I wanted a moodier scene and greater control of my lighting which led me to scrap the directional sunlight entirely from the scene. I placed a spotlight aimed at where I wanted the warm sun to hit and planned my use of warm and cold light to strengthen my composition. The warmth follows my previously established directional lines. I believe that strong lighting and conscious use of warm and cold light tell a story.
I work further with the lighting and aim to create gradients in the surfaces with light for an appealing look. I set my focus on atmosphere and tone and add more fog sheets to add to the foreboding vibe I wanted to give off. At this stage, I look at the scene in its entirety and identify the what is the largest problem in the scene at that moment, and address it.
On looking over the scene some of the Megascans assets I'd used felt low resolution against the rest of the scene and I replaced those with assets with more details.
I work with spotlights to further highlight areas I want to bring out.
Yano Claeys allowed me to use his Mercenary model in this scene and so work began to integrate the character into the scene. Please check out his character here, I'm afraid my shot from behind doesn't do it justice.
My friend SwedishCabe made some SFX for me as well for a final added oomph.
I had fun looking into the more technical side of things with this project and look forward to applying what I've learned to other projects. I feel like a bit of a broken record when I say that, but right now I use every project to learn something to continue to grow as an artist.
I've come a long way since I started, and it's important to stop and recognize that. And at the same time realize that there is a long way to go still.
Still, for the final evaluation of the scene. I'd love to have added more ground coverage and more height difference in the front. The ground coverage in general feels a little scarce in areas and I'd love to look into making more believable ground. I'd also love to do more experiments with modular environments that seem real.
You may find these articles interesting