Aleksandr Sosa shared an in-depth breakdown of the workflow behind his Hairstyle and Beard for Games project, showed the optimal width for hair, and explained how to make a universal set of textures for Marmoset, Unreal Engine 4/5, and Unity.
Hello everyone, my name’s Aleksandr Sosa, I’m a 3D Artist from Russia. I’ve been doing CG for three years now. Now I’m studying at the Scream School in Moscow. Today I want to tell you about my experience of creating various men's hairstyles and beards for AAA games.
In modern games such as The Last of Us 2, Ghost of Tsushima, Assassin’s Creed: Valhalla, The Dark Pictures Little Hope, Horizon: Zero Dawn, Baldur’s Gate 3, etc. you can see an amazing level of hair development. The hairstyle is one of the most important and memorable elements in the character, so you need to devote enough time to it to achieve a good result. This pipeline has been described MANY times, so I'm not going to bring anything new to it, but I will try to focus on non-obvious points, difficulties, and life hacks that will help you in your work. We will discuss other interesting points as well. Let's get started.
Search for references! It is very important to immediately understand what hairstyle you want to see in the final, for this you need references. As you can see, I had collected not only the hairstyle I needed but also several others, this is good in order to understand how long hair behaves.
At this stage, it is very important to understand in which direction the hair on the head and face grow. My hairstyle is easier to do than a hairstyle with short and medium hair because there is only one point on my hairstyle that all curls tend to, so I just ignored the direction of growth. If you do a short hairstyle be sure to consider the direction of hair growth. The same approach should be used for the beard.
My advice is to do some basic sculpting of hair and beard in ZBrush. This will save you a lot of time in the next steps. At this point, it is important to mark the hairline. Basically, the height of the hairline is equal to the length of the nose, you can raise this line higher, then the character will look more mature.
Layout of Textures
The next stage of work, one of the most important for me, is the layout of the textures. I do this in Photoshop. Now we are planning how the curls will look, shape, length, variability, quantity, and thickness. This should be a rough sketch, but with the correct proportions.
In the first picture, I drew the curls with a brush and indicated the zones. Red is the curls that I will use for the first layer of hair and beard, yellow is the second and third layers, green is the final layer. You can see that the hair for the beard is thicker and curvier than the hair for the hairstyle, it is necessary to make the beard appear tangled and thick. Plan it at this stage. Do not forget to analyze the references.
Now that we have the layout of the curls, we can head to Maya to use XGen to simulate the locks from our sketch. The whole process of creating textures from XGen to baking in XNormal is perfectly shown in the course from CGMA Hair Creation for Games.
In reality, the thickness of a human hair is 0.06-0.1 micron. My task as an artist is to find the balance between good looks and technical requirements for the game engine. Experimenting with the thickness, I came to the following conclusion: if you are using a texture of 4096x4096 then set the width to by 0.02 if the texture 2048x2048 has a width of 0.03. For a beard, you can use a width of 0.03 for 4k and 0.35 for 2k, since the hair on the beard is always thicker than on the head
After running, you should have these textures: Alpha, ID, Depth, Root, Normal.
Next, we go to Maya, load the Height Map into the material so that the hair is not white, adjust the Ambient Color and Diffuse. Next, you need to cut the geometry correctly. At this stage, you don't need to add a lot of polygons for the parts.
The fewer areas with full transparency, the better for the engine.
Next, we collect the sliced geometry into voluminous curls. The curl consists of 3-4 parts. There can be many options, now your imagination works more, but you don't need to do too much, 8-10 is enough. In the course of all the work, even more options for curls will be added. The important point is that the edges are level for the deformers to work properly.
For better hair display use this setting:
To control the curls, I used three deformers: Bend, Twist, and Flare. And soft selection to adjust the result. A very important point so that the geometry of the curl does not enter the geometry of the head, it should lie on the top of the head. This is to make the roots look natural.
Start with thicker curls, moving down to sparse curls. With each new layer of hair, there should be less and less hair. For the first three layers, try to completely recreate the required volume of the hairstyle. 4-5 layers add chaotic curls to the hairstyle that are knocked out of the main hairstyle. On layers 1, 2, and 3, I used a lot of symmetry to speed up the process.
As you can see, each new layer approaches the hairline. This helped to achieve a smooth transition. The beard was created the same way, but for the beard, three layers were enough for me.
For this hairstyle, I used 2 life hacks. First. This hairstyle consists of 3 elements: bun, ponytail, and hair on the head. This technique saved me a lot of time when working with deformers and reduced the polycount of the entire hairstyle. Since the junction of these elements is hidden under the scrunchie, everything looks solid.
The second trick is that I only placed the curls along the growth line. Since in this hairstyle the curls fall on top of each other, I place the curls only in the green zone. There is no hair in the red zone. This trick saved me a lot of time when working with deformers and reduced the polycount of the entire hairstyle a lot. In the final shots, the hairstyle looks voluminous and is not visible through and through
These tricks do not work with the beard. I placed the dies over the entire surface of the jaw.
Pay attention to the green lines, they show the direction in which the strands of hair are located. Try to make them interesting. Give an interesting and unique shape so that the hairstyle looks good.
To improve the appearance of the roots, you need to apply a Gradient Map to the Alpha through multi-layer in Photoshop and adjust the Levels.
After all the actions are done, we got a universal set of textures for Marmoset, Unreal Engine 4/5, and Unity.