The Oak

Prop Breakdown

Elia Luongo

elia-luongo-oak-tree-1-0000-scaled
198

Elia Luongo

3D Artist

Introduction

I’m Elia Luongo. I’m 30 years old, and I live in Italy. My journey with the 3D industry started in the last year of studying for a master's degree in Urban Planning.

After that, like many others in the AEC field, I worked extensively in the archviz industry. Since my graduation thesis, I had already started exploring a wider variety of software and workflows.

0_Presentation

Goals

Like most of us, I don’t have a lot of spare time, and for my projects, I usually aim to be as efficient as possible. In the last two years, I started my experience with 3D vegetation, which was one of my weakest points. Every time I needed a tree or bush, I had to rely on existing ones, and usually, they were not as close to my reference goal as I needed.

I had the luck to start using SpeedTree at my office, and since then, it has become one of my favorite software. I love mountains, trees, and finding mushrooms, and being able to replicate most of the stuff I see in the beauty of the real world is an incredible thing for me.

Complementary to SpeedTree is Unreal Engine, which has been part of my workflows for four years. Right now, I am very into the path-tracing features and looking forward to the excitiNg updates they have on the roadmap.

Project

I started this project with three main goals in mind: the use of photogrammetry (which is something I haven’t paid lots of attention to in my work) for the creation of custom textures for that beautiful trunk of the reference photo and create a very intricate silhouette with lots of manual adjustments, not my common “procedural” workflow.

Finally, I wanted a “cinematic” vintage look for the final output, which in my personal goal list, especially for some of the clips, was successfully achieved.

Software

For this project, I used:

  • RealityScan App from my Android phone for the bark texture.
  • Substance Designer for HighPoly to LowPoly baking and texture adjustments.
  • SpeedTree for high poly branches, cluster textures, and oak tree modeling.
  • 3ds Max and TyFlow for cleaning the scan and the swing animation.
  • Adobe Firefly for the moss creation.
  • Unreal Engine for the first blockout, lighting, and rendering.
  • Adobe Premiere for Color Grading.
  • Megascans assets for set dressing.

Reference & Inspiration

I gather inspiration from lots of sources, and I start my works only with something in mind:

Places I visit, especially natural ones Instagram photos, which became a thing for me.
There are a lot of incredible photographers who share their works, and some of them “speak to me”. Films and music videos Artstation is another great source of inspiration and knowledge.

For The Oak project, my inspiration came from an Instagram photo by Caitlin Fullam, depicting a beautiful old tree and a hanging swing. I am not a foliage expert as I would like to be, but I guessed it was from the oak species, in particular, I assumed it was a Quercus Pubescens, in Italian called Roverella.

Another source that was very important for this project was a YouTube video published in the SpeedTree channel showing how Studio Gimbal creates vegetation (which is incredible), I followed it somehow, but knowing I didn’t need a game tree, which let me go free on the polycount.

I could have been much more optimized on the modeling, but being a personal cinematic project and not a gaming one, I preferred the efficiency of my workflow.

Use of Photogrammetry, Baking & Mesh Converter

As I said before, I’m not an expert in the photogrammetry field, still, I wanted to employ it for creating some personal scans and textures. So I went into the woods nearby, I searched for similar species and used the RealityScan App.

Luckily, the scan went pretty well, and I downloaded the FBX model from Sketchfab (not the highpoly source), which was around 1 million tris. I imported the model into 3ds Max, cleaning the bad parts, the base, and the top.

I duplicated the model, used the retopology modifier as a base, then did a few adjustments and UVed the low poly model, which was around 5k polys.

I needed both the common PBR maps and the albedo coming directly from the scan. So I imported both the models into Substance Designer and used the bake tool to gather all the maps needed.

I returned a few times to Designer to do a few color adjustments on the albedo map, which had too much difference between dark and light bark areas, useful to mask the repetition in the different tree parts but a bit too much initially.

7_Designer

The photogrammetry features from the newer versions of SpeedTree let you create tiling textures from scanned assets in a very fast and easy way, using the MeshConverter node. It’s pretty intuitive, moving Top and Bottom points from where you need the textures.

You can choose a blending type based on your needs, and just export the maps. I did it a few times before finding the perfect spots and blending.

8_Mesh_Converter

Blockout & Modelling

I did a pretty quick blockout in Unreal Engine with a basic terrain mesh (which then became the actual terrain), a basic tree shape, and basic lighting. I tried to imitate the camera and aspect ratio from the reference photo without being too precise.

Then, I started to think about the assets needed to populate the scene, starting from the main subject, the oak tree, the swing, and the remaining foliage (grasses and bushes). Of course, I started with the large tree, which I wanted to recreate very similar to the reference. I was very tempted by the use of Blender or ZBrush for the trunk modeling, but luckily this time I went all in on SpeedTree, which I think saved a lot of time.

Thanks to the sculpting features and all the new nodes implemented by newer versions of SpeedTree, I was able to put in place all the details I needed for the tree like some lumps and carved areas (remembering the distance from which was visible, so yeah, I didn’t go crazy on detailing).

9_Modelling

High Poly models for branches

After the first blockouts of the tree in the scene, I already knew I had to make some improvements on the performance side of the tree, especially considering an upcoming animation. So I decided to use the cluster option for the branch distribution.

I did the modeling inside SpeedTree, with a few variations for the branch with and without leaves. I then used the orthographic camera to export the textures.

10_HP_Branches

Node structure

As I said before I wanted to recreate a tree very similar to the reference photo, which has some peculiar elements and a very defined structure. For that, I used a lot of the Node and Freehand mode to model most of the foundational parts.

I love the procedural nature of SpeedTree, but the manual corrections were the only way to achieve the desired results. After the basic structure, I started with the procedural phase. I used Fronds for the distribution branches, on which I placed the Anchor Points. With those, it’s possible to spawn other meshes on existing ones.

As you can see in the Node structure image, I used lots of nodes. The colors were a useful way to identify the different roles of the nodes.

For example, when I needed multiple node corrections at once, It was easier to select the ones with the same role.

The moss spawning was achieved through the new Projector and Decal features.

First of all, I created the moss on the fly: I was at the last adjustments of the tree, and I noticed a missing element: the moss. I was in a hurry, and I decided to use Adobe Firefly to create some moss clumps, and with a few masks and passes on Photoshop, I was able to get some moss meshes to spawn on the trunk.

I included it in the branch atlas in the spare space, and I used the Projector to spawn the moss only on the right side as in the reference photo. The node in the projector used in the spawning was a Decal node, which was perfect for the role.

Animations – Wind & Swing

One of the main prerogatives for the project was animation. For both trees and grasses, I relied on SpeedTree for animation, particularly in the “Legacy” mode.

I have used the new Games mode; I tried it too this time, but the Legacy one was winning, even if you are locked to one node animation, plus a general movement and Frond/Leaf animation per se.

For the swing animation, in the beginning, I tried to use a mesh attached to the cable actor, but it wasn’t working. Short on time and ideas, I decided to use 3ds Max and TyFlow.
For that, I needed the tree mesh as the “hanger”, so I exported the main trunk and imported it in 3ds Max.

I only know basic operations in TyFlow, so I used the YouTube bible to get some knowledge. It worked very well for my animation goal, which is a swing animation with varying wind intensity. Then, I exported it as an alembic animation and imported it into Unreal as a Point Cache.

17_Swing_TF

Grass and Bushes

In the reference photo, there is a lot of field grass, and I wanted to make it more or less the same one. I collected some Megascans atlases in a single one and used them to create the grass meshes without the need for many texture sets. I used the Dash tool for scattering, in my opinion, the best scattering (and not only) option for Unreal Engine.

That said, one of my next learning goals will be PCG to have my scatter tool. The surface scatter tool is very flexible, with all the mask options: for example, the path mask for the trail to the tree or the edge mask to break the uniformity on the edges.

After scattering the grasses, I decided to insert a few other elements in the scene, some bare bushes to give a bit more interest.

Materials

I already have a pretty complex master material for the foliage assets in my projects.

In particular, the material has lots of controls for the base color: hue, saturation, contrast, luminosity, a dirt mask that starts from the pivot of the mesh, a macro variation overlay; many controls for the subsurface, which functions independently on the two sides, other coloration controls like the base color; few controls for the World Position Offset attribute, starting from the SpeedTree node for wind animation.

Besides the “singular” controls for all the instance parameters, there is a Material Parameter Collection with a dozen global parameters such as general hue base color change, roughness multiplier and especially wind controls, useful to lessen, enhance or stop the wind force.

From the master material, I create all the instances needed. In particular, the tree has three materials: one for the trunk and main branches (the non-translucent material), one for the distribution branches, and one for the leaves.

19_MasterMaterial

Lighting

The lighting time is always one of my favorite parts when everything comes to life. In the beginning of the project, I wanted to imitate the reference image lighting, but after the first blockout, I wanted to be more creative.

So I started to experiment with both the directional sun + atmosphere and HDRIs, at the end going with the following for each scene: Directional Light + Sky Atmosphere for the 1st and 4th; HDRI + Directional Light (a very slight touch to highlight and shadowing) for the 2nd; only HDRI for the 3rd, 5th and 6th; HDRI plus rectangle lights for the 7th scene, the night scene, my favorite on par with the first lighting.

I have to specify that for the cinematic projects I always use the path tracing rendering mode, which gives me the realism, grain, and indirect light that I want.

Rendering and Color Grading

The rendering is pretty straightforward. I created a sequence for each lighting, and the main things inside are the Geometry Cache component for the swing ropes, the global parameter from the Material Parameter Collection varying the wind intensity to get some controlled gusting, a slight camera shake and finally animated the Directional light for some scenes.

I used the Movie Render Queue to render out all the scenes, each of them made by 290 frames in 24 fps. I tested a bit with the samples needed for sufficiently clean, and I finally went with 16 temporal and 8 spatial. The total rendering time was 2-4 hours for each sequence with an RTX 3090.

After that, I used Premiere for editing and color grading. Mostly I used Lumetri Color, a slight grain addition, some bloom effect using the Gaussian blur effect, and that’s it.

Conclusion

This has been one of my favorite works, especially for the things I learned on the path and the results achieved. I am more and more inspired by natural environments and plants especially, and they will probably be the subjects of my future works.

I plan to make a small detour from using the path tracer and give a chance to Lumen for a more gaming-focused environment. Thanks for reading this article, if you have any questions or feedback, just ask!