- 55 Views
- Uploaded on
- Presentation posted in: General

A Simple Method for Extracting the Natural Beauty of Hair

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

A Simple Method for Extracting the Natural Beauty of Hair

Ken-ichi Anjyo, Yoshiaki Usami, Tsuneya Kurihara

Presented by Chris Lutz

“How many roads must a man

walk down…”

- The “Dr. B” presentation style:
- I’ll just read the first sentence of each paragraph and try to wing it.
- Next, I’ll write some vocab on the board.
- Finally, I’ll scribble down some incomplete matrices and run out of time.

- (I’m assuming Dave can take a joke.)
- Man, it’s late. Wow.

(It’s not all that much better, really)

- How hair is actually represented and how it is allowed to move
- WHAM! Whole lotta math comin’ atchya

- Dynamic behaviors
- Coordinate system
- Inertia and force fields

- Rendering Techniques & Results

- This paper is concerned (oddly enough) with the “natural beauty” of hair.
- To that end, the authors sacrifice some realism:
- Physically-based simulation
- Collision detection between hair & body as well as hair & other hair
- Shadowing of hair onto itself

- In a sense, they’re after pretty pictures

- 1. Create a model of a head
- 2. Define an ellipsoidal hull
- A rough approximation, yes, but not too bad
- It’s faster for collisions & pore placement

- 3. Calculate hair bending (cantilever beam)
- 4. Cut and style as desired
- Essentially, “blow-dry” the hair by applying various directional forces

- Hair is modeled as a series of segments connected at bending points
- Apply some force to the beam and watch it deform
- d2y/dx2 = -M/(E*I)
- E: Young’s Modulus
- I: 2nd momentum of area

- Bending by “sequentially averaged concentrated loads”
- Mi = -||g||d(1k-i+1p + 1k-ip)/2 = -||g||d(k-i+1)2/2
- g: force on the hair
- 1..k: number of segments in the hair
- d: segment length

- Displacement of node yi = (-1/2)*(Mi/E*I)*d2
- 2D: define a new vector ei of magnitude yi
- ei = pi-2pi-1 + yi
- pi = (d/||ei||)ei + pi-1

- New node pi = (d/||ei||)ei + pi-1

- Set up coordinate system
- Use 2D deformation formulas along both a0 (x) and a2 (z) axes
- The deflectional vector is is then just y1a1 + y2a2

- Since collision detection using the actual head model is hard, revert to using an ellipsoidal representation
- Check every new pi for collision
- If the new pi collides with the head, move it to a “close” point on the plane defined by pi-2, pi-1, and pi
- Which way do you move it?

- (a) Initial conditions: zero-g bed-head
- (b) Gravity kicks in
- (c) Apply external forces (blow-dry) the hair & cut (define y-threshold and pore location)
- (d) Paul Mitchel would be proud

- So we want to add wind; that means keeping track of inertia and applied forces
- Again, some realism issues:
- Hair is modeled as rigid segments connected with flexible joints
- Hair-to-hair collisions & friction is not modeled in a physically correct manner

- Use a pseudo force-field and solve differential equations

- Set up an initial polar coordinate system like the one to the right
- Track the projection of the hair onto the and planes

- i(t) = d2i/dt2 = ci ui F
- i(t) = d2i/dt2 = ci vi F
- Variables:
- ci: reciprocal number of the inertia moment of si
- ui: (1/2)||si||
- vi: half of segment si projected onto plane
- F &F: the respective force components

- Given in-1 and in
- in+1 = in+1-2in+in-1 = (t)2ciuiF
- Similar thing for in+1
- Outer loop is segment number I
- Inner loop is time loop n

- By selectively manipulating the ci’s, you can simulate frictional effects
- You can also manipulate joint stiffness

- We should try and keep track of the inertia moment of hair
- kd: length of hair (k segments of length d)
- : line density

- IS = (1/3)(kd)2
- Ii = (/3i)k3d2
- Putting this in for (t)2ciui results in (3(t)2i) / (2k3d)

- (a) 10,000 hairs of length <= 18
- (b) F = (-200, 0, 0), 10th frame
- (c) F = (-20, -250, 0), 15th frame
- (d) 20th frame shows the effects of the force (wind) shift

- Again, hairs could pierce the skull (bad)
- Define a pseudo-force field to replace the specified force for hairs close to the head
- Make this PsFF ellipsoidal to make it easier

- F: original user-specified force (wind)
- Di: segment direction of si defined in terms of the ellipsoid
- E(p): Di = (Ex(pi), Ey(pi), Ez(pi))
- Ex, Ey, Ez: partial derivatives of polynomial

- For some value (|| <= 1):
- If (Di, F) < ||Di||||F|| then si is facing “into” F
- If si is near the head, replace F with iF
- (near pore) 0 <= i <= 1 (end of hair)

- Ellipsoidal representation won’t always look good

- Diffuse term is neglected
- Instead of polylines, assume the hair is cylindrical
- s(P) = ks(1-(T,H)2)n/2
- n: specular exponent
- ks: reflection coeff.

- Close to Phong shading

- Use z-buffer algorithm to render the hair & linearly interpolate colors across segments (oversample if hairs are thin)
- 20,000 hairs with <= 20 segments: 50 sec for modeling, “several” for rendering on a SG Iris Power Series w/ VGX gfx board
- “The image with a different camera angle was obtained almost in real-time”

- If you define (complicated) regional forces, you could create almost any hairstyle, right?
- It seems hard to add any human touches, e.g. ponytails or dreadlocks.
- In all honesty, when would anyone really care about the exact physics of hair?
- It would be nice to have a shot of lighter-colored hair, just to see what it looked like.