megascans Pine forest in unreal engine

Learn how Noah created his stunning pine forest scene in Unreal Engine with the help of Megascans and SpeedTree. Noah shares what inspired him to create the scene and knowledge such as how he sourced his assets and created versatile shaders to seamlessly blend assets with the terrain.

Intro

My name is Noah Mingram and I am currently a freelance Environment Artist and aspiring Level Designer. My history in the industry is largely with the indie studio Black Ice Studios LLC where I am the primary Foliage Artist and one of the Level Designers.

I initially began teaching myself SpeedTree and Unreal Engine about 4 years ago while attending an automotive engineering program. Ultimately I decided to pursue game art instead and I am inspired everyday to continue learning and growing.

Purpose and Inspiration

The purpose of this piece for me was to test my custom shaders, to test the capabilities of dynamic lighting in Unreal Engine and to test my set dressing capabilities.

My inspiration for this was unquestionably the beauty of my country, Canada. I was extremely fortunate to grow up between a suburb in Toronto and a small town in Muskoka; it was in Muskoka where you could routinely find landscapes just like you see in my artwork. I was able to use many reference photos I had taken over the years to help me with placement and composition of my scene.

Creating and Sourcing Assets

I sourced everything I would need from Quixel Megascans. This included plenty of photoscanned meshes, surface textures and atlases. I also sourced full plant models from Megascans to save time and focus more on my level design. When I was browsing for assets, I paid special attention to my reference images to make sure I was sourcing meshes that fit not only well together; but are appropriate for my pine biome.

I created the trees for the scene using SpeedTree8. My process starts with a photoscanned tree trunk from Megascans and then using SpeedTree’s photogrammetry workflow, I build my procedural tree on top of it.

SpeedTree models created using Megascans base trunks and Megascans textures

Shaders

When I first had the idea to make this scene, it was with the goal of thoroughly testing and using a new master shader I had set up after several projects of hacking together certain features I wanted in a shader. These features included:

Basic Artistic Properties:

  • Support for RHA packed textures

  • Support for on the fly colour, roughness, normal, displacement and subsurface properties editing

  • Support for detail texturing

 

Basic Artistic Properties

 

Pixel Depth Offset Seam Blending:

  • Support for vertex colour masked layer painting

  • Support for masking pixel depth offset using vertex colour

 

Pixel Depth Offset Seam Blending

 

World Space Triplanar Material Blending:

  • Support for triplanar, world space, PBR landscape blending

  • Support for one parameter, triplanar, world space, PBR snow coverage across all the assets

 

World Space Tri-planar Material Blending

 

Snow:

  • Editing snow on/off with using Z-Up

  • Editing snow amount with Z-Up Amount

 

Snow Parameters

 

Adding Z-Amount to a parameter collection means it can be adjusted on every asset from one place and keyframed in a sequence actor. This allowed me to adjust the snow coverage across all my assets with keyframes and made the ‘dynamic’ snow effect possible. In addition the shader also has a specific variant for foliage and subsurface objects that incorporates the SimpleGrassWind node for some very small added motion, which can be seen with the lily pads and grass.

Z-Up

Composition and Construction

The composition of the scene relied heavily on my memories of a particular area I had hiked in last summer. From my memory I quickly drew up a basic sketch of what I wanted.

Sketch

I’m certainly not a Concept Artist but it provided me enough to work with on this particular piece.

I took my concept and quickly translated it to a rough sculpt of the underlying terrain and then I textured it with the help of a fairly simple auto material that would texture rock faces based on terrain slope.

Terrain Blend - Base Colour

Terrain Blend - Normal

Lighting

Lighting the scene was accomplished using only dynamic light in Unreal Engine. This introduces some difficulties such as attempting to capture accurate bounce light. I set up my directional light and adjusted the intensity of the directional light, as well as the temperature. Once that was setup to my satisfaction, I enabled my directional light to cast into the light propagation volume and I enabled screen space global illumination from my project's settings. Using both these methods; as well as capturing the sky light, I was able to generate some adequate bounce lighting.

Lighting on plain terrain

Hand placing assets

Foliage painting background trees

Foliage painting background trees

Composing the shots was largely a matter of trial and error. I would navigate the level, find an angle I liked and then imagine how I wanted the cinematic rail to travel. Once I had the shot lined up, I would usually add some extra care to the regions that were being captured by placing individual assets in some key places I felt lacked detail. I also added some very rudimentary particle spawners for floating leaves.

Final Composition - Detail Lighting

Final Composition - Roughness

Final Composition - Subsurface Colour

Feedback

Getting feedback is essential when you’re trying to complete a piece for a portfolio or to represent you. Simply put, the value of extra eyes that won’t charge you any money is invaluable. This applies to people inside our community like the EXP Discord server; where I seek feedback, but also people outside of the community like friends and family who will observe your piece without any technical prejudice.

Final Composition - Snow Version

Conclusion

In conclusion, I’d like to share some of my final thoughts with anyone who might be reading this and wondering how to make something like this, or any other kind of environment art. Listen to your imagination and work night and day to achieve the results you want. However, always remember that you are your worst critic and don’t forget to be proud of what you have accomplished!