1. Field of the Invention
This invention relates generally to computer graphics and, more specifically, to using computer systems to model hair.
2. Background Art
Computers are widely used to model figures, from insects and monsters to human beings. While it is relatively easy to use a computer to create and position the larger, simpler body parts of a figure (such as the head, torso, and limbs), it is much more difficult to create and position the smaller, more detailed body parts such as hair and fur. Hair and fur are especially difficult to model because each strand must be created and positioned separately. Since one figure is often covered by thousands of strands of hair or fur, it is obvious that these strands cannot all be created and positioned manually.
Human hair is even more difficult to model than fur because of its length and the variety of possible styles. A real human head contains about 100,000-200,000 strands of hair. And for each head of hair, there are dozens, if not hundreds, of possible hairstyles. Art directors often have particular hairstyles in mind, and computers must be able to generate these hairstyles in order to be useful.
In the past, there have been three major approaches to modeling hair: the texture map approach, the cluster approach, and the interpolation approach. In the texture map approach, a user paints areas on a figure to specify different characteristics of the hairs growing out of that area. For example, one map might specify hair length, where the area near the forehead is painted so that the hairs will be short, while the area near the back of the head is painted so that the hairs will be long. Another example is specifying the direction of hair growth, such that hairs in one area grow out perpendicularly to the head, while hairs in another area grow out close to the head. Texture maps have also been used to specify density and shape.
While texture maps may be used to specify a variety of characteristics for a hairstyle, it is difficult to use texture maps in order to create complex hairstyles. Since each texture map addresses only one characteristic at a time for a given hair, multiple texture maps are necessary in order to specify multiple characteristics for a given hair. Specifying and modifying multiple texture maps can become labor intensive, so frequently texture maps are used for only gross control of shape, and the number of texture maps used is limited as much as possible. In addition, texture maps are generally a non-intuitive and inefficient way to style hair, depending on which characteristics the texture maps are specifying. As a result, it is frequently easier to create a complex hairstyle by directly modeling the shape curves of the hairs. These limitations make texture maps most useful for simple hairstyles.
In the cluster approach (also known as the wisp approach), the user manually creates and positions hair tubes. These tubes have diameters much larger than the diameters of individual hairs. Thus, fewer tubes are needed to cover an area compared to the number of hairs needed to cover that same area. During rendering, each tube is filled with many hairs, so that the hairs follow the direction of the tube. While the cluster approach does allow for individual hair variations within a given tube, these variations usually rely on random values to modify hairs and thus are not very controllable by users. Thus, the cluster approach is best for straight hair. The other problem with the cluster approach is that the resulting hairstyle always looks like a lot of hairs in tubes, rather than a real hairstyle.
In the interpolation approach, the user manually creates and positions several guide hairs. While the appropriate number of guide hairs depends on how much manual control the user needs at this phase, for many hairstyles, the number tends to be about 40-100. These guide hairs, also known as control hairs, possess certain characteristics, such as size and shape, and help define key aspects of the hairstyle. The computer uses interpolation to automatically generate hairs to fill in the gaps between the guide hairs. These interpolated hairs have characteristic values similar to those of the surrounding guide hairs. The actual characteristic values assigned to an interpolated hair are based on the origin of the interpolated hair. Many interpolation methods exist and may be used. In one embodiment, the guide hairs that are closer to the interpolated hair (based on the origins of the guide hairs and the origin of the interpolated hair) affect the characteristic values of the interpolated hair more than the guide hairs that are farther from the interpolated hair. This is known as a radial basis function. For example, if three interpolated hairs are evenly spaced between two guide hairs, the interpolated hairs closest to a guide hair will mostly resemble (via characteristic values) that guide hair, and the interpolated hair in the middle will be a mixture of the two guide hairs.
The interpolation approach also enables a user to specify a blending weight for each guide hair. A large blending weight increases the effect of a guide hair on a characteristic value of an interpolated hair, while a small blending weight decreases the effect of a guide hair on a characteristic value of an interpolated hair. The problem with the interpolation approach is that it results in artifacts, such as hairs that stand up straight between two guide hairs that go left and right. Also, the interpolation approach cannot be used for clumpy hairstyles, since interpolation tends to create a very smooth distribution of hairs.
What is needed is a way to model hair that enables users to design complex and realistic hairstyles without requiring each hair to be created and positioned manually.