Junior Vegetation and Material Artist Florian Obchette has walked us through the production process behind the UE5-powered Dry Environment project, explaining how the scene's rocks and vegetation were made using Blender and Substance 3D Designer.
Introduction
Hi, my name is Florian Obchette. I'm a 21-year-old Junior Vegetation and Material Artist at Ubisoft Ivory Tower on The Crew Motorfest, and formerly a Junior Vegetation Artist at Kylotonn on WRC Generations.
I started as a self-taught artist back in 2019 and stopped my studies at the end of 2020, when I joined the CG Academy in Belgium for a one-year training in game art. It allowed me to reinforce what I had learned before with professionals from the industry.
After that, I returned to a small studio in Belgium for 2-3 months and then found a job at Kylotonn, where I worked for six months. Afterwards I joined Ubisoft Ivory Tower in Lyon where I still am as of the writing of this article. In 2022, I also gave classes on Blender to first-year students.
The Dry Environment Project
After some reflection, my first thought was to look for a fairly flat environment without having large trees lining the horizon, and so I made a selection of low plants that I wanted to create with a quick biological research to better understand and apprehend the species. I also did some research for the colors and compositions of the plants that I would assemble, their overall silhouette, to be able to create diversity easily when I paint my vegetation in Unreal Engine.
I always pay attention to their scale too, because bad scaling can quickly hinder the overall feeling of the image.
Generally, I don't do the first block out of my scenes like most artists do; I prefer to take time to first create a functional and correct plant ecosystem and then think about what would be logical to put in this environment to create a composition. My first focus was on the vegetation and not on the composition of the final scene!
Blockout
Once I have my reference for the vegetation, I take a first step on the shapes that I will approach and therefore start to draw in Photoshop in 2048x2048p to see which shapes I would explore.
Once my atlas is ready, I send it to Substance 3D Designer to create my alpha, and tweak my color map using the Distance node to get read of the outlines of the background color on the vegetation.
My next step will be to cut out my atlas in Blender and quickly assemble it to see if what I've drawn with the level of shapes/scales will work, it's a way to make sure that what I did before is correct.
If my first drawing works, the rest will follow without any problems.
Modeling the Vegetation
My first step is to create my color atlas with trims and color gradients. I really put very few details in my colors in order to have a clean look and not overload color information for nothing. Gradients are fine for some small plants. When you bake your atlas on a plane, you lose a lot of detail anyway.
For the flowers, the first step was to create the petals, the trunk and the pistil. I make fairly simple shapes and don't put a lot of detail due to the reasons mentioned above and also not to explode the polycount.
Once the flowers are fully assembled, I place curves that I separate throughout, and I come and draw the curves using the draw curves tool so that it follows the diagram of my drawings. I assemble my high poly this way, my process is very close to the one of Patrick Gladys.
Once assembled, the high poly is ready to be baked, so I export a plane as my low poly, which I will be using to bake and finally create the atlas for the low poly.
For the baking, I project information from the high poly onto a plane which is the low poly geometry and I retrieve the color thanks to a texture transfer. Then this is how I create my low poly plants, the rest is simply about cutting the texture in a plane and assembling all parts in Blender.
The creation of the aloe vera was very fast, it only took me 40 minutes with this process. First, I modeled in Blender the high poly base meshes and unwrapped them directly.
The second step was to decimate the high poly to quickly have a functional low poly, and as I unwrapped it before on the high poly the UVs are correct.
The third step is baking, nothing complicated. Here are my settings:
I used the color ID randoms in hue to randomize in my color, the luminance of each part to detach, and I therefore textured the whole thing in Substance 3D Designer.
The final step was to place the low poly using a curve to assemble it.
As for the tree, the challenge was to think of making a bark that tears off of the tree trunk without having a headache. I packed the bark in my tileable textures to have only one ID for the trunk, and in unreal I therefore set the shaders in masked mode to get the transparency of my barks and in two sided.
To create the branches easily, I decided to tackle it like my other plants and to make a straight branch to then place it using curves, which made it easier for me to put groups of barks by hand that I duplicated. This process took me 3 hours for the variations of my trees and the materials.
Some things are repeated in the process, but here are some steps I followed. To optimize my trees and not to see only geometry for the thin branches in order to save performances, I made myself another atlas comprising my dead branches that I had modeled to create the base of my trees. I baked the branches in Substance 3D Designer in order to retrieve the normal colors of my materials for a perfect blending between them, as they were exactly the same color.
Creating Pebbles and Rocks
For the pebbles, I sculpted a base in ZBrush, baked, and textured them in Substance 3D Designer.
Once finished, I started to set up an area in my Blender scene to simulate rocks falling on the ground. This made a pile of rocks, which I exported as a .FBX file. Later on I scattered them by hand in Unreal Engine.
To do so, while in Blender, I first spawned a plane which I used as a ground collision so that the stones do not fall infinitely into the void and can assemble together. I added a physics property in Rigid Body and put his type in passive so that it doesn't fall.
I also did the same thing on the other side of a pebble to apply the rigid body to it, except that I was going to apply it in Assets so that they are subject to gravity. I also modified the friction parameter so that it doesn't slide like an ice cube on the ground so that it gathers and stacks correctly.
To save time, you can select all your pebbles and at last the pebble with the right parameters and you can go to object > rigid body > copy from active so that it copies the rigid body data on all the other pebbles selected.
And here is the result once the simulation has played.
Pay attention to your pivot point on your meshes because it’s the gravity center, and also to their dimensions. Do not hesitate to reset them because it influences the weight of your meshes, and, therefore, the consistency of the simulation.
So, to do the equivalent of an Xform, you can do a CTRL + A and All transform to reset them to 0. But be careful your pivot point will reset to the center of the world, so don't forget afterwards to reset your pivot point to them by selecting all and right clicking > set origin > origin to geometry and then have fun!
Materials
For the tileable materials, I proceeded in a fairly simple way, as it was not my main focus. I took a Height Map from Quixel Megascans that I modified and then created all of the necessary maps such as the Base Color, Roughness, Normals, and AO in Substance 3D Designer.
I still took a little time to have a good blending between my pebbles and my soil, even if in the end we couldn't really see it.
I baked my stacks of pebbles in Substance 3D Designer with a repeating pattern to use it in textures.
Here is my graph for the dirt ground:
The only trick I used in it was to bake in a color map from meshes, and convert it to grayscale then to use a gradient map using the colorimetry of my rocks to create slight color variations without using floods thread.
Unreal Engine 5
For my project, I used fairly basic lighting. Lumen helps a lot to have cohesive lighting without having to take the lead with tweaks or various tricks that existed in Unreal Engine 4 in order to fake certain things to improve the rendering. It's a big time saver for a better result.
Feedback
I thank all my friends with whom I discussed, played, shared my projects and with whom I had very good feedback. They gave me a different vision of my creation.
For an artist, it’s important to be well surrounded. These friends will help you overcome the hard times, and also to motivate you to revive your creativity. It will allow you to have a new perception of things, because the more time we spend on our artwork and the more our eyes get used to potential errors that we no longer see over time.
I have one piece of advice for everyone, don’t stay alone when working, ask for help and feedback if necessary!
Shoutout to my guys for feedback: Léo Gontier, Erwan Gaudichon, Timothy Dubois, Antoine Déjean, Daniel Robichon, Mohamed El Bouhy.
Conclusion
From now on, I will move towards the creation of a hand made vegetation tutorial in Blender. I will take the time to deliver something educational, logical and easy to follow for someone with an intermediate level and possibly go on a new 3D environment in the future.
Thanks to 80 Level team for giving me this opportunity to share some of my tips and tricks with you! You can contact me via my ArtStation, Twitter, and LinkedIn.