Calvin Verhoolen showed some of the cool stuff he learned about the creation of real-time hair for game characters.
My name is Calvin Verhoolen. I am a Senior Character Artist working in Berlin/Germany.
I started 3D in the year 2000 working at Eurocom Development Ltd. UK on titles like James Bond – TWINE, Nightfire and Pirates of the Carribean. After working for Climax Ltd. on Silent Hill Origins I moved back to Germany to join Yager Development for cool projects like Spec Ops – The Line and Dead Island 2. I also worked on some interesting mobile games at Wooga.
I am self-taught and enjoy learning something new in anything I do. The fastest way to learn of course is by having a good mentor which lead me to CGMA, who have a great selection of courses and mentors to choose from. When I saw that Johan Lithvall was presenting his course Hair Creation for Games I did not hesitate to enroll.
Reference is key
Hair in games is both interesting and challenging, since there is a lot to get right in hair.
It is an enormous time effort and I have yet to see someone do hair fast. As with everything in art: Reference is key!
Hair is one of the best tools to create personality in a character, since it shows a lot of attitude.
Which hair style do I want? Is the character well-kempt or does he/she/it not bother with hair?
How does it frame the face? Does it hide the face? What colour does it have?
All those decisions will shape the way people will perceive the characters personality and goals.
Once your reference is collected and represents what you want to express, you need to understand the hair you want to achieve in its physicality. Where are the roots? What is the growth direction and how does the hairline separate hair from skin? How is it structured and what are the details?
Armed with all this information about the haircut to be created you hit the technical limitations of the real-time world, forcing you to plan out your hair to be efficient in polycount as much as texture space.
Start planning out your texture with painting a quick map of it in Photoshop. This is a good chance to also study the reference more in-depth. For long hair it is best to lay out the texture in a 2:1 aspect ratio, keeping in mind to leave some space for any additional hair you want to create later when needed. The hair becomes less dense from right to left.
Xen will be your next port of call to create the texture you need for the final asset. Map the planning texture onto a ground plane that has the same aspect ratio as the texture.
Then extrude the top edge upwards to create planes to spawn your hair from. After this base setup is done you can spawn some spline curves by painting them into the ground plane in top view, with you planning texture applied for reference. Those splines will then be converted to XGen guides. XGen can be used to define the amount of hair per card, clumping, noise and other attributes of hair.
Once this is done the hair is converted into geometry and baked down to the ground plane. This way you can create all texture maps used by the shader in Unreal. There will be a height map, alpha, some gradients and an ID map. You can cut the plane into your final hair cards afterwards.
With the hair cards and textures created, the actual process of creating the hair mesh can start.
The most dense cards are used to create the block-out hair, which will define the main look. It is important at this stage to make sure you cannot see through the hair onto the skull or through to the other side. Once this is blocked out the second and third layer of hair will be created on top, leaving some negative spaces to give the hair depth. As with most assets in art we go from large to small detail. The later is created at the end and the most fun bit since it will give the assets its final volume, flow and shape. Finishing with flyaway hair will tie up the silhouette and finalize the mesh.
With the mesh done, it is almost ready to be exported into the engine. To enhance the depth and control it in the shader, ambient occlusion is going to be baked down into the vertices and them the asset can be exported. The engine stage has finally been reached and the mesh and textures can be imported. The shader used in this asset is the hair shader Epic provides in their character benchmark scene. Once this is set up it is all about careful tweaking of the attributes in the shader.
This hair asset has about 40K polygons which is quite heavy for hair. There is still a lot that can be cut down especially on the Base Layer of hair, since it is the most covered layer. Apart from that the top layer with flyaway-hair can be switched off in the first LOD pretty quickly and Simplygon can be used for the rest of the hair afterwards.
Hair in real-time is still a very complicated matter. The creation of hair simply takes time even on an expert level. It cannot be scanned or simply automatically built at this stage. Research, planning, baking, texturing and mesh creation as well as integration into the engine and also animation preparation make it a costly matter for every production.
Animating a hair asset shows its own challenges, since using physics on these hair cards can lead to intersections which will break the illusion instantly.
But: If this is done right it pays off well by making your characters stand out and give them and your project a lot more depth.
One strategy I keep being reminded on in my career and also here by Johan is that it is important to be able to kill your darlings early. So keep iterating every step of the way, but do it quickly to stay on schedule. Block-out your work to answer the most important questions of your task first, but also plan carefully to stay within budget/time.
I hope this general overview of the workflow was helpful to you as a reader. I can only recommend taking the course for more detail. I feel really lucky to have had the chance to be part of the CGMA Hair Creation for Games course by Johan Lithvall.