Modeling Hair Using Level-of-Detail Representations
Kelly Ward Ming C. Lin Joohi Lee
Susan Fisher Dean Macri

[ Overview | Publications | Videos ]


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.

    [1] Tech Report:
      Simplified Representations for Modeling Hair.
      Kelly Ward, Susan Fisher, and Ming C. Lin. Technical Report #TR02-020, University of North Carolina at Chapel Hill. March, 2002. (Acrobat)

    [2] This Paper:
      Modeling Hair Using Level-of-Detail Representations.
      Kelly Ward, Ming C. Lin, Joohi Lee, Susan Fisher, and Dean Macri. Proc. of Computer Animation and Social Agents, 2003. (Acrobat)

    [3] Tech Report (In Progress):
      Collision Detection for Animating Hair Using Multiresolution Representations.
      Kelly Ward, Ming C. Lin, and Dean Macri. Technical Report, University of North Carolina at Chapel Hill. 2003.

    [4] Tech Report (In Progress):
      Hardware Accelerated Hair Rendering.
      Kelly Ward and Ming C. Lin. Technical Report, University of North Carolina at Chapel Hill. 2003.

    [5] Paper:
      Adaptive Grouping and Subdivision for Simulating Hair Dynamics.
      Kelly Ward and Ming C. Lin. Proc. of Pacific Graphics. 2003. Project Website (Acrobat)

    [6] Paper:
      Modeling Hair Influenced by Water and Styling Products.
      Kelly Ward, Nico Galoppo, and Ming C. Lin. Proc. of Computer Animation and Social Agents. 2004. Project Website (Acrobat)


The following videos show the results we have obtained using our level-of-detail technique. The videos are being played back at faster rates than they were recorded. We have been able to accelerate rendering over previous techniques, however it still remains our performance bottleneck. We have implemented acceleration techniques for hair rendering the GPU on the NVidia NV30 emulator. We hope to validate its interactive performance on the NV30 as soon as it becomes available. Please refer to [4] for more detail.

Click on the images to view the videos.


    This movie shows a demonstration of long curly hair with sudden gusts of wind constantly applied to different parts of the hair as the camera moves about the figure. The camera starts with a close-up view of the strands so that specific detail of the hair can be observed.

    This is a demonstration of gusts of wind being applied to long straight hair as the camera moves around the figure and zooms away. Notice that as the camera moves away from the figure the level-of-detail switching is triggered, though the transitions are hardly noticeable.

    Here we have a demo of long, straight hair on a figure as she moves about quickly. The camera is static and all motion is caused by the moving figure.

    This demonstration shows another example of long, curly, red hair blowing in the wind as the camera moves around the figure.
    The following tutorial videos illustrate the fundamentals of our method, including an explanation of the three different LOD representations (strands, clusters, and strips) as well as shows the criteria for choosing an appropriate LOD.


    This video gives the basic overview of the three different LOD representations and the base skeleton which controls the shape and motion of each representation.

    Occlusion Based Transitions

    This movie illustrates the occlusion criteria used for switching LODs. In this example, a split screen is used to show the viewers point-of-view (on the left of the screen) and a rear camera that shows what the viewer cannot see (the changing of LODs). The main camera (on the left) circles around the viewer, triggering sections of hair to switch its LOD. The static camera on the right shows the switching as well as the view frustum of the users point-of-view camera. When a section of hair cannot be seen we simulate it as a strip and do not render it.

    Distance Based Transitions

    Here, the distance criteria for switching LODs is illustrated. In order to aid the visualization of the transitions we color code the hair sections. Strands are shown in yellow, clusters are red, and strips are shown in blue. As the camera moves away from the figure, the viewer can observe the change in LODs taking place.

    Motion Based Transitions

    This movie shows the effects of the hair's motion on choosing the LOD representation. Similar to the movie illustrating the effects of distance, we first show a demo with the hair sections color coded (again, strands are yellow, clusters are red, and strips are blue). We then show the same demonstration fully rendered and compare it to the same simulation peformed with all strands. On the left, we show the all strands representation and on the right our LOD representation is shown. The simulations are visually similar, though the LOD representation runs at a much faster rate (for more details on the speedups please refer to [2]).
This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.
Copyright 2002.