IP Library Granted Patent US 9,953,460
Granted Patent B2
US 9,953,460 · App. 15/182,267 · Granted Apr 24, 2018

Garment simulation using thread and data level parallelism

Inventors: Jatin Chhugani (Santa Clara, CA); Jonathan Su (San Jose, CA); Mihir Naware (Redwood City, CA)
Assignee: eBay Inc.
G06T17/20A41H1/00G06F17/5009G06K9/6262G06Q30/0643G06T15/005G06T17/00G06T17/10G06T19/00G06T19/20A41H3/007G06F2217/04G06F2217/32G06T2210/16G06T2215/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 9,953,460
App. No.
15/182,267
Granted
Apr 24, 2018
Kind
B2
Abstract

Techniques for three-dimensional garment simulation using parallel computing are presented herein. An access module can be configured to access a three-dimensional garment model of a garment. The garment model can include garment points that represent a surface of the garment. A processor, having a plurality of cores, can be configured by a garment simulation module to calculate one or more exerted forces on a subset of garment points. Additionally, the garment simulation module can generate cross pairs and apportion the generated cross pairs among the plurality of cores. Moreover, the garment simulation module can determine, using the plurality of vector execution units in parallel based on an organized data layout, whether boundaries of the first subgroup of cross pairs are overlapping based on the one or more exerted forces. Subsequently, the garment simulation module can calculate one or more simulated forces acting on the garment points based on the determination.

Claims (65)

1. A system comprising:

a processor comprising a plurality of cores and a plurality of vector execution units; and

a machine-readable storage medium, coupled with the processor, the machine-readable storage medium comprising instructions that, when executed by the processor, cause the system to perform operations comprising:

accessing, from a database, a three-dimensional garment model of a garment, the three-dimensional garment model including garment points that represent a surface of the garment;

organizing a data layout associated with the garment points for parallel computing, based on the plurality of vector execution units, to map the data layout for vector execution;

determining, using the plurality of vector execution units in parallel, an exerted force on a subset of garment points based on the organized data layout;

calculating one or more simulated forces acting on the subset of garment points based on the determined exerted force wherein calculating one or more simulated forces acting on the subset of garment points based on the determined exerted force further comprises detecting and resolving a collision using the plurality of cores and the plurality of vector execution units in parallel by:

generating a first hierarchical acceleration data structure having a first set of nodes associated with the subset of garment points;

generating a second hierarchical acceleration data structure having a second set of nodes associated with the subset of garment points;

generating cross pairs by intersecting the first set of nodes with the second set of nodes;

distributing the cross pairs across the plurality of cores;

performing, using the plurality of vector execution units in parallel, an overlap test for the generated cross pairs;

detecting a collision based on the overlap test for the generated cross pairs; and

resolving the detected collision; and

generating an image of the three-dimensional garment model draped on a three-dimensional body model based on the calculated one or more simulated forces.

2. The system of claim 1 , wherein the data layout is organized based on a number of vector execution units in the plurality of vector execution units.

3. The system of claim 2 , the operations further comprising:

arranging the exerted force associated with the subset of garment points into a structure-of-array format.

4. The system of claim 2 , the operations further comprising:

consecutively numbering left indices of edges corresponding to the subset of the garment points based on the number of vector execution units; and

consecutively numbering right indices of the edges corresponding to the subset of the garment points based on the number of vector execution units.

5. The system of claim 1 , wherein the one or more simulated forces is calculated using the plurality of cores in parallel.

6. The system of claim 1 , wherein each core in the plurality of cores includes a plurality of vector execution units.

7. The system of claim 1 , the operations further comprising:

causing a presentation, on a display of a device, of the generated image of the three-dimensional garment draped on the three-dimensional body model.

8. A method comprising:

accessing, from a database, a three-dimensional garment model of a garment, the three-dimensional garment model including garment points that represent a surface of the garment;

organizing a data layout associated with the garment points for parallel computing, based on a plurality of vector execution units, to map the data layout for vector execution;

determining, using the plurality of vector execution units in parallel, an exerted force on a subset of garment points based on the organized data layout;

calculating one or more simulated forces acting on the subset of garment points based on the determined exerted force wherein calculating one or more simulated forces acting on the subset of garment points based on the determined exerted force further comprises detecting and resolving a collision using the plurality of cores and the plurality of vector execution units in parallel by:

generating a first hierarchical acceleration data structure having a first set of nodes associated with the subset of garment points;

generating a second hierarchical acceleration data structure having a second set of nodes associated with the subset of garment points;

generating cross pairs by intersecting the first set of nodes with the second set of nodes;

distributing the cross pairs across the plurality of cores;

performing, using the plurality of vector execution units in parallel, an overlap test for the generated cross pairs;

detecting a collision based on the overlap test for the generated cross pairs; and

resolving the detected collision; and

generating an image of the three-dimensional garment model draped on a three-dimensional body model based on the calculated one or more simulated forces.

9. The method of claim 8 , wherein the data layout is organized based on a number of vector execution units in the plurality of vector execution units.

10. The method of claim 9 , further comprising:

arranging the exerted force associated with the subset of garment points into a structure-of-array format.

11. The method of claim 9 , further comprising:

consecutively number left indices of edges corresponding to the subset of the garment points based on the number of vector execution units; and

consecutively number right indices of the edges corresponding to the subset of the garment points based on the number of vector execution units.

12. The method of claim 8 , wherein the one or more simulated forces is calculated using the plurality of cores in parallel.

13. The method of claim 8 , wherein each core in the plurality of cores includes a plurality of vector execution units.

14. The method of claim 8 , wherein the plurality of vector execution units is a single instruction multiple data (SIMD).

15. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising:

accessing, from a database, a three-dimensional garment model of a garment, the three-dimensional garment model including garment points that represent a surface of the garment; and

organizing a data layout associated with the garment points for parallel computing, based on the plurality of vector execution units, to map the data layout for vector execution;

determining, using a plurality of vector execution units in parallel, an exerted force on a subset of garment points based on the organized data layout;

calculating one or more simulated forces acting on the subset of garment points based on the determined exerted force wherein calculating one or more simulated forces acting on the subset of garment points based on the determined exerted force further comprises detecting and resolving a collision using the plurality of cores and the plurality of vector execution units in parallel by:

generating a first hierarchical acceleration data structure having a first set of nodes associated with the subset of garment points;

generating a second hierarchical acceleration data structure having a second set of nodes associated with the subset of garment points;

generating cross pairs by intersecting the first set of nodes with the second set of nodes;

distributing the cross pairs across the plurality of cores;

performing, using the plurality of vector execution units in parallel, an overlap test for the generated cross pairs;

detecting a collision based on the overlay test for the generated cross pairs; and

resolving the detected collision; and

generating an image of the three-dimensional garment model draped on a three-dimensional body model based on the calculated one or more simulated forces.

16. The system of claim 1 , wherein mapping the data layout for vector execution comprises laying out elements of the data layout, to be acted upon using vector execution unit instructions, in a contiguous fashion using vector load instructions.

17. The system of claim 1 , wherein performing the overlap test for the generated cross pairs comprises determining whether boundaries of the generated cross pairs are overlapping based on one or more exerted forces on the subset of garment points.

18. The system of claim 1 , wherein the overlap test is performed for the generated cross pairs starting from a root node.

19. The method of claim 1 , wherein before performing, using the plurality of vector execution units in parallel, the overlap test for the generated cross pairs, the operations comprise organizing a data layout for the overlap test to be performed using the plurality of vector units in parallel.

20. The method of claim 19 , wherein organizing the data layout comprises organizing the data layout for gather instructions to load data from non-consecutive memory locations into a vector register.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2016
From: CHHUGANI, JATIN; SU, JONATHAN; NAWARE, MIHIR
To: EBAY INC.
Reel/Frame 038912/0348 →
Continuity (7)
Continuation 14530636 · Oct 31, 2014
Provisional Application 61905126 · Nov 15, 2013
Provisional Application 61904522 · Nov 15, 2013
Provisional Application 61905118 · Nov 15, 2013
Provisional Application 61905122 · Nov 15, 2013
Provisional Application 61904263 · Nov 14, 2013
Related Publication 20160292915A1 · Oct 6, 2016