IP Library Granted Patent US 9,443,341
Granted Patent B2
US 9,443,341 · App. 14/171,729 · Granted Sep 13, 2016

Efficient and stable approach to elasticity and collisions for hair animation

Inventors: Galen G. Gornowicz (Sierra Madre, CA); Silviu Borac (Pacifica, CA)
Assignee: DreamWorks Animation LLC
G06T13/80G06F17/12G06K9/52G06T7/20G06T13/40G06T17/005G06T2210/12G06T2210/21
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,443,341
App. No.
14/171,729
Granted
Sep 13, 2016
Kind
B2
Abstract

One exemplary process for animating hair includes receiving data representing a plurality of hairs and a plurality of objects in a timestep of a frame of animation. A first tree is populated to represent kinematic objects of the plurality of objects and a second tree is populated to represent dynamic objects of the plurality of objects based on the received data. A first elasticity preconditioner is created to represent internal elastic energy of the plurality of hairs based on the received data. Based on the first tree and the second tree, a first set of potential contacts is determined between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects. Positions of the plurality of hairs are determined based on the first set of potential contacts and the first elasticity preconditioner.

Claims (77)

1. A computer-implemented method for animating hair, the method comprising:

receiving data representing a plurality of hairs and a plurality of objects in a timestep of a frame of animation;

populating a first tree to represent kinematic objects of the plurality of objects based on the received data;

populating a second tree to represent dynamic objects of the plurality of objects based on the received data;

creating a first elasticity preconditioner representing internal elastic energy of the plurality of hairs based on the received data;

determining, based on the first tree and the second tree, a first set of potential contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects; and

determining positions of the plurality of hairs based on the determined first set of potential contacts and the first elasticity preconditioner,

wherein determining positions of the plurality of hairs based on the determined first set of potential contacts and the first elasticity preconditioner comprises iteratively:

performing a Projected Gauss-Seidel algorithm using the first elasticity preconditioner to determine magnitudes of normal forces and friction forces for the first set of potential contacts;

performing Cholesky back-substitution using the determined magnitudes of normal forces and friction forces for the first set of potential contacts to determine the positions of the plurality of hairs; and

for iterations after the first iteration, detecting continuous collision contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects.

2. The method of claim 1 , wherein the received data defines a motion of the plurality of objects, a shape of the plurality of hairs, and a response of the plurality of hairs to internal and external forces.

3. The method of claim 1 , wherein the received data comprises: a motion sequence of one or more colliders that are capable of colliding with the plurality of hairs; a rest pose of the plurality of hairs; a motion sequence of a target pose of the plurality of hairs; and a plurality of constraints that model the plurality of hairs.

4. The method of claim 3 , wherein the plurality of hairs are modeled as discrete elastic rods, and wherein the plurality of constraints represent attractive forces between the discrete elastic rods.

5. The method of claim 1 , wherein the first tree and the second tree each comprise an axis-aligned bounding box tree.

6. The method of claim 1 , further comprising:

updating the second tree representing dynamic objects based on the determined positions of the plurality of hairs;

creating a second elasticity preconditioner representative of internal elastic energy of the plurality of hairs based on the received data and the determined positions of the plurality of hairs;

determining, based on the first tree and the updated second tree, a second set of potential contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects; and

determining new positions of the plurality of hairs based on the determined second set of potential contacts and the second elasticity preconditioner.

7. The method of claim 6 , wherein determining new positions of the plurality of hairs based on the determined second set of potential contacts and the second elasticity preconditioner comprises iteratively:

performing a Projected Gauss-Seidel algorithm using the second elasticity preconditioner to determine magnitudes of normal forces and friction forces for the second set of potential contacts;

performing Cholesky back-substitution using the determined magnitudes of normal forces and friction forces for the second set of potential contacts to determine positions of the plurality of hairs; and

for iterations after the first iteration, detecting continuous collision contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects.

8. The method of claim 6 , wherein creating the first elasticity preconditioner comprises performing Cholesky factorization on a first matrix representing internal elastic energy of the plurality of hairs, and wherein creating the second elasticity preconditioner comprises performing Cholesky factorization on a second matrix representing internal elastic energy of the plurality of hairs.

9. A non-transitory computer-readable storage medium for animating hair, the non-transitory computer-readable storage medium comprising computer-executable instructions for:

receiving data representing a plurality of hairs and a plurality of objects in a timestep of a frame of animation;

populating a first tree to represent kinematic objects of the plurality of objects based on the received data;

populating a second tree to represent dynamic objects of the plurality of objects based on the received data;

creating a first elasticity preconditioner representing internal elastic energy of the plurality of hairs based on the received data;

determining, based on the first tree and the second tree, a first set of potential contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects; and

determining positions of the plurality of hairs based on the determined first set of potential contacts and the first elasticity preconditioner,

wherein determining positions of the plurality of hairs based on the determined first set of potential contacts and the first elasticity preconditioner comprises iteratively:

performing a Projected Gauss-Seidel algorithm using the first elasticity preconditioner to determine magnitudes of normal forces and friction forces for the first set of potential contacts;

performing Cholesky back-substitution using the determined magnitudes of normal forces and friction forces for the first set of potential contacts to determine the positions of the plurality of hairs; and

for iterations after the first iteration, detecting continuous collision contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the received data defines a motion of the plurality of objects, a shape of the plurality of hairs, and a response of the plurality of hairs to internal and external forces.

11. The non-transitory computer readable storage medium of claim 9 , wherein the received data comprises: a motion sequence of one or more colliders that are capable of colliding with the plurality of hairs; a rest pose of the plurality of hairs; a motion sequence of a target pose of the plurality of hairs; and a plurality of constraints that model the plurality of hairs.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the plurality of hairs are modeled as discrete elastic rods, and wherein the plurality of constraints represent attractive forces between the discrete elastic rods.

13. The non-transitory computer-readable storage medium of claim 9 , wherein the first tree and the second tree each comprise an axis-aligned bounding box tree.

14. The non-transitory computer-readable storage medium of claim 9 , further comprising computer-executable instructions for:

updating the second tree representing dynamic objects based on the determined positions of the plurality of hairs;

creating a second elasticity preconditioner representative of internal elastic energy of the plurality of hairs based on the received data and the determined positions of the plurality of hairs;

determining, based on the first tree and the updated second tree, a second set of potential contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects; and

determining new positions of the plurality of hairs based on the determined second set of potential contacts and the second elasticity preconditioner.

15. The non-transitory computer-readable storage medium of claim 14 , wherein determining new positions of the plurality of hairs based on the determined second set of potential contacts and the second elasticity preconditioner comprises iteratively:

performing a Projected Gauss-Seidel algorithm using the second elasticity preconditioner to determine magnitudes of normal forces and friction forces for the second set of potential contacts;

performing Cholesky back-substitution using the determined magnitudes of normal forces and friction forces for the second set of potential contacts to determine positions of the plurality of hairs; and

for iterations after the first iteration, detecting continuous collision contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects.

16. The non-transitory computer-readable storage medium of claim 14 , wherein creating the first elasticity preconditioner comprises performing Cholesky factorization on a first matrix representing internal elastic energy of the plurality of hairs, and wherein creating the second elasticity preconditioner comprises performing Cholesky factorization on a second matrix representing internal elastic energy of the plurality of hairs.

17. A system for animating hair, the system comprising:

a non-transitory computer-readable storage medium comprising computer-executable instructions for:

receiving data representing a plurality of hairs and a plurality of objects in a timestep of a frame of animation;

populating a first tree to represent kinematic objects of the plurality of objects based on the received data;

populating a second tree to represent dynamic objects of the plurality of objects based on the received data;

creating a first elasticity preconditioner representing internal elastic energy of the plurality of hairs based on the received data;

determining, based on the first tree and the second tree, a first set of potential contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects; and

determining positions of the plurality of hairs based on the determined first set of potential contacts and the first elasticity preconditioner; and

a processor capable of executing the instructions,

wherein determining positions of the plurality of hairs based on the determined first set of potential contacts and the first elasticity preconditioner comprises iteratively:

performing a Projected Gauss-Seidel algorithm using the first elasticity preconditioner to determine magnitudes of normal forces and friction forces for the first set of potential contacts;

performing Cholesky back-substitution using the determined magnitudes of normal forces and friction forces for the first set of potential contacts to determine the positions of the plurality of hairs; and

for iterations after the first iteration, detecting continuous collision contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects.

18. The system of claim 17 , wherein the received data defines a motion of the plurality of objects, a shape of the plurality of hairs, and a response of the plurality of hairs to internal and external forces.

19. The system of claim 17 , wherein the received data comprises: a motion sequence of one or more colliders that are capable of colliding with the plurality of hairs; a rest pose of the plurality of hairs; a motion sequence of a target pose of the plurality of hairs; and a plurality of constraints that model the plurality of hairs.

20. The system of claim 19 , wherein the plurality of hairs are modeled as discrete elastic rods, and wherein the plurality of constraints represent attractive forces between the discrete elastic rods.

21. The system of claim 17 , wherein the first tree and the second tree each comprise an axis-aligned bounding box tree.

22. The system of claim 17 , wherein the non-transitory computer-readable storage medium further comprises computer-executable instructions for:

updating the second tree representing dynamic objects based on the determined positions of the plurality of hairs;

creating a second elasticity preconditioner representative of internal elastic energy of the plurality of hairs based on the received data and the determined positions of the plurality of hairs;

determining, based on the first tree and the updated second tree, a second set of potential contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects; and

determining new positions of the plurality of hairs based on the determined second set of potential contacts and the second elasticity preconditioner.

23. The system of claim 22 , wherein determining new positions of the plurality of hairs based on the determined second set of potential contacts and the second elasticity preconditioner comprises iteratively:

performing a Projected Gauss-Seidel algorithm using the second elasticity preconditioner to determine magnitudes of normal forces and friction forces for the second set of potential contacts;

performing Cholesky back-substitution using the determined magnitudes of normal forces and friction forces for the second set of potential contacts to determine positions of the plurality of hairs; and

for iterations after the first iteration, detecting continuous collision contacts between two or more hairs of the plurality of hairs or between one or more hairs of the plurality of hairs and one or more objects of the plurality of objects.

24. The system of claim 22 , wherein creating the first elasticity preconditioner comprises performing Cholesky factorization on a first matrix representing internal elastic energy of the plurality of hairs, and wherein creating the second elasticity preconditioner comprises performing Cholesky factorization on a second matrix representing internal elastic energy of the plurality of hairs.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2016
From: JPMORGAN CHASE BANK, N.A.
To: DREAMWORKS ANIMATION L.L.C.; PACIFIC DATA IMAGES L.L.C.
Reel/Frame 041193/0144 →
SECURITY INTEREST Recorded Mar 31, 2015
From: PACIFIC DATA IMAGES L.L.C.; DREAMWORKS ANIMATION L.L.C.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 035343/0829 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2014
From: GORNOWICZ, GALEN G.; BORAC, SILVIU
To: DREAMWORKS ANIMATION LLC
Reel/Frame 032582/0256 →
Continuity (1)
Related Publication 20150221119A1 · Aug 6, 2015