Having filled the gamespace with my trees from Grove3d, my Oak, Hophorn, Pawpaw and Sycamore mixes of trees in both PFG and large Grove3d blocks, I moved on to grasses and low vegetation. This is what really gives the woodland look it’s thickness and at eye level is a more convincingly immersive experience. I’m still experimenting with this, but I see this step as really the glue that ties together the entire environment.
This is where my earlier foray into GAEA really matters, because the masks that I created there are what determine a lot of how plants proliferate over my environment. I have layers of grass, soil, loam, riverbed, rock and fern friendly areas that all provide information to the different instances of vegetation that will populate the terrain.
Earlier, I had mentioned different techniques for proceduralism, which works off of that terrain layer information. The landscape shader will instance grass over the grassland, and rocks over the riverbed. Additionallly, I use the new UE5 Procedural Content Generation (PCG), to create even more specific and complex rules under which different plant types will proliferate.
The creation of the actual plant types was also a good opportunity to push my skills learned from Jeremy Huxley’s vegetation class at CGMA. I did several expeditions into the woods midsummer, and gathered a great deal of hi resolution photos of the kind of plant life found at the park.
I organized what I found in a reference tool, and identified each plant using LeafSnap. I then created 8k textures in PSD, 15 species in all, and generated a Quixel shader compatible foliage cards off of them, modeling the plants in Maya3d. I created sets of plants for each species, and brought them into Unreal.
Once I had my indigenous Shenandoah plants in Unreal, I created different versions of the PCG shaders that were introduced into Unreal this past summer, with particular attention to how we can switch different plant species in and out depending on what type of ground they are over. I feel like I have only begun to delve into that aspect of Unreal, but I can see already what a world of difference it makes.