IP Library Granted Patent US 11,282,255
Granted Patent B2
US 11,282,255 · App. 17/051,750 · Granted Mar 22, 2022

Generating textured polygon strip hair from strand-based hair for a virtual character

Inventor: Takashi Kuribayashi (Culver City, CA)
Assignee: Magic Leap, Inc.
G06T13/40G06T3/40G06T7/75G06T15/04G06T15/205G06T17/20G06T2207/30196G06T2213/08G06T2215/16
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 11,282,255
App. No.
17/051,750
Granted
Mar 22, 2022
Kind
B2
Abstract

Computer generated (CG) hair for a virtual character can include strand-based (instanced) hair in which many thousands of digital strands represent real human hair strands. Strand-based hair can appear highly realistic, but rendering strand-based hair in real-time presents challenges. Techniques for generating textured polygon strip (poly strip) hair for a virtual character can use as an input previously-generated strand-based hair for the virtual character. Poly strips can be generated for a sampled set of strands in the strand-based hair. Additional poly strips may be generated near hairlines or part lines. Hair textures from a hair texture library can be matched to the poly strips. The matched textures can be scaled and packed into a region of texture space (e.g., a square region), which provides improved computer access, efficiency, and speed. A rendering engine can use the poly strips and the packed hair textures to render the character's hair in real-time.

Claims (38)

1. A system comprising:

non-transitory computer storage configured to store:

strand-based hair data for rendering hair of a virtual avatar, the strand-based hair data comprising strands indicative of shapes of strands of hair and a hair mask region indicative of a region on a head of an avatar where hair is to be generated; and

a library of hair textures, each of the hair textures comprising an image of a hair style, each of the hair textures associated with hair texture properties; and

a hardware processor in communication with the non-transitory computer storage, the hardware process programmed to:

sample the strand-based hair data to obtain a first set of strands in the hair mask region;

determine, from the strand-based hair data, a hairline or a part line;

sample the strand-based hair data to obtain a second set of strands in a region near the hairline or in a region near the part line;

generate a set of polygon strips (poly strips), wherein each poly strip is based on a strand in the first set of strands or the second set of strands, each poly strip comprising at least one polygon, and each poly strip associated with poly strip properties;

match hair textures from the library of hair textures with the set of poly strips to obtain a set of matched hair textures, wherein a matched hair texture is usable to provide texture to at least one poly strip from the set of poly strips, and wherein the matching is based on a matching criterion between a poly strip property and a hair texture property;

pack the set of matched hair textures into a texture space data structure representing a region of texture space; and

output the texture space data structure and the set of poly strips.

2. The system of claim 1 , wherein the hair texture properties comprise one or more of: a length, a width, a clumpiness, a curliness, a density, or a noise.

3. The system of claim 1 , wherein the poly strip properties comprise one or more of: a length, a width, a clumpiness, a curliness, a density, or a noise.

4. The system of claim 1 , wherein to sample the strand-based hair data, the hardware processor is programmed to perform uniform sampling at a sampling fraction of a total number of strands in the strand-based hair data.

5. The system of claim 4 , wherein the sampling fraction is in a range of 0.01% to 1%.

6. The system of claim 1 , wherein to determine a hairline or a part line, the hardware processor is programmed to perform contour detection.

7. The system of claim 1 , wherein a central region of each poly strip follows a curvature of the strand on which the poly strip is based.

8. The system of claim 1 , wherein a base point of each poly strip is located at a base point of the strand on which the poly strip is based.

9. The system of claim 1 , where the hardware processor is further programmed to determine an orientation of each poly strip in the set of poly strips.

10. The system of claim 9 , wherein to determine the orientation of the poly strip, the hardware processor is programmed to:

calculate a hair vector representative of an initial direction of the strand on which the poly strip is based;

calculate a reference vector representative of a normal direction to the hair mask region at the base of the strand; and

determine the orientation based on a vector cross product of the hair vector with the reference vector.

11. The system of claim 1 , wherein the hardware processor is further programmed to accept user input to modify an orientation, attribute, or property associated with a poly strip.

12. The system of claim 1 , wherein to match hair textures, the hardware processor is programmed to apply weightings to hair texture properties and poly strip properties.

13. The system of claim 1 , where to pack the set of matched hair textures, the hardware processor is programmed to scale each of the matched hair textures based on a scaling factor.

14. The system of claim 13 , wherein the scaling factor comprises an area of the hair texture or a length of the hair texture.

15. The system of claim 1 , wherein to pack the set of matched hair textures, the hardware processor is programmed to apply a two-dimensional (2D) bin packing algorithm.

16. The system of claim 15 , wherein the hardware processor is programmed to:

determine that a matched hair texture is too large to fit into the region of texture space;

expand the region of texture space from an initial size to an expanded size sufficient to fit the matched hair texture;

pack the matched hair texture into the region of texture space having the expanded size; and

rescale the region of texture space from the expanded size to the initial size.

17. The system of claim 1 , wherein to pack the set of matched hair textures, the hardware processor is programmed to determine a transform for at least one hair textures in the set of matched hair textures.

18. The system of claim 17 , wherein the hardware processor is further programmed to apply the transform to the poly strips that match the at least one hair texture.

19. The system of claim 1 , wherein to output the texture space data structure and the set of poly strips, the hardware processor is programmed to communicate the texture space data structure and the set of poly strips to a wearable display device.

20. The system of claim 19 , further comprising the wearable display device, and wherein the wearable display device is programmed to render the hair of the virtual avatar based at least partly on the texture space data structure and the set of poly strips.

Assignments (2)
SECURITY INTEREST Recorded May 24, 2022
From: MOLECULAR IMPRINTS, INC.; MENTOR ACQUISITION ONE, LLC; MAGIC LEAP, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 060338/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2021
From: KURIBAYASHI, TAKASHI
To: MAGIC LEAP, INC.
Reel/Frame 056843/0214 →
Continuity (2)
Provisional Application 62674408 · May 21, 2018
Related Publication 20210241510A1 · Aug 5, 2021
Cited By (4)
US 12,217,332 US 12,266,106 US 12,333,858 US 12,651,411