[reading notes] Artistic simulation of curly hair

Author posted @ 2013年10月24日 09:28 , 1833 阅读

The authors addressed the methods used to simulate curly hairs in the movie ''Brave'' [1]. Their methods meet the quality requirements of simulating the motions of curly styled hairs stably and also, the implementation can be parallelly executed to improve the performance.

In the paper, first the authors introduced how to model the curly hair using mass-spring sytem, defined by piecewise linear curve. Then the authors discussed the strategy of dealing with hairs motion and hair-hair contacts.

Hair Model

A single hair is modeled using a mass-spring system [2] so that a hair owns elastic force within itself. A linear spring is used to control hair stretch, a bending spring is used to control bending.

Linear spring model is defined by a set of points/particles, say \(P =\{p_0, \ldots, p_{n-1}\}\), polyline edges connecting these points is represented using \(e_i = p_{i+1}-p_i\). Meanwhile, each hair particle has a velocity \(v_i\), then the linear spring force \(f_s(k_s, c_s)\) can be defined given two coefficients \(k_s\) and \(c_s\). 

To control the stretch, just recursivly compute the force from the root point of the hair given limited velocities,  and then update position of each particle.

Similar to the elastic rods model [3], the difference is that the bending spring model does not generate rotations as teh elastic rod model does. It uses a smooth function to generate smooth curves recursively from hair root, and a bending formulation  \(f_b(k_b, c_b)\) to control  the bend of the hair.

To allow flexible curly hair maintain the shape under the circumstances of acceleration, the third type of spring, ''core spring'', was used to control the longitudinal stretch of curls.  Similar to the stretch spring force, \(f_c(k_c, c_c)\) is defined to represent the force controling the longitude stretch along the core, the difference is that not using edge vector \(e_i\) any more, but using the core direction \(b_i\) instead.

Hair-hair Contact

Considering the computation cost, it is expensive to compute every interaction of a pair of pariticles on different hairs. So the authors first selected particles to perform hair interaction. The method is similar to my research on geometric representation of information states: they use a sphere \(s_i\) of radius \(r_i\) to circle particle \(p_i\), and sphere \(s_j\) of radius \(r_j\) to circle particle \(p_j\),  the particles placed in the overlap of two spheres, that is, \( s_i \cap s_j \), will be pruned. Second, the author also selected pairs of hairs to do the simulation. For example, there are 3 hairs, \(|h_1  | h_2 | h_3\) . The author assumed the effect of interaction between \(<h_1, h_3>\) will be composed by the interactions between \(<h_1, h_2>\) and \(<h_2, h_3>\).

The problem is what kind of data structure should be used to store the hair pairs which are allowed to do the simulation? The authors used a graph with each node is a hair and each edge is a pair of hairs that is allowed to interact. Initially, this graph has all possible pairs of interactive hairs. After applying a threshold value, the authors finaly selected minimum number of hair contacts in the graph. That is, after pruning procedure, the graph size decreases.

To detect the hair contact, a grid-based method is applied. 1) put each hair particle to a grid, and use this grid to retrieve neighbor hair particles. 2) discard potential contacts if no hair pair edge exists between the hairs containing the particles. 3) If hair pair is not discarded, detect contacts when their spheres overlap.

The implementation takes advantages of MPI to achieve performance efficiency.


The authors claimed that their method maintains the curly hair shape in a dynamic scenario without stiffness. Also theri MPI implementation achieves computational efficiency.

The main limitation of this work is caused by the hair-hair contact pruning procedure. Some contacts between hairs may be pruned. Therefore, they reduce the amount of pruning, of cause, which may cause more time for computing but gets better simulation quality.


[1] H. Iben, M. Mayer, L. Petrovic, O. Soares, J. Anderson, A. Witkin, "Artistic Simulation of Curly Hair", Pixar Animation Studios, Pixar Technical Memo#12-03b, July, 2013 http://t.cn/zRiJPuj

[2]  "Effective mass (spring–mass system) - Wikipedia, the free encyclopedia." Wikipedia, the free encyclopedia. 13 Sep 2013. Web. 24 Oct 2013. <http://en.wikipedia.org/wiki/Effective_mass_(spring%E2%80%93mass_system)>

[3]  Miklós Bergou, Max Wardetzky, Stephen Robinson, Basile Audoly, Eitan Grinspun,"Discrete Elastic Rods" ACM Transactions on Graphics (SIGGRAPH) 2008

Printer HP 说:
2017年11月12日 11:31

The authors claimed that their method maintains the curly hair shape in a dynamic scenario without stiffness. Also theri MPI implementation achieves computational efficiency.

登录 *

loading captcha image...
or Ctrl+Enter