IP Library › Granted Patent US 12,731,315
Granted Patent B2
US 12,731,315 · App. 17/964,792 · Granted Sep 8, 2026

Scalable contact-rich simulation

Inventors: Kier Storey (Altrincham, GB); Fengyun Lu (Altrincham, GB)
Assignee: Nvidia Corporation
G06T13/20G06F18/22G06F18/23G06F18/24G06T15/005G06T15/04G06T17/205G06F30/20
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 12,731,315
App. No.
17/964,792
Granted
Sep 8, 2026
Kind
B2
Abstract

Systems and methods herein address scalable contact-rich simulation in physics engines using one or more processing units to simulate movement between at least two objects in a simulation, the movement based at least on a plurality of sets of reduced points obtained from an iterative reduction using one or more threshold criteria, the iterative reduction applied to a plurality of points associated with at least one contact between the depictions.

Claims (59)

1 . A system comprising one or more processing units to:

receive a set of points associated with at least one contact between at least a first object and a second object in a simulation;

determine, for individual points of the set of points, an angular separation and a gradient with respect to at least one other point of the set of points;

perform, based at least on one or more threshold criteria regarding the angular separation and the gradient, an iterative discarding of one or more points from the set of points using a plurality of threads of the one or more processing units to determine a subset of points; and

simulate movement between at least the first object and the second object based at least on the subset of points.

2 . The system of claim 1 , wherein the one or more processing units are further to:

determine at least one point of the subset of points is within a threshold similarity to at least one other point of the subset of points; and

determine at least one different point to replace the at least one point in the subset of points.

3 . The system of claim 1 , wherein the one or more processing units are further to:

determine a classification for the individual points of the subset of points based at least on the at least one of a distance, the angular separation, or the gradient.

4 . The system of claim 1 , wherein the one or more processing units include a graphics processing unit (GPU), and the iterative discarding is executed, at least, using a texture lookup, the texture lookup using a texture mapping unit (TMU) of the GPU.

5 . The system of claim 1 , wherein the one or more processing units are further to:

determine a level of penetration associated with the at least one contact between at least one pair of points;

determine one or more points of the set of points based in part on a threshold number of individual points of the set of points that correspond to two associated contact segments of the at least one contact;

retain the one or more points; and

discard one or more other points not included in the one or more points.

6 . The system of claim 5 , wherein the two associated contact segments include triangles having corner points and surface area points forming at least a portion of the set of points.

7 . The system of claim 1 , wherein the one or more processing units are further to:

perform the iterative discarding based at least on a K-means clustering operation to determine the subset of points.

8 . The system of claim 1 , wherein the one or more processing units are further to:

store the subset of points in a volatile storage, wherein the volatile storage is updated as the subset of points is updated.

9 . The system of claim 8 , wherein the subset of points are stored to the volatile storage until a maximum capacity of the volatile storage is reached, and, after the volatile storage reaches the maximum capacity, one or more updated points determined during the iterative discarding replace one or more existing points of the set of points in the volatile storage.

10 . A method for one or more processing units, the method comprising:

receiving a set of points associated with at least one contact between at least a first object and a second object in a simulation;

determining, for individual points of the set of points, an angular separation and a gradient with respect to at least one other point of the set of points;

performing, based at least on one or more threshold criteria regarding the angular separation and the gradient, an iterative discarding of one or more points from the set of points using a plurality of threads of the one or more processing units to determine a subset of points; and

simulating movement between the at least the first object and the second object based at least on the subset of points.

11 . The method of claim 10 , further comprising:

determining at least one point of the subset of points is within a threshold similarity to at least one other point of the subset of points; and

determining at least one different point to replace the at least one point in the subset of points.

12 . The method of claim 10 , further comprising:

determining a classification for the individual points of the subset of points based at least on the at least one of a distance, the angular separation, or the gradient.

13 . The method of claim 10 , wherein the one or more processing units include a graphics processing unit (GPU), and the iterative discarding is executed, at least, using a texture lookup, the texture lookup using a texture mapping unit (TMU) of the GPU.

14 . The method of claim 10 , further comprising:

determining a level of penetration associated with the at least one contact between at least one pair of points;

determining one or more points of the set of points based in part on a threshold number of individual points of the set of points that correspond to two associated contact segments of the at least one contact;

retaining the one or more points; and

discarding one or more other points not included in the one or more points.

15 . The method of claim 14 , wherein the two associated contact segments include triangles having corner points and surface area points forming at least a portion of the set of points.

16 . The method of claim 10 , further comprising:

performing the iterative discarding based at least on a K-means clustering operation to determine the subset of points.

17 . The method of claim 10 , further comprising:

storing the subset of points in a volatile storage, wherein the volatile storage is updated as the subset of points is updated.

18 . The method of claim 17 , wherein the subset of points are stored to the volatile storage until a maximum capacity of the volatile storage is reached, and, after the volatile storage reaches the maximum capacity, one or more updated points determined during the iterative discarding replace one or more existing points of the set of points in the volatile storage.

19 . A system comprising:

one or more processing units to simulate movement of at least two objects in a simulation based at least on one or more patches of points corresponding to one or more contacts between the at least two objects, the one or more patches of points determined using an iterative discarding process, based at least on one or more threshold criteria regarding at least an angular separation and a gradient between individual points in the one or more patches of points and at least one other point in the one or more patches of points, performed using a plurality of threads of the one or more processing units.

20 . The system of claim 19 , wherein the system is comprised in at least one of:

a system for performing simulation operations;

a system for performing digital twin operations;

a system for performing light transport simulation;

a system for performing collaborative content creation for 3D assets;

a system for performing deep learning operations;

a system implemented using an edge device;

a system implemented using a robot;

a system for performing conversational AI operations;

a system for generating synthetic data;

a system incorporating one or more virtual machines (VMs);

a system implemented at least partially in a data center; or

a system implemented at least partially using cloud computing resources.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2023
From: STOREY, KIER; LU, FENGYUN
To: NVIDIA CORPORATION
Reel/Frame 062571/0318 →
Continuity (1)
Related Publication 20240127519A1 · Apr 18, 2024
References Cited (7)
US 20160092139A1 · Khan · 2016 [cited by examiner]
US 20190096025A1 · Nystad · 2019 [cited by examiner]
Liang He, Efficient Penetration Depth Computation between Rigid Models using Contact Space Propagation Sampling (2015, pp. 10), https://doi.org/10.48550/arXiv.1511.03999 (Year: 2015). [cited by examiner]
Wei-keng Liao, Parallel K-Means Data Clustering, Electrical Engineering and Computer Science Department, Northwestern University. (Year: 2013). [cited by examiner]
Otaduy, A modular haptic rendering algorithm for stable and transparent 6-DOF manipulation, IEEE Transactions on Robotics, vol. 22, No. 4, Aug. 2006 (Year: 2006). [cited by examiner]
David Luebke, A Survey of Polygonal Simplification Algorithms, UNC Technical Report TR97-045, Department of Computer Science, pp. 8 (Year: 2001). [cited by examiner]
Narang, et al.: “Factory: Fast Contact for Robotic Assembly”, dated May 7, 2022. [cited by applicant]