Course overview Course overview
Create quality hair for games
LECTURES AVALIBLE STARTING APRIL 25th PLEASE READ BEFORE ENROLLING
This class will teach you how to create AAA quality hair for games. Using techniques developed during the production of Horizon Zero Dawn, you will be taken through the full process of planning your work, creating hairs in xgen, baking the hairs into textures, creating a hair asset, and finally putting it into Unreal Engine. The class will contain both practical workflows and theoretical mindsets to help you further hone your skills in hair creation for games.
* Couse lectures will be avalible on demand with a 1 year access. Please note there will be no instructor attached to this course. Feedback and Q&A sessions will not be provided in this course.
**Students must enroll prior to February 3rd for Winter Term access. All purchases are Non-Refundable.
Hair Creation for Games WHAT YOU’LL LEARN
The more you know, the better.
Taking your skills to the next level
Johan Lithvall is a Hair Specialist and Character Artist who specializes in real-time rendered hair for games. He was responsible for the full production of hair for Horizon Zero Dawn, including but not limited to: creating benchmark assets, including the hair for the main heroine; establishing a pipeline in the creation of hair; educating outsourcing vendors in the creation of hair, and providing live feedback sessions to studios as well as daily feedback to the artists. His other professional experience ranges from Killzone: Shadow Fall to The Walking Dead. He is currently a full-time freelancer and consultant for the games industry while living and travelling the world as a digital nomad.
Hair Creation for Games Student gallery
spring TERM Registration
Feb 10, 2020 - Apr 18, 2020
Johan is a great instructor.
Companies that hire our students
environment design Benefits
What makes this learning experience unique?
Receive personal individual feedback on all submitted assignments from the industries best artist.
1+ Year Access
Enjoy over 365 days of full course access. This includes all lectures, feedback, and Live Q&A recordings.
Certificate of Completion
Earn a Certificate of Completion when you complete and turn in 80% of course assignments.
Learn anywhere, anytime, and at your own pace with our online courses.
Speak to an advisor
Need guidance or course recommendations? Let us help!
Show us your skills
Not sure if you have the skills, or are you proving you do? Show us.
Game Character Hair Creation Techniques
Interview with Calvin Verhoolen
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 XGenguides. 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.
Tips & Tricks on Hair for Games
Interview with Andrew Giovannini
My name is Andrew Giovannini and I’m a 3D character artist currently living in Davis, California. I graduated with my bachelor of science degree in Media Arts & Animation in mid-2016. Right after graduating, I decided to make a shift and focus specifically on 3D character art for video games. For the last 2 years, I’ve developed my skills as a character artist through personal projects and taking courses through CGMA and Game Art Institute. From CGMA, I’ve taken Anatomy for Production, Introduction to Marvelous Designer, Animal Anatomy, and Hair Creation for Games.
Hair for games
When building the hair asset it’s important to focus on the overall form and silhouette and how the form is broken up giving the hair it’s depth and natural look. It’s extremely important to gather as much real-life reference early on and study the style of hair you are trying to achieve, carefully observing how the hair is broken up, clumping, the flow of the hair, and understanding how it naturally wants to fall into place. Good high-quality reference and observation of the areas where you’ll be able to see the roots, along the hairline are also extremely important. Everything has to be considered and planned out when it comes to how you create your textures and construct the layers of hair. The more time you spend gathering good reference material and understanding the construction of the hair in real life, the easier it’s going to be when it comes time to actually constructing the hair asset out of hair cards for the character.
Xgen is a procedural tool in Maya for creating instanced geometry along the surface of a mesh. It can be used to generate hair and fur, but can also be used to populate environments with grass, trees, and debris. It’s a very powerful tool with a lot of flexibility. For real-time hair, we use it at the beginning of the workflow to generate clumps of high-poly hair geometry. Xgen has built-in modifiers that allow you to procedurally control density, clumping, length variation, noise, and even things like curls and waviness. There are also tools that let you directly groom and manipulate the hair splines directly.
Once the hair clumps are generated with Xgen, they have to be baked down onto a flat texture for the hair cards. This can be done by either rendering the Xgen splines directly in Maya with Arnold or Mental Ray or by converting the Xgen splines to geometry and using xNormal to bake the textures on to a flat geometry plane. The method and approach depend on how the shaders are set up for the game engine, but there is a lot of flexibility. For Johan’s class, we baked the hair geometry onto flat planes using Xgen to create texture maps which utilize Epic’s realistic hair shader, which they created and provide for Unreal Engine 4. I’ve also created a video breakdown of the baking process with xNormal called “Creating Hair Textures for Unreal Engine 4” which can be found on youtube.
In my personal opinion, real-time hair is probably the most challenging and labor-intensive part of a real-time character to get right and to do well. Even with great tools like xgen, which help a lot with texture creation and the amazing advances in shaders, which help a lot to achieve great looking results, it still takes a lot of time to construct the hair from hair cards in a convincing way. This type of challenge is best overcome by carefully planning your approach from the beginning to reduce the amount of times you might have to redo anything, which is definitely going to happen at some points no matter what. Scheduling yourself and spreading out the workload over a period of time can help a lot too if you have that luxury.
First, the individual cards are combined and set up as hair clumps consisting of 2-3 cards each. Start out by creating an opaque base layer blocking in the overall structure and flow of the hair carefully following the references, while being sure to get good coverage over the scalp of the character’s head. Then begin laying down a breakup layer using less opaque cards following the general flow and structure of the base layer, but still looking for places to break up the flow of the base layer based on your references. While laying down cards, it’s important to be mindful and keep the number of edge loops in your cards to a minimum, only adding edges where necessary to accommodate the bending and twisting of the hair cards. This helps to minimize the number of vertices to what is necessary and minimizes the impact on the framerate in the game.
This step is repeated at least 1 or 2 more times using less opaque hair cards each time for each layer. While constructing the layers it can also be necessary to make large adjustments to the overall form and silhouette of the hair using a lattice deformer… since adding layers on top of layers can end up making the volumes too large in certain areas. The final layers are also used to work out the transition areas along the hairline and introduce stray hairs and flyaways. Once all layers are constructed, the ambient occlusion is baked into the vertices of the hair cards on a layer-by-layer basis, which can help to add some depth to the overall hair asset inside the game engine.
The final asset is imported into Unreal as one piece and the realistic hair shader provided by Epic is utilized along with the hair textures baked out with xNormal to achieve the final result.
The biggest tip I can offer for hair and character creation, in general, is to slow down, plan, and take the time to understand the process. There’s always a lot of pressure to get the work done quickly, it’s understandable, but careful planning will always save you time in the long run and will help you learn more and produce better results.
Learning Johan’s process and workflow have been invaluable. After tackling the assignment for the course, I feel a lot more capable of producing many different types of complicated hairstyles for games, greatly increasing my value as a character artist and creating a nice portfolio piece in the process. My time with CGMA has overall been great. The talent hired to teach the classes is top notch and the format you guys have developed for deadlines, weekly feedback, video lectures, and weekly Q&As offers a lot of content for each course. I definitely plan to come back and take more courses in the future.
Hair for Games
Interview with Greg Mourino
Greg Mourino shared his experience of taking CGMA’s course Hair Creation for Games led by Johan Lithvall and talked about the difference between the game and cinematic hair, its optimization, working with individual hair pieces and more.
Hello! I’m Greg Mourino, a senior technical artist at Blue Sky Studios. I’m originally from New York and was briefly a math teacher in NYC before I decided to make the jump into digital artistry. I started in the industry by focusing on simulated clothing. For a few years, I worked as someone who would give life to clothing, capes, armor, fur, etc. – anything to help underscore some really nifty character animations! These days I focus mostly on the crowd simulation work: populating cities, markets, stadiums, and villages with all sorts of people and animals. I’ve worked on Ice Age 4+5, Epic, Rio 2, Peanuts, Ferdinand, and some unannounced upcoming projects. I’m also a game dev hobbyist who loves to tinker with indie projects in the spare time.
I found Hair Creation for Games course through the CG Society’s email list. There was an announcement for the Hair For Games class, and I knew I had to get on board. A big challenge we’ve been facing lately is finding the balance in the render performance of crowd characters with their final appearance. So far, we haven’t really hit on a solution that I’m satisfied with, so I’m constantly on the hunt for more ideas for things we can try. I was really impressed with Johan Lithvall’s work in his previous projects, so I knew I’d learn a ton by checking out his course. My goal was to learn what I could and figure out what we could apply to our pipeline and make it more efficient with our current workflow. After all, there’s a surprising amount of crossovers between games and film when it comes to crowd work!
Game Hair vs. Cinematic Hair
Hair in games and film sometimes end up with similar looks, but they diverge when it comes to acting requirements and render cost. In a film, the behavior callouts for a hair groom can vary widely, and self-collision is an issue that we will spend a tremendous amount of simulation time to avoid. Also, there’s nearly no limit to how many curves we’ll throw at a renderer to display a really nice-looking hairstyle. It’s costly, but these characters end up on very large physical media with very close cameras, and the high level of detail is necessary.
In games, the affordability of a final groom’s render is measured in milliseconds, not hours or days on a render farm. The team sizes for games are also generally smaller which makes it harder to devote a lot of RnD time to find a clever solution to something that probably won’t have a direct impact on gameplay. As a result, hair in games usually leans towards a combination of polygon cards and shader tricks in order to make sure a character’s hairstyle doesn’t drop the game below 60 fps. I sympathize a lot with those constraints because animated crowds need to be optimized like game assets if we’re going to get the job done in time.
Optimization for Real-Time Environments
The best way to get that kind of heavy content into a real-time environment is to cheat like a bandit! Replace those curves with polygon approximations, use shader tricks, textures and even lighting to approximate the heavy version of the asset. Plan for the final look/behavior, and reduce, reduce, reduce.
Some of the fancier hair in AAA games is augmented by (or completely handled by) custom plugins. NVIDIA’s HairWorks is a good example here. But even without access to a powerful solution like that, an artist on a small team can do amazing things with nothing more than some scripting and patience. You can create a few depth/color/spec/alpha textures from a DCC like Maya or Blender, and use some simple shader code to apply those to some polygon cards that have been carefully placed where the hair groom is. This lets you bring a lot of apparent detail into your game engine without paying the gold price for it.
One of the things I really liked about Johan’s approach in this class is that it is a solid technique that would be very hard to break, even with changing plugins and software dependencies. It’s more of a model-building philosophy than a bunch of interwoven technical tricks, and it’s likely to work with nearly any toolset. As someone who supports a complex pipeline, I really appreciate that!
Cost of Hair
The cost of hair is something that’s pretty specific for your current project and your target hardware. As a general rule, I’d recommend trying to batch your materials as much as possible and re-use the same material with a color or texture variation whenever possible. In my example, the entire hair groom is a single material from a custom shader with a handful of textures. Other characters have different hairstyles but still, use the same shader/textures with a color variation. I let the silhouette changes and mesh vertex colors do the work for me.
The pigtails were a fun exercise. That character is for a game where arcs are a recurring theme, and I wanted that to appear everywhere in her design. Even in her hairstyle choice! The biggest challenge with this style was how tight it was. With a method like this, there is some trickery with the polygon hair cards and I did not give myself enough space to hide undesirable parts of her hair clumps. The next time I do a character with a pulled-tight style like this, I’m going to probably start by doubling the hair volume for that reason.
The payoff for this kind of hairstyle is that I can ignore motion on most of her scalp since it’s so restricted. For the pigtails and the bangs, I use a simple joint chain to add secondary motion, and there’s plenty of space so that I don’t have to worry about the collision with things like the character’s garments or shoulders.
She’s also wearing goggles which required a lot of noodling to get enough hair in place without making the goggles look like they were floating in space. Since she’ll be taking off her goggles, I planned the placement of these hair clubs so that I could minimize how much reworking of the groom I’d need to do when I make her bareheaded variation.
Working with Individual Hair Pieces
Hairstyles that involve individual hair pieces going into different directions are several layers deep. They’re built up over several passes and draped differently depending on where they live and how they would fall in a real-world scenario. The placement of the messier clumps was also heavily inspired by the reference I had gathered. It helps a lot to keep checking that as I’m making important style decisions.
To help the individual hairs integrate, there are special parts of the texture dedicated to those flyaways and smaller clumps. The flyaways add a huge amount of liveliness to the style, especially since this character has reddish hair, which is generally coarser and a little more stubborn to handle. To make life even more interesting, this asset was meant to be seen at a distance, and many of those flyaways would be culled. To keep some of that tousle readable at a distance, I tried to keep her outermost layers (that were not flyaways) a little messy.
If you’re just doing a standalone groom as we did in the class, a classic studio lighting setup with a fill, rim, key, and bounce light is all you need. Portrait photographers have a lot of standard approaches to single-subject lighting and there’s a huge plethora of information available on that online.
Equally valuable for final renders are mockup tests. Does the character look good in the environment that it’s meant to be seen within? If not, you may want to tweak the shader to suit that style. I don’t mind unrealistic lighting or faked techniques if it makes the character read easier and integrate better within its environment.
Utilizing Your Assets
I re-use as much as I can for as long as I can! I’ve only created textures for two types of hair so far, so I’m definitely going to be making more. These textures wouldn’t be helpful with straight or kinky hair, but the same method for creating new textures will work for those cases, as well.
The hair takes me far too long. I do mostly non-hair things for my characters, so I’m not nearly as fast as a specialist. I’d probably give myself a week to make a new groom: one day for the texture and clump generation, two for placing and styling the hair, one for rigging and addressing notes, and one for testing the groom in various lighting setup and shader tweaks.
The core content of the class is delivered via video lecture and Johan would answer any questions we had during the course of the week in our class forum. But the live chat Q&A sessions we had each week was the most interesting part, by far. He was very helpful, and we got to dig into some interesting examples during those!
I think both experienced artists and those like myself who are outside of the games industry would get some good information from this course. For beginners wanting to get into the character creation, there’s a lot of content that would be beneficial, but note that it requires a base knowledge of core CG principles. Before signing up, I’d encourage newer students to make sure they have a solid understanding of polygon modeling, UVs, texture baking, dynamics, and game engine requirements.
Voluminous Hair: Tips and Tricks
Interview with Jeff Hindsbøl Hansen
Jeff Hindsbøl Hansen talked about the hair for game production studied during the CGMA course Hair Creation for Games led by Johan Lithvall.
My name is Jeff Hindsbøl Hansen, and I am 3D Artist currently living and working in Copenhagen, Denmark.
I actually started with digital art about 10 years ago at a technical trade school, where I learned basic 3D, how to do websites and work with flash. I found the mix of Technical challenges and the creativity of art that 3D art brings to the table was something I wanted to pursue as a bigger part of my education, so I changed to one of the major 3D schools in Denmark.
I have spent most of my career working with animated TV-shows for kids and commercials. Recently, I’ve been making more Game art related stuff and I plan to keep on doing more Real-time work as I find it very rewarding.
CGMA Course: Goals
Game hair was one of those things that always seemed a mystery when it came to making it look good. I had a few goes at it, but I never got that proper hair feeling I was aiming for. So I wanted proper insight into the techniques used throughout a beautiful game like Horizon Zero Dawn. I also thought that in general, a lot of hair you see has that helmet feel to it, and being great at making game-ready good-looking hair is an attractive niche to have conquered.
About Linear Workflow
In the ArtStation post, I’ve mentioned that the project was created with a linear workflow. What I meant when I talked about it is just how I experienced the method. For me, it was a lot like when you build a face or a body.
I started the work from the bottom or innermost layers and made sure I basically have the hairstyle in place with the big, blocky and completely opaque hair planes.
When you’ve got the first layer set, you can start to get the more transparent and lusher hair cards on top and get a more intertwined look. Just like the way you build a face: you will build it all up together with the primary shapes first and then move on to the secondary shapes and so on.
Before this course, I had a hard time doing this as I wanted the first layer to actually look like hair when in reality the first layer looks more or less terrible, and you just have to deal with that and try to visualize the next layer on top.
As with most art, it always starts with reference. I looked at so many different hairstyles before I ended up choosing one. Vikings, in particular, have a lot of cool female hairstyles to study.
I wanted to challenge myself and to do something that I was unsure about and which required finesse. I also wanted it to be very lush and flowy which can be hard to achieve with cards. Plus, I looking for a smarter way to do braids, which is why I added one in for this hairstyle.
These two here ended up being the main references, though I had a board with around 15 or so. I tried to look for the amount of detail and the depth of the hair that I wanted to recreate in the cards.
You can see here how some of the depth in the thickness of the clumps is marked, and that is something I wanted to have in the cards so that the detail level and depth matched.
Johan talked about drawing out your hair cards in Photoshop as a quick sketch to help you visualize and think through what you want to end up creating when you go into 3D. I couldn’t understate how valuable that little step would be to me. It forced me to think out how I wanted it to look instead of going with the flow of what XGen gave me when I stepped into it.
Mine looked like this. It might not be much (and I would probably spend a little extra time here in general), but it makes the next few steps a lot easier.
I made 2 cards of each transparency level so you see it going from two cards that are completely opaque and all the way down to a single hair strand. In theory, one of each should be enough, but two helps add a bit more variety if you have the budget for it, so it is not just the same hair card repeated over the entire hair.
I left out some space in case I needed an extra card, or it can be for eyebrows, eyelashes or beard cards.
Textures & Clumps in XGen
XGen is a great tool for the hair generation, it gives you a lot to work with its modifiers and parameters. Yet it has some bugs when it comes to the rotation of the guides you create to control the hair, unfortunately, which can be a pain to deal with. Johan has a great way around that though, and it happens to be one of the reasons why he talks about drawing out that sketch of your cards as well.
What he does is use it as a texture on a plane and then draw out curves matching the hair in the sketch. It gives you a lot of control over your final result and normal curves have no issues with rotating.
After drawing out the curves you can convert them into guides inside of your XGen description, and your hair should follow your curves (now guides) as you expected it to.
Once all the guides are in place, you start using the modifier stack. I usually end up with 3 clumping modifiers at the end of it.
Depending on the number of curves you made, for the first layer you can either use your curves as a clump guide or generate them with a low value to get fewer but big clumps, and then, in the second and third use, higher and higher values to get smaller subclumps.
I also used the coil, cut and noise modifier to achieve my results. In XGen, there are 2 expressions that I use a lot: the rand (x , y) and stray () ? x : y. Stray uses your set stray percentage to affect a part of your description with the modifier, and rand randomly distributes between x and y. If you are unaware of these you should definitely look them up as they can help you out a lot.
Baking Hair Cards: xGen & Arnold
The baking process is actually fairly straightforward, and mostly like you would usually go about it.
There is a little bit of planning to it though because of the ID map. First, I export all the curves out of XGen and into a mel file and then reimport the curves. I use a free script called simplePipe to make the curves into geometry.
This geometry can be used for all the bakes except the ID map. To get the geometry for the ID map I use a script that can randomly select a percentage of whatever you already have selected. What I want to end up with is 5 files exported with roughly the same amount of hair strands in them.
I make 5 different images each just a solid color of either black, 25% grey, 50% grey, 75% grey or white.
Inside of xNormal, I add each image as a base texture to a different export from the hairs from earlier and that should give you a result like this.
For the root map, you change the base texture to a gradient from black at the root to white just a bit further down. It should end up looking something like this.
I have used Arnold for a more recent project as well, and it comes with its own pros and cons. I think it mostly comes down to taste, though normal maps with Arnold seem to come out cleaner. The shader I used in Unreal doesn’t use a normal map, so depending on your engine that might be irrelevant.
I am currently working on a new workflow using a mixture of this technique and Arnold, where I use some utility nodes instead of images to make the different maps. I might write a small breakdown of that workflow at a later time.
The time spent on hair placement wasn’t too bad, but obviously placing a lot of hairs generally is somewhat time-consuming. I am not exactly sure how much time I used on this one since I went back and forth with it a few times as my understanding of the process grew and I even ended up starting over halfway through the project.
The hair placement workflow here is super cool though, and not something I’ve stumbled upon elsewhere. I think it does speed up the process a bit.
The first part of the workflow centers around creating hair clusters to use for placement. This is done by taking 3-5 hair cards and placing them together in a tent-like shape to add more volume to the hair no matter the angle you look at it from. Most of them are just 3 cards where the one at the base of it is the most opaque, and the 2 on top are slightly more transparent.
Here are a few of those that I created:
Next, I place the cluster where I want it on the head, and I create a few deformers for it to make the deformation nice and smooth and avoid creating problems in the texture.
First, I add a Twist Deformer at the bottom of the stack, so no matter how I bend the hair cards I can always twist them around like I want to and have them facing out towards the direction I want.
Next, I might add a sine if I want waviness to the hair, otherwise, I just use a lot of bend deformers to fit it into the shape I want. Then at the end, I do a little bit of soft selected movement or rotation if needed.
You just use this method from the inside out so you start with the blocking layer until you have a base of your entire hair. Then you move on to the second and third layer with less and less opaqueness, and increasingly intertwined or flowy hair cards until you get to place pretty much single hairs for a flyaway layer.
One of the ways the hair is optimized is the fact that the bottom layer of hair is 100 opaque. This helps the engine avoid dealing with too many layers of transparency, and helps the rendering be a lot faster and less taxing.
This particular hair was not really stress-tested in a real game environment, however, after this class, I have used this exact technique for real projects and I can say that so far it has been running smoothly even on pretty low specs.
Hair for Game Peculiarities
I think the most obvious peculiarity is that when you have to place and use hair cards, instead of simulating, you have to deliberately move everything into its particular place. For me, that means that the process is a bit more artistic since I am in full control of the outcome at every level. It also leaves you with a bigger risk of placing something where it doesn’t fit, which is one of the reasons I ended up redoing areas.
Another thing about hair cards is that you might end up with areas where you clearly can tell it is a card. It becomes much more obvious with lighting as well. I tried to get around that as much as I could with this hairstyle, but I couldn’t quite dodge it. I am more aware of it now.
Summing up, learning about placement and making the cards is definitely the biggest difference in my opinion between the hair production for games and non-game hair. I got to say though that I am very impressed by what the Paragon hair shader that I used for my project was capable of with so few and simple maps.
All in all, this has been one of the most useful courses I have been attended. It was an area I wanted to get into my kit and I feel like I got it now.
I have also been contacted through Artstation about the work I have made during the course and hired for projects because of it.
I think I tended to have a little trouble with the structure of the course, as the next week was locked until we got there. I often found myself having to redo the previous step because I didn’t know what step would be the next and how I would set it up correctly in the current week. This is probably because each week in the course is very reliant on the former week and the work set up correctly.
I always look out for courses I think would be cool, fun and informative, and CGMA has a lot of great ones with some amazing teachers. So, I will definitely take more whenever I can fit it in.
Jeff Hindsbøl Hansen, 3D Artist
Interview conducted by Daria Loginova
Hair Production for Game Characters at CGMA
Interview with Dominique Gagné
Hi, my name is Dominique Gagné, I am from Montréal, and I am a 3D character artist at Behaviour Interactive. I have been working on the game Deathgarden for 1 year and a half. Since we are a small team, I am in charge of the whole process of character creation: modeling high-res/low-res, UVs, texturing, and bringing it inside the engine. Before Behaviour, I graduated from Bois-de-Boulogne college in 2016 and worked in the VFX industry for 2 years, at Digital Dimension. My favorite part of the character creation process is hair. I think this part gives a character a lot of personality and it’s a long and hard process, so when it’s well done, there is a lot of proud to get.
Starting the Class
The company I work for was nice enough to pay me the Hair Creation for Games masterclass with Johan Lithvall at CGMA in February 2019. Since concepting a character is not my main strength, I decided to find a good concept where hair would be appealing and challenging. This is why I used Bryan Sola’s concept. His character had a nice pose, I knew he could tell a story and it was perfect for the hair modeling class.
Concept art by Bryan Sola
Speaking of the hair asset, I wanted to create, first of all, long hair, so I could work on the chunk placement, and such a haircut that would give nice specular reflections. It was really challenging and time-consuming, but in the end, the result was nice and I was really proud of it. After my course, I took a little break, then decided to finish the project a couple of months later.
My reference sheet had a lot of examples of face, hair anatomy, loot bags, weapons, and Filipino art crafts. With the final result, my goal was to create a nice portfolio piece where I could improve my presentation skills including the lighting and posing of the character.
Modeling Body & Accessories
In production, I like to use a basemesh to speed up my workflow. This is why I used Human Zbuilder v2 to get the main human proportions. The amount of variation you can give to your character is very nice due to all the layers of the tool. Then, I like to adjust the position of the arms and chest, work on the proportions. To do that, I use the translate tool in ZBrush. For the proportions, I start to sculpt in low resolution, then I increase the subDiv Level gradually when I am satisfied. When I like the sculpt, I add skin pore using the alphas of TexturingXYZ. I use the standard brush with different alpha depending on the body area. I will then add some details with the DamStandard to create skin folds and skin stretch details. To add scars, I will use the ClayBuildup to roughly create the shape, then the DamStandard to create the stretch of the skin.
To model the accessories, I like to either start in Maya or in ZBrush. For example, the blade and its holster were created at first in Maya, then imported in ZBrush. I polygroup where I want the crease, then use ‘’Crease by PG’’. I subDiv my mesh a couple of times, then add details to create the high res. The loot bag was completely modeled in Maya. I placed all the pieces of it manually. It was really time-consuming but the result was nice!
The workflow was divided into two parts: texture and chunks creation, then placement of the hair. First, I created a texture sheet with XGen, xNormal, and Photoshop. The main thing to make quality textures that I learned is to create negative space inside the hair chunks. This way, you can create space to let the hair pass through.
When the textures are done, I create hair chunks. I take 3 planes with different textures I just created and make them interpenetrate together using the negative space I just made. Then, it’s just a matter of placing manually every chunk. To place them, I use different deformers in Maya: Bend, Twist, Flare and Lattice. The placement of all the hair chunks is a very long process, but if the result is nice, it pays out fully.
To place the hair, I learned to divide it into 4 steps: a base layer, 2nd layer, 3rd layer, and flyaways. The base layer will be only to cover the head. Also, I like to start the placement of it really far from the hairline. This way, later, I can add single hairs to the hairline to make it more realistic. The 2nd layer is the most important: I create most of the hair flow. I try to create negative space in the hair, areas where it can catch shadows, and variation in the specularity. I will use less dense hair texture during this step. The 3rd layer is also important. Here, I will break the lighting of the hair and the silhouette even more. I will cover the hairline and give weight to the hair. The last step is to add flyaways - subtle details that will give realism to the hair.
Dominique Gagné, 3D Character Artist at Behaviour Interactive
Interview conducted by Arti Sergeev
To see a breakdown of the clothing and details for this character you can read the full article on 80.lv