Thursday, August 3, 2017
One of the biggests issues with real time is hair is our current inability (due to how substantial the engine cost would be) to create every single strand of hair on a character and have it render in real time. As an industry we've started making a push towards that direction (Nvidia Hairworks for example) but we're not quite there yet, so with that said this is our current solution to rendering real time hair! Smoke and mirrors through a very clever technical lens. Here are the results of my research:
The pipeline I utilized through my research starts with ZBrush, I figured the tools the software gave me gave better buffer zone than creating the card system (I'll explain this in more depth in a second) through a different 3D environment such as maya.
Now a card system much like the name suggests is just that, a series of cards placed in a very specific way to get a desired outcome, now for the purposes of this research the card systems behave like large clumps of hair, but what goes into creating them? The first step is to create an IMM (insert multi mesh) brush. This process is furthered outlined in the tutorial I linked at the top but for our purposes any hair IMM brush out there in the internet will do, I've placed the anatomy of the card below if you are so inclined to create your own!
Note: if you create your own IMM brush please follow the anatomy of the card depicted below, the card most be homogeneous through it's surface or you'll have problems later down the line
|Anatomy of a card|
A good way to test if your IMM Brush is working correctly is to check that when you weld points and auto group your card strands your polygroups end up as discreet units and isolate each card strand appropriately, much like the picture below
|Good IMM Hair Brush should look like this after clicking WeldPoints--->Auto Groups|
|See? each "strand" is it's own color|
Much in the same way making draw overs and simplifying shapes is key to creating a good sculpt the same principles and process apply to hair as well, you need to be able to break down the flow and movement of the hair, as well separate each "section" in a way that will allow you to create variety and interest once UV's and textures come in. With the verbose explanation out of the way let me put some pictures to the theory:
|Concept by Ruxing Gao|
This concept above is the piece I worked through while creating this tutorial, so part of my process much in the way I explained previously was to go through her hair and creation "sections" I could discreetly isolate and maintain as a unit as I continue to move the model through the pipeline, let me show you some pictures and I'll explain it further after:
See her rainbow colored hair? that is what I mean when I mention sections, each color represents an area of her hair I "grouped" into a section for the purposes of creating variety and visual interest when UVing and texturing later down the pipeline.
Note: See how her card strands taper towards the end? remember how I mentioned to keep the card strands the same width through it's length? there's a reason for that! and we're getting close to why I made a mistake tapering mine.
But moving right along!
Once you have your card system laid out and you're happy with the shape and volume of your hair you're ready for the next step! A good mindset to keep in mind is your hair will have to go through several iterations so think of every step coming up as an iterative process that may require you to return to this "laying card stands" stage to get the result you're looking for.
With the card system created you can start the UV process and setting up some proxy textures to start getting a look and feel for your card system, this is a very exciting step because while laying the cards will give you a feel for the volume and shape of the hair this stage essentially gives you a rough snapshot of the hair cards in all their glory.
|setting some test textures|
Now remember how we made our character have rainbow colored (polygroups!) hair? this is the stage we did that for, a good card system will have variety and volume, the best way to achieve that is to build up your hair through layers and make sure you have enough strands to be able to add break up and variety as you move through the system, below you'll see all my different card clusters and how the final UV map looked for it, I broke it down as each hair cluster being assigned two stacked UV shells but there are many tutorials and methods people use to break up their UV map, I suggest you do further research and find a method that works for your specific piece.
|Card clusters and their UV shells|
|starting to take shape!|
My work didn't end with the turn in though, and my goal of becoming a 3D hair stylist is very much alive, if you refer back to the top of this tutorial you'll see I've attached a software link. This tutorial highlights a relatively free (if we ignore the costs of Zbrush, Maya and Substance that FIEA takes care of) way of creating real time hair, however the most popular software out there for this type of work currently is Ornatrix, a $500 plug in for Maya; a price point I couldn't invest into at the time of this tutorial.
However Thunder Cloud Studios came up with GMH2, a plug in for Maya much along the same vein of Ornatrix except the price point is $50 which is significantly more affordable and provides results of the same quality and fidelity you would expect from an industry card system. My early ventures with the software have been very pleasant and there's a broad support base for this type of work which make it easy to delve into as a topic of self study,
Much like with sculpting there's multiple ways of creating a card system and arriving at the quality bar industry professionals would expect from the piece. How you get there is entirely up to you and which pipeline and process you ultimately decide to utilize; however the one thing that remains consistent regardless of the road one may chose to take to create the card system are the properties the hair needs to have at the end. Making sure to create enough density to sell the volume and shape, as well as the "minor details" in strands that don't conform to the flow of the hairstyle will make your project that much more stellar.
If you have any questions feel free to contact me and I'd be more than happy to assist you and provide further information into this topic and the research I've done beyond this first venture!
To conclude this post here is one of my favorite "3D hair stylists" currently in industry. His name is Johan Lithvall and he's responsible for the hair of Aloy in Horizon Zero Dawn (artstation).