Creating Realistic Mountain Scene With Custom Unreal Engine 5 Tool
Michael Gerard returns to 80 Level to break down his Alpine Forest project and discuss his custom FoliageLab solution for creating Nanite-ready vegetation and building realistic environments in Unreal Engine 5.
Background
Since my previous interview with 80 Level, I've continued working as a freelance Biome Artist on various projects, exploring different artistic directions and technical challenges in real-time environment production.
Over the past two years, one of the most significant developments in my work has been the increasing use of Nanite for vegetation production in Unreal Engine. Moving away from traditional LOD-based workflows has given me more flexibility when creating complex vegetation and encouraged me to explore new approaches to asset production and integration.
Another important evolution has been the growing role of tool development in my daily work. I've always been interested in improving my workflows, but I've recently started investing much more time in creating my own tools whenever existing solutions don't fully meet my needs. This allows me to simplify repetitive tasks, improve consistency, and spend more time on the artistic aspects of production.
These developments have also influenced the direction of my professional activity. I recently established FoliageLab, a studio focused on real-time vegetation, biome production, and the development of specialized tools.
Today, my work combines vegetation creation, environment production, and technical development more closely than ever. I'm particularly interested in finding ways to make complex vegetation workflows more efficient while maintaining the level of visual quality and artistic control required for modern real-time environments.
The Alpine Forest Project
Alpine Forest started primarily as a technical experiment. My initial goal was to develop a workflow that would allow me to bring vegetation from SpeedTree directly into Unreal Engine as Nanite Assemblies, without relying on an intermediate DCC application.
From the beginning, I wanted to focus on coniferous trees, as they represent one of the biggest challenges for Nanite in vegetation. Their complex structures and dense foliage made them an ideal subject to push the technology and explore the possibilities of this new workflow.
Rather than following a predefined production plan, I let the project evolve through experiments, failures, and successful iterations. Each technical challenge brought new ideas and sometimes required me to reconsider my approach. As the workflow progressed, these experiments gradually developed into a complete alpine environment.
Artistically, I wanted to create a realistic mountainous landscape, with dense coniferous vegetation, rocky terrain, and patches of snow. I was particularly interested in achieving a natural composition, with enough variation and detail to remain convincing from different camera angles while maintaining a consistent atmosphere throughout the environment.
I also wanted the environment to work as a cinematic scene, where composition, lighting, and atmosphere were as important as the vegetation itself. Throughout production, technical discoveries continued to influence the artistic direction, sometimes opening up possibilities I hadn't initially considered. In the end, Alpine Forest became much more than the initial technical experiment. It allowed me to develop and validate a new approach to vegetation production while creating an environment that reflects both my artistic interests and the technical direction I'm pursuing with FoliageLab.
Nanite Assemblies & SpeedTree Bridge
My transition to Nanite Assemblies has mainly changed the way I approach vegetation construction, rather than simply how I optimize it.
Traditional vegetation workflows have proven their effectiveness over the years, and they remain perfectly valid depending on the project and its technical requirements. However, Nanite Assemblies offer a different way of thinking about vegetation, especially when it comes to preserving an asset's structure and complexity.
One of the interesting possibilities introduced by Epic Games with Nanite Assemblies is the ability to build complex assets using instanced geometry while preserving more of their original structure. For vegetation, this opens up new opportunities to work with detailed geometric elements rather than relying as heavily on simplified representations to recreate volume.
This is particularly interesting for coniferous trees, where the complexity of the branches and foliage plays an essential role in defining their silhouette and overall appearance.
Of course, this approach introduces its own technical challenges. Nanite Assemblies are not a universal solution, and their effectiveness depends on several factors, including vegetation structure, materials, animation, and scene complexity. The goal isn't to replace every existing technique, but to explore what becomes possible when vegetation is designed specifically around this technology.
This is also what motivated me to develop SpeedTree Bridge. SpeedTree remains at the center of my vegetation creation process, but I needed a more direct and flexible way to bring these assets into Unreal Engine while preserving the advantages of this construction approach.
Rather than adapting my artistic decisions to the limitations of a fragmented workflow, I wanted a solution that would allow me to move more naturally between vegetation creation and real-time integration, without relying on intermediate DCC applications.
The result is a workflow that gives me greater freedom to experiment with vegetation structures, improve consistency across assets, and iterate more efficiently.
For Alpine Forest, this approach was particularly valuable because of the density and complexity of the coniferous vegetation. It allowed me to experiment with more detailed vegetation structures and refine the workflow throughout production.
More broadly, it provides a foundation for future FoliageLab projects, where I can continue developing vegetation specifically for Nanite Assemblies while maintaining the artistic flexibility I need.
Vegetation Realism
For Alpine Forest, most of the larger trees were created using scanned trunks from ScansLibrary as a starting point. I used SpeedTree's built-in tools to turn these scans into tileable textures, allowing me to maintain a consistent level of detail and material quality across the different species.
Another important decision was to reuse the same foliage instances across several tree species, sharing the same geometry, textures, and materials. Each tree, however, uses its own Material Instances for the scanned and tileable parts of the trunk, all based on the same Master Material used throughout the vegetation. This approach helps maintain visual materials, branching structure, proportions, and overall silhouette.
When modeling trees, I pay particular attention to their structure and proportions, but also to how they relate to their surroundings. This meant considering not only the shape of individual trees, but also their relationship with the surrounding vegetation.
Beyond the trees, shrubs, ferns, and ground-cover vegetation played an equally important role in bringing the environment together. These smaller elements help establish transitions between different areas, break up repetitive patterns, and create a more natural relationship between the forest floor and the larger vegetation.
Variation was introduced through differences in structure, size, silhouette, and distribution rather than relying on excessive material variations. This allowed me to create a diverse environment while maintaining a relatively unified visual appearance.
Ultimately, the goal was to preserve the identity of each species while ensuring that all the vegetation felt like it belonged to the same environment.
PCG & Biome Construction
PCG has been an important part of my environment production workflow for quite some time, but Alpine Forest gave me the opportunity to rethink how my different procedural systems interact with each other.
Previously, my PCG systems were mostly designed to handle specific vegetation categories independently. While this approach worked well, I wanted to establish stronger connections between them to improve the overall consistency of the environment.
For Alpine Forest, I reworked my three main PCG systems: Trees, Bushes, and GroundFoliage. Each one handles a different vegetation layer, with GroundFoliage also being used to distribute smaller environmental details.
The biggest improvement was establishing a hierarchy between these systems. Trees influence the distribution of bushes, which in turn influence the placement of ground foliage. When bushes are absent, the ground foliage distribution is influenced directly by the trees instead.
This creates a more consistent relationship between the different vegetation layers. Rather than distributing each category independently, the systems can adapt to the presence or absence of surrounding vegetation, resulting in more natural transitions and a better overall composition.
Another important aspect is artistic control. Procedural generation is extremely useful for populating large environments, but I don't want it to dictate the final composition. I use PCG to establish a consistent foundation while retaining the flexibility to adjust vegetation density, distribution, and local variations according to the needs of the scene.
Ultimately, the goal is to make the different vegetation layers work together rather than simply placing assets across a landscape. With Alpine Forest, I was able to improve this relationship between my PCG systems, making the environment easier to manage and giving me more freedom during composition.
Lighting & Cinematic Presentation
The lighting setup in Alpine Forest is relatively simple and entirely dynamic. It consists of a Directional Light for the sunlight, SkyAtmosphere, and a SkyLight using a neutral white HDRI.
I wanted to keep the lighting relatively natural and avoid introducing unnecessary complexity. The goal was to create a cold, overcast atmosphere while preserving enough contrast to appreciate the shapes, materials, and density of the vegetation.
Most of the atmosphere comes from the fog rather than the lighting itself. For this, I used the Screen Space Fog Scattering plug-in, which allowed me to achieve the atmospheric depth and light scattering I was looking for.
Fog plays an essential role in the final composition. It helps separate the different layers of vegetation, softens distant elements, and creates a stronger sense of scale throughout the forest. Combined with the relatively subdued lighting, it gives the environment its cold and slightly mysterious atmosphere.
Post-processing was kept relatively subtle. I used a custom LUT to establish the final color palette and maintain a consistent atmosphere across the different shots, along with a small amount of film grain. The goal was to reinforce the cold, overcast mood without drastically altering the natural appearance of the vegetation and environment.
For the final rendering, I focused on short cinematic sequences designed to highlight the environment from different perspectives. Camera placement, composition, and atmospheric depth were particularly important, as I wanted each shot to feel like part of the same forest rather than a collection of unrelated viewpoints.
Ultimately, the atmosphere of Alpine Forest comes from the combination of a straightforward dynamic lighting setup, carefully controlled fog, and restrained post-processing. Sometimes, a relatively simple setup is enough to achieve the desired result when each element serves a clear purpose.
FoliageLab & Future Developments
FoliageLab is the result of several years of experience in vegetation production and a growing interest in developing tools that better suit my needs as a Biome Artist.
Over time, I found myself spending more and more time on repetitive tasks or working around limitations that could be addressed with dedicated tools. Rather than constantly adapting my workflow to existing solutions, I started developing my own, initially for personal use and eventually as part of a broader production pipeline.
Artificial intelligence has played an important role in making this possible. While my expertise lies in vegetation and environment production rather than programming, AI allows me to turn technical ideas into functional tools. I define the requirements, expected behavior, and constraints, then use AI to assist with implementation. Testing, refining, and validating the results remain essential parts of the process.
This has opened up many possibilities, allowing me to develop increasingly specialized tools and experiment with approaches that would previously have been much more difficult to explore.
FoliageLab was a natural continuation of that evolution, bringing together vegetation creation, biome production, and tool development under a dedicated studio identity. My goal is to provide specialized vegetation and environment production services for real-time projects, while continuing to improve the tools and workflows that support that work. I'm particularly interested in developing solutions that give artists greater flexibility and control without introducing unnecessary complexity into production.
Looking ahead, I want to establish stronger connections between vegetation, terrain, and lighting. These elements are closely related in nature, and I believe there's a lot of potential in making them interact more directly within Unreal Engine.
For example, terrain properties such as slope, altitude, or humidity could influence vegetation distribution, while lighting conditions and seasonal changes could contribute to how an environment looks and evolves. Rather than managing these elements independently, I'd like to explore a more interconnected approach to biome production. These are directions I'm planning to investigate in future projects, building on the tools and workflows developed during Alpine Forest.
Ultimately, I want FoliageLab to remain focused on exploring new possibilities for real-time vegetation and environments, combining artistic experience with technical development to create better production workflows.
In fact, I've already started working on my next environment, which will give me the opportunity to explore some of these ideas further, particularly around lighting and biome composition. I won't reveal too much just yet, but let's just say the inspiration comes from a game that received a remaster not too long ago and features what I consider one of the best expansions in video game history. Some of you might already have a pretty good idea of what's coming!
Challenges & Lessons Learned
The biggest technical challenge in Alpine Forest was developing and refining a vegetation workflow around Nanite Assemblies while simultaneously using it to produce a complete environment.
Since I was exploring a relatively new approach, there wasn't always an established solution to the problems I encountered. Some experiments worked immediately, while others required several iterations or a completely different approach. This was particularly true for the coniferous trees, where the complexity of their structure made them an interesting but demanding subject.
One of the most important lessons was learning when to continue experimenting and when to settle on a solution that was already working. It's easy to spend an enormous amount of time refining technical details, especially when developing your own tools, but those improvements need to serve a practical purpose.
Artistically, the biggest challenge was maintaining a natural and consistent environment while working with a large amount of detailed vegetation. Having access to complex assets doesn't automatically produce a convincing forest. The distribution, proportions, silhouettes, and relationships between different vegetation layers are just as important as the individual assets themselves.
I also had to make sure the technical experimentation didn't take priority over the final image. Alpine Forest started as a workflow experiment, but at some point I needed to stop developing systems and focus on composition, lighting, and atmosphere to bring the environment together.
For artists working on vegetation-rich environments, my main advice would be to understand the vegetation you're creating before worrying too much about the technology behind it. Study how trees and plants grow, how their structures differ between species, and how they interact with their surroundings.
I would also encourage artists to question their workflows rather than follow them simply because they're familiar. Established techniques exist for good reasons, but that doesn't mean there isn't room to experiment with different approaches when the project allows it. At the same time, don't feel that every project needs a completely new technical solution. Sometimes, the most effective approach is simply to use what already works and concentrate on the artistic result.
Ultimately, Alpine Forest reinforced something I've learned throughout my career: technology can open up new creative possibilities, but understanding your subject and making good artistic decisions remain essential to creating convincing environments.