|
In this paper, we present a method for modeling hair using level-of-detail (LOD) representations.
The three representations are shown in figure 1 to the left and they consist of strips, clusters, and
individual strands. The strip representation, Figure 1(a), is modeled with a subdivision surface and is
the coarsest level-of-detail. The intermediate LOD is the cluster representation Figure 1(b) and
are represented as generalized cylinders created with texture-mapped subdivision surfaces. The finest
level-of-detail are the individual strands. They are represented as subdivision curves and are shown in
in Figure 1(c).
The reason for choosing these representations is based on the inherent characteristic of hair to
naturally clump together in groups. This natural grouping of strands can be due to static
electricity or the oils that are found on hair strands. During a simulation, it is possible for all
of the hair on the head to be represented by one LOD or with multiple LODs. For occasions where high
detail will be necessary - such as if a comb were to go through the hair - then the strands and/or clusters would be automatically selected by our framework to model the hair rather than a strip. For more detail on choosing a hair representation
please refer to [2] listed below.
|
Figure 1: Different LOD representations for hair; (a) hair strip, (b) hair cluster,
(c) hair strand
|
Representation Placement and Interpolation
During an LOD transition (described in the paper, please see [2] for more detail), the skeleton models
of the new representation get their positioning and motion values from that of the skeleton models of the
previous model. Thus, for a transition from a single strip to multiple clusters, the new cluster
skeletons interpolate their position and motion values from the skeleton of the strip. The cluster
skeletons and the strip skeleton have the same number of control points so that each control point of the
new skeleton can inherit the values from its counterpart control point on the old skeleton.
Each new cluster interpolates its value from the strip skeleton based on the cluster's root position,
or first control point, in relation to the root position of the strip. Figure 2 below
shows a cross section, or the root placements of a single strip vs. 3 clusters vs. multiple strands.
It illustrates how each representation relates to the remaining representations. The solid blue line shows the
actual rendered strip placement while the dashed blue line shows the outline of the bounding volume for the strip (see [2]
for more detail on the bounding volumes and collision detection. The red circles show the cross-sections of the
clusters and the black dots depict the placement of the strands. In this example, one strip is equivalent to
three clusters. Each cluster can then be represented by around twenty or so strands. Figure 2 also shows
the placement of the skeleton model for each representation. The strands each have one skeleton which is at the
same position as the rendered strand (thus, root placement of a strand is equal to the root placement of its
skeleton model). The skeleton of the strip is shown with a blue circle, and the skeletons of the clusters
are shown with red circles. Note that the center cluster has the same root position as the strip.
|
Figure 2: Cross-section of hair representations;
In this example: 1 strip = 3 clusters = 64 strands |
Representation Comparison
The following images show a hairstyle depicted with our LOD representation and then shows it
in comparison to the same hairstyle depicted with all strips, all clusters and then all strands.
Note that our LOD representation looks the most similar to that of the strands.
|
|
LODs |
Strips |
|
|
Clusters |
Strands |
Click on images for larger view |
Example Hairstyles
|
|
|
Click on images for larger view |
Simulation Images
|
|
|
A sequence of snapshots (from left to right) are taken from a simulation of long, straight hair flowing in the wind.
|
|