Thanks, Allar! Good luck with your new project!
Who just carries around $250.000 worth of files on a portable hardrive without any backups.. The bug is stupid, but this guy is a moron.
Michael Allar here. Thanks a bunch for posting this, I really appreciate it. I'm also the guy who wrote that Confessions article that was posted here on 80.lvl as well.
3d artist Jonathan BENAINOUS showed a new way to create procedural leaves for video games.
My name is Jonathan BENAINOUS (Website, ArtStation, LinkedIn). I started about 10 years ago in the video game industry after I finished my studies in applied arts at LISAA in Paris. I started as a 2D concept Artist for Neko Entertainment, then I rapidly went on to 3D because that was what I initially wanted to do. I then went on at Quantic Dream, where I stayed for about 6 years as Senior Environment Artist. There, I worked on games like Heavy Rain and Beyond: Two Souls.
I was then contacted by Guerrilla Games, and I worked there for a year as Senior Environment Artist on their next release, Horizon: Zero Dawn. I was in charge of the design of Building blocks as well as the construction of buildings, but also of the cities made from these elements. I also worked with the team on a visual benchmark of the cities so as to determine the overall visual quality.
In the meantime have been contacted by Ubisoft Paris, who were searching for a Senior Environment Artist to work on Ghost Recon: Wildlands. So I came back to Paris in May 2015 to start working on this very challenging open world project.
Procedural Leaf Generator
I discovered Substance Designer few years ago, I directly felt that this program was bringing something revolutionary in the approach of texturing. I’m a Maya user, so making shader in the hypershade was a big part of my Job at Quantic Dream and I naturally felt comfortable with the nodal approach of Designer.
I experimented the use of the program for the first time on my real time Sci-Fi Helmet, one of my previous work :
I then challenged myself on procedural textures, by making for example that sloppy brick wall study:
The goal here was to have a photorealistic result by using a procedural approach and was a very interesting exercise.
In Designer, every category of material is a sort of challenge, and I comes to a conclusion that organic material, are often way more complex to produce than manmade elements, such as tiles, bricks, grout, etc…
So at some point, I was just thinking about, ok I would like to do a cliff, with roots, and leaves. But each of this elements could be taken separately as the subject is so complex.
I basically decided to tackle the leaf first by trying to go as far as I could on this subject. And the result is this Leaves Generator.
Like in every other Art project, the first step in this creation process was to collect references. I realized that pictures were not enough to get the understanding of this organic matter, so I basically gathered different leaves on my road to work. Ivies, vines, etc…
Instead of trying to match to one specific species, I tried to identify visually the elements who define the essence of a leaf. So basically, the silhouette, the stem, the leaf veins, the cells, etc…
I then took all these details separately and started to prototype and test different way of making each of them in Designer.
I started with the silhouette, by overlapping basic patterns such as Polygon1 & Wave form_1 combined with Transformation 2D Nodes, I manage to create a leaf shape pretty easily:
To add more variety and detail to the shape, I tried to generate irregularity on the border. I used a succession of Slope Blur Greyscale, that I clamped with a Histogram Scan to get a sharper Mask:
For the leaf veins, I basically “drew” them using simple nodes. A primitive node in Input, a Transformation 2D to stretch and rotate and a Warp to get a wavy and organic feeling:
I used the same process on the secondary layer of leaf veins:
For the stem as well, same method:
After adding different layer of cells and combining the silhouette plus the leaf veins, I managed to generate a height Map that I would only use to extract albedo variation and normal information:
I used Gradient map, HSL, and a mix of contrast/Luminosity and Uniform Color to build the base of the Albedo. I obtained this result by connecting Level nodes to previous masks from the graph and by using them to blend the different color value together. It was also a good way to highlight smaller details:
The next step was to keep adding more variation to the albedo. To do so, I used a curvature smooth node that I leveled and clamped twice with two histogram scan nodes.
I then used those two same nodes to blend two shades of Yellow Gradient map and expand the color spectrum:
One of my latest step on my albedo was to bring this brown dead border around the Leaf. To achieve this effect, I blended two different brown gradient map together, then to localize the dead parts on the outline and on the leaf veins, I blended a blurred leaf veins mask with a curvature smooth node, previously contrasted by a histogram scan.
Here, the values of the histogram are so clamped, that even a small modification can totally change the overall aspect so It was important to stay subtle in the way of adding this micro detail.
The final touch was to make all the smaller details pops out a bit more so I added curvature information in overlay with a very small transparency value:
For the mask used in Input, my first attempt to create the silhouette of the leaf was, as I said previously, by overlapping and subtracting primitive shape. But in the end, I realized that painting a black and white Mask in a bitmap node was an easiest way to have the same result. So this is how I get these other sort of leaf. By subtracting painted Mask from my main shape, or simply by painting a leaf shape from scratch, I could directly have a new variation:
Then, to create very specific leaves I even experimented to use a bitmap from the Internet as a base for my Leaf shape. So in our case the logo from Substance Designer and Artstation :
The only constraint is to ensure yourself that the mask that you’re providing in input is placed and connected at the right position with the origin of the stem. So, centered and aligned.
The other detail that I couldn’t really fix is that the shape of the leaf is not going to impact the way the leaf veins are distributed on the leaf. So even if you’re drawing a round Mask, the leaf vein structure is not going to bend to match to the silhouette. Maybe there is a way to automate this, but I didn’t manage to find a proper solution.
To have more control, I’ve exposed some parameters on the different HSL nodes of my graph to be able to tweak the colors. The green, the yellow, the brown, you can modify all the values and even change the color itself.
I’ve also exposed values from the histogram scan used to add the yellow and the brown dead borders on my albedo. It allows me to define the age of the leaf and to change radically their look very quickly.
I did the same for the Insect damage intensity, parameter is exposed to let you the possibility to add more or less damage
Could this generator be used in game production?
I think this generator can totally be used in the game production and it can save you a precious amount of time.
You’ve many way to use It, for example to generate custom leaves for Speed tree. Define the age of your tree by adding more yellow and brown leaves here and there, etc…
But I originally design It to be re-used inside more complex textures in Designer.
Leaves can be splatted on top of a muddy ground or used to create a wall covered with Vines.
Basically, It can be useful whenever you want to make leaves in a game. It doesn’t really allow you to make all the very specific species that you can find on earth, but you already have enough control to make a lot of variation.
I think that this approach can be applied to a lot of different assets. Basically all sort of elements that you can splat on top of something else. Pebbles, Fir cone, brushwood, Roots, flowers, etc…
Each sort of asset can be taken as a subject in Itself and converted as a generator.