Hairstyle Modeling

Alpha-Step
Beta-Step
Gamma-Step

The method of hairstyle that we will be discussing consists of three steps. The first step is the Alpha-step. This step defines and ellipsoidal hull of the head model. This hull is used as an approximation to the head. Pores are then specified onto this approximated ellipsoidal hull. The Beta-step consists of calculating the bending of the hair. This bending is based on a cantillever beam. This step also incorporates collision detection with the head model. The Gamma-step is the final step and consists of cutting the hair and modifying it to the desired shape.
Alpha-Step (Ellipsoidal Approximation

An ellipsiod representation of the head model is used for convenience. It is much easier to specify the locations of pore positions on an ellipsoid than it is on a regular head model. A polar coordinate system is available for an ellipsoid, which makes it easier to specify the locations. A regular polygonal representation does not have an easy method of specifying locations. An ellipsoid also has the benefit of allowing collision detection at a low computational cost.
Beta-Step (Calculate Hair Bending)

To understand how to calculate the bending of an individual hair we must first look at it in two dimensions. We are going to use a cantilever beam representation for the hair. We assume that the cantiliever beam is in an inital state where one end is fixed, as can be seen in the picture below.



The beam is then loaded by the external force g, which is uniformly distributed on the whole beam. This force allows type types of deformation to occur. These deformations are caused by bending moement and by shearing force. Shearing force does not affect our calculations so to simplify things we will leave it out. The x-axis is along the initial beam direction, and the y-axis is vertical to the direction of the applied force. The y-axis represents the deflection direction of the beam.

The deformation process is governed by the following equation:



E is Young's modulas and I denotes the second moment of ares. E*I is the flexural regidity of the beam. This value depends on the material of which the beam is composed. In theory this equation does not work with large deformations.

The next step is to separate the beam into a finite number of linear segments. The distributed load g is approximated by the sum of segmentally aveaged loads, as is seen in the image below.



The average bending moment on a segment is approximated by



with the displacement y_i = (-1/2) * (M_i/E*I) * d^2

With these formulas we are able to come up with the following bending moment diagram:



The bending of the beam is a rather simple process. The first step is to set the x-axis along the last segment that has already been bent on the beam. The second step is to calculate the displacement of the beam in the y direction at that point. This vector y_i is then added to the last beam segment that was bent. This creates a new vector e_i. This vector is then moved to the endpoint of the bent beam and shortened to the length of the beam segments. When this process is done to all of the beam segments, starting with the base of the beam, the result is a realistically bent beam. This process can be seen in the picture below.



Now that we can bend the cantilever beam in two dimensions we must now use that knowledge and apply it into the third dimension.



To do this, we must create a new coordinate system. The a_0 axis corresponds to the x-axis that is described in the two dimensional case. The a_0 axis is defined as being along the the segment vector p_i-2 -> p_i-2. Next a point p*_i is placed a certain distance along the a_0-axis. Finally a point p*_i-1 is a point that is displaced from p_i-1. These three points now span a plane. The a_1-axis is vertical to the a_0-axis on the plane spanned by these three points. The a_2-axis is orthogonal to both axis. Once we have this coordinate system set up we can then apply the two dimensional method to obtain the deflections y_1 long the a_1-axis and y_2 along the a_2-axis. These deflections are obtained by using the respective component of the force. The desired deflection of the vector y_i is obtained as y_1a_1 + y_2a_2.

The Beta-Step also involves collision detection. We are now talking about collision detection between the hair and the head model and not between the individual hairs. Even with this simplification, the task of collision detection is still a large and complex process. This is largely due to there being 400,000 individual hair segments and about 10,000 polygons making up the head. To calculate the collisions between a large amount of hair segments and polygons would require a high computational cost. If we use an ellipsoidal approximation the number of calculations is greatly reduced. You simply check the signature of E(p_i), where p_i is a node on the cantilever beam. If a point is intersecting the ellipsoid that point is simply moved to the outside of the ellipsoid.
Gamma-Step (Hair Styling)



To give a brief demonstration of our hairstyling method we will go through how to create a bobbed hairstyle. The above image demonstrates the head position in the local coordinate system that we will be using throughout this example.



The first step in creating a hair style is to define the initial state. The initial state is when no force is being applied to the hair. The second step is to add gravity to the model. These two steps create the above two images. The hair does not yet have the look that we are seeking. The reason that the hair in the middle is standing straight up is that the force of gravity is being applied in a parallel direction to the hair and in effect not causing any bending effects. The third step in the hairstyling process is to cut the hair. This step is performed using polar coordinates of ellipsoid approximation and threshold. The range of hair pores are specified. If the hair segments that fall into this range are below the given threshold. Meaning if the segment is below a certain length, then it will not be displayed, an in effect cutting the segment off.



The last step in creating a bobbed hairstyle is to comb the hair. This is done by applying external forces to the hair in addition to gravity. The external forces used to create bobbed hair are shown above. The forces are first applied in the positive z direction and then in the opposite. The result of the cutting and combing is shown above. As you can see the result is very satisfactory. The hairstyle that we recreated is very realistic which accomplishes its task.


Shown above are some other examples of using this hairstyling method. The image in the upper left hand corner was created by using a similar method to the bobbed hairstyle. The hairstyle in the upper right was created by applying and external force in the negative x direction (backwards). The hairstyle in the bottom left of the image was created in two parts. First the hair on the head was created and then the ponytail was individual designed. The final hairstyle was the most difficult of all. The number of hair segment not to be displayed was determined by the height of the hair pore.