Marco Amati told us about his new project, Beyond the Valley, explaining how he used masks to create the trees and how he used lightning to make a cinematic scene.
Introduction
In Beyond the Valley, I wanted to explore the potential of procedural environments as a creative tool, seeking a balance between "automation" and artistic control. It was a research and development project, with the aim of testing the connection between Gaea, Unreal Engine, and the PCG system to build a visually impactful procedural landscape and integrate procedural tools into my artistic workflow.
After my previous project, Before The Storm, I felt the need to explore something new, integrating procedural workflows into my artistic skills, using PCG (Procedural Content Generation) for the distribution of trees and vegetation, and Gaea for terrain creation.
The goal was to combine artistic control with the flexibility and iterability of procedurality, creating environments more efficiently and with greater control.
Creating Terrain in Gaea
I built the terrain in Gaea, starting with defining the main shape of the mountain. In order to then integrate it into Unreal Engine procedurally, distribute vegetation, and apply materials, I created and exported several Maps: Soil, Rockmap, Flow, Slope, and Trees, used respectively to control material distribution and vegetation scattering via PCG.
Using PCG in Unreal Engine
The video shows the final scattering on the ground, with rocks, boulders, and trees procedurally scattered by the PCG. I divided the scattering into two main graphs:
- Tree PCG: which uses the Trees mask exported from Gaea to control the distribution of trees.
- Foreground PCG: dedicated to foreground elements, such as grass, rocks, and natural details.
Tree Scattering Using Masks
This graph manages the distribution of vegetation throughout the entire project, primarily using Quixel trees. The position, density, and distribution of the trees are guided by the Trees mask exported from Gaea. I read the terrain data and used the Trees node mask with Sample Texture, excluding trees beyond a certain distance using the position attribute to optimize the scene.
Finally, I used Transform Point to adjust the rotation and orientation of the trees before generating the final meshes with the Static Mesh Spawner node.
PCG Foreground
This graph manages the procedural generation of foreground terrain elements, such as rocks, boulders, grass, and secondary details. It is organized into several sections: grass and related variations, large rocks and small rocks, the addition of decals along paths, and the generation of meshes through "pre-assembly" on the spline.
Another key function is to generate a path using splines, to which all sections are connected. You can exclude elements from the path using the Subtraction node, maintaining control over asset distribution.
This video shows the use of PCG in real time, highlighting how different results can be obtained simply by changing the parameters.
Light and Atmosphere
In terms of lighting and atmosphere, I aimed for soft, cinematic lighting, with a low sun crossing the valley to highlight the terrain's forms. I worked entirely with HDRI and Lumen. To add depth and emphasize scale, I added a subtle volumetric fog that helps separate the different planes and reinforces the feeling of space.
During compositing, I added some very light lens effects to improve the readability of the image and give the scene a more photographic feel.
Conclusions
Even though I'm not a Tech Artist, it was very interesting to explore this workflow and understand how much control I could have over an environment procedurally. The strength of procedural workflows lies in their flexibility, allowing you to iterate and change direction quickly.
Beyond the Valley allowed me to experiment, learn, and understand the power of procedural systems in Unreal Engine. This project inspired me to continue exploring and integrating procedural workflows in Unreal for the creation of large environments.