80lv - Reusable Assets and Vegetation Workflow (Expanded w/ Breakdowns)

Tutorial / 26 April 2020


Hey Everyone!


I recently shook off some of my writer's rust and wrote an 80lv article regarding reusable asset and vegetation workflows. I touched on the different strategies we’ve used at Ubi with regards to how we build environments for single-player vs. open-world games, as well as how our processes have evolved over the past few projects. If you're interested in reading about our approach to creating and organizing reusable assets for Splinter Cell: Blacklist and the recent Far Cry games, head on over and have a read.


I also talked about my vegetation workflow, working with photogrammetry, and shed some light on how I built my Birch Forest scene. Since posting up that project, I've received a few questions with regards to working with scanned data, and the overall process for some of the different elements. I thought it might be useful to post some of those breakdown images here (as well as a couple new ones), and expand a bit on this excerpt from the article.


***Breakdown images below ***

"I used different techniques for capturing mesh vs. texture data. For example, when scanning the trunk of a tree, I would do a series of photos in a full 360-degree circle around the tree. If I wanted to capture the leaves of that tree, I would place a few leaves on a black piece of bristol board and take a single high-resolution photo from a top view. When I was done scanning, I would transfer those photos onto my pc at home and run them through LightRoom for calibration. This stage at the beginning just ensures that all the photos have the correct lighting and color values, which will help out my texture work later on. Anything that was scanned as a mesh would then be sent to Photoscan for processing. This step would generate a high definition mesh and texture which I would essentially treat as a high poly object in ZBrush.

From there, it’s a matter of building a low poly, unwrapping, and baking. If it was something like a tree stump or branch, it would go directly into UE4, however, if it was a tree trunk that I wanted to use as my bark texture, I would go into Substance Designer to adjust it so that it tiles properly. If what I was working on were the HD leaf images I would be using to build my cluster, I would take those into Photoshop to build an HD atlas, and generate my normal, AO and roughness maps in Substance Alchemist.

Now, once I have my bark texture and my HD leaf material maps, I go into SpeedTree to build my cluster texture. In case this sounds confusing, I’ve added some images to help illustrate the typical workflow I use for creating some of these different elements. All my high poly models here are done directly in the built-in SpeedTree modeller. Typically, this HD leaf modeling step would have been done in some other modeling package (like 3Ds Max, Maya or Blender) but the more I’ve been using SpeedTree, the more I find myself cutting out some of the modeling work I would typically be doing in those other software packages."


Have a look below to give you an idea of what the processes I talked about in the article look like. I tried to expand on them a bit and provide more insight. 


Grass:

  • Field Capture.
  • Photoshop clean-up and Substance Alchemist map generation.
  • SpeedTree high-poly models.
  • Atlas the bakes in Substance Designer.
  • SpeedTree game res models. Trying to layer the different elements while keeping a nice 'scale ramp'.
  • Export to Unreal Engine. Most of the grass in the scene is scattered using the 'Landscape Grass' feature.


Plant Assets: 

  • Field capture.
  • Photoshop clean-up and Substance Alchemist map generation.
  • SpeedTree highpoly models.
  • Atlas the bakes in Substance Designer.
  • SpeedTree game res models.
  • Import and setup in Unreal Engine.


Terrain Materials: 

  • Field capture.
  • Photoscan mesh and texture processing.
  • ZBrush touch-up and tiling setup. Accentuate certain features and clean up noise if needed.
  • Substance Designer bake, light removal if needed and tiling fix using basic ‘Make It Tile’ nodes.
  • Import and setup in Unreal Engine landscape material.


Trees (the workflow for these is somewhat split):

Bark Material:

  • Field capture.
  • Photoscan mesh and texture processing.
  • ZBrush cleanup and lowpoly creation. UV Master temporary unwrap.
  • 3DS Max UV Mapping polish to ensure proper tiling.
  • Tiling fix in Substance Designer. Light removal and tweaks if necessary.

Leaf Atlas:

  • Field capture.
  • Photoshop cleanup and Substance Alchemist map generation.
  • High-poly cluster models in SpeedTree (using bark from previous step for the branches).
  • Atlas the bakes in Substance Designer.

Game Res Models:

  • Combine the bark and leaf atlas created in the previous step to build out the tree shapes in SpeedTree.
  • Create variations as needed (see below for quick tip on creating variants).
  • Export to Unreal Engine.
***Quick Tip for creating variations ***

One of the flexibilities with SpeedTree is the ‘Randomize’ action. When starting out with a set of trees, cycling through some shapes with the randomize button can really help to find inspiration for your shape variants. When I’m generally happy with the result of my first tree, I’ll then use randomize to find some alternate shapes that I like and save those out as new files. The idea here is to provide me with a base to work from for a new shape variant. I will then go into those files and continue to alter the new ‘randomized’ shape to my liking. See the image for an idea of this workflow.


***Quick Tip for helping your elements blend together ***

I have begun using this little ‘Pixel Depth Offset’ network, thanks to Wiktor Ohman and his awesome World of Warcraft Homage in UE4 project. It’s subtle, but it really helps to connect all the elements better, and I ended up using it on almost everything in the scene.


That's about it for now! In the near future I'm hoping to output a tutorial on the rocks since I used a really unique workflow for those. Although the rocks in the scene were made the more traditional way with 3DS Max, ZBrush and Substance Painter, I used a cool new workflow for these which helped me build them out relatively quickly, and I think it would be cool to get that out there.

I've also been thinking of doing a tutorial for the vegetation elements, perhaps a series on grass, plants and/or trees. It would be taking something from beginning to end, going through all the different stages of the process when working with scanned data.

Anyway, thanks for reading! If you have any questions at all about any of the above breakdowns, please feel free to drop a comment below and I will try to expand on it even more.

I have made the project available for download on my ArtStation store as well as Gumroad for those interested in flying around and exploring in more detail.

https://artstn.co/m/eXq6

https://gumroad.com/l/ldspv 

Cheers! :)

B