AAA+ Procedural Pine Forest | Breakdown

Hello everyone,

we are currently working on a Pine Forest Environment for the Unreal 4 Marketplace.
As one of our most ambitious Marketplace project to date, we decided to take a different approach by sharing the whole development process of the project.
We hope that it will help people to get an insight into what to expect and maybe serve as a guide for fellow content creators who are interested in environments and photogrammetry.

Key features will be:

  • A detailed terrain model (2x2 km) generated from airborne LIDAR data.
  • Photo scanned landscape materials and 3d models
  • Procedural foliage placement (Procedural Foliage Spawner)
  • Pivot-based foliage animation
  • Spline-based road tool

I will edit this post in the future by including the final images and a long description. :slight_smile:

We will release more info and progress over time. The next post will contain the first WIP images.
Please feel free to leave questions, comments or requests.

1 Like

I am looking forward !!

Here are some photo references we took at the nearby forest.


The high poly model (12,000,000 faces) of the root was generated with Agisoft PhotoScan. I used 30 Images (16 bit Tif) in total, which I processed previously in Lightroom. From my experiences and according to the recommendations of other artists, I suggest to disable sharpening and also to remove highlights and shadows on the raw images.


I used TopoGun to create the low poly version of the root.


Diffuse, normal, ambient occlusion and displacement maps were baked in Xnormal and served as input textures in Substance Designer. Here is the graph which we use as a template on almost all of our assets.


The final maps. Still not packed.


Low poly model with displacement material | Unreal Engine 4.


The Landscape was created in combination with airborne LIDAR data and WorldMachine. The height map, generated from the LIDAR data, was used as a basis for WM.

LIDAR point clouds (.las/.laz format) can be downloaded from We usually use CloudCompare to edit the point clouds and to convert them into 3D meshes.
It should be kept in mind, that those point clouds are often recorded in feet and should therefore be converted into meters. (scale by 0.3048)

I used xNormal, to bake the height information and vertex colors into textures. The generated height map served as an input in WorldMachine. At this point, it’s important to state the elevation range and X-Y dimensions of the height map, otherwise, the landscape in UE4 will be different than the original.
WorldMachine was also used to remove the noise of some leftover trees and to create the necessary splat maps. Note: WorldMachine provides a “Splatmap Converter” example file, which extremely useful.

For the last few weeks, we have been doing all vegetation textures over again.
The reason is that the normal maps we created earlier, looked very flat. After some digging, we discovered that it’s possible to create more accurate textures (especially normal maps), by constructing them from photographs which are taken under different lighting conditions. Soon we will share the details of this new approach.
Here is a normal map comparison of a pine needle upfront:

Another point that we were not fully satisfied with, was the wind motion on our vegetation assets, which resembled that of underwater grass. Therefore, we decided to replace the “Simple Grass Wind” function with the new Pivot Painter 2 function on all our vegetation materials.
This comparison video shows the difference between the two techniques:

It all looks very nice! One question I would have is: What textures sizes are you doing? I hope texture sizes will be 8K, since I think it happens way too often that people talk about “AAA” or super detailed things and then only use 2K or 4K textures - since UE4 generates mip maps anyways, performance is no reason for not using 8K textures, and up-close 8K is needed for it to look great.

Thank you John! We are doing 4K textures but are using the UV spaces very wisely.
Performance may not be a reason while playing with 8K textures but the demand for labor, disk space, and computing power to generate those are extreme.

Looks like photometry (different than photogrammetry, less accurate) in the right image. Of course you have to be careful with the light attenuation making a big round shape across your normal map. I’d recommend instead going the photogrammetry route; Buy a license of Reality Capture and retaking those photos of the branches since you likely have them under a controlled environment anyway.

Looking good! Good luck!

Short video of our latest update.
We implemented dynamic lighting with LPV, distance field shadows and ambient occlusion (DFAO). Therefore the mobility of the directional light as well of the skylight had to be set to movable.

good job!!!

Thank you for the advice. Much appreciated.
I should have mentioned that the effect around the normal map was added later on with the Flaming Pear solidify plugin, to provide good MIP’s at distance. We do this on all our vegetation textures.
We tried the photogrammetry approach on needles before. Unfortunately, this is extremely time-consuming and has almost no contribution to the final texture.

By the way… I am a great admirer of your work!

Hey man send me an mp or a email [EMAIL=“”] :smiley: would like to ask you a few things :stuck_out_tongue:

It looks awesome :slight_smile: Great work!

Can you please share lighting settings?

This looks VERY good! Keeping an eye out for it the final results =D

@Stefan Öztürk, how did it go? Found this post through one of your other stuff I bought on the Marketplace.

I will absolutely buy it. Maybe you can put the tutorial of Main steps in marketplace,it will be perfect~