IP Library › Granted Patent US 11,185,763
Granted Patent B2
US 11,185,763 · App. 16/389,629 · Granted Nov 30, 2021

Holding and releasing virtual objects

Inventors: Keith Bradner (Seattle, WA); Jeremy Slocum (Sammamish, WA); Scott Douglas Nietfeld (Bellevue, WA); Lawrence Yang (Bellevue, WA); Jeffrey George Leinbaugh (Kirkland, WA)
Assignee: Valve Corporation
A63F13/211A63F13/218A63F2300/646G06F3/014G06F3/0346
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,185,763
App. No.
16/389,629
Granted
Nov 30, 2021
Kind
B2
Abstract

Techniques and devices for determining how to present the release of the virtual object based at least in part on received sensor data is described herein. For example, when the hardware and/or software determines that the virtual object is to be released, the hardware and/or software may calculate one or more of a velocity of the object (e.g., speed and direction), a position at which the virtual object is to be released, a trajectory of the virtual object from the position of release to the landing point of the virtual object, a landing location of the virtual object, and/or the like. The hardware and/or software may then present the virtual object being released according to this determined information.

Claims (82)

1. A method comprising:

receiving, while a display presents a virtual object being held by a virtual hand, sensor data from one or more sensors of a handheld controller;

determining, at a first time and based at least in part on the sensor data, that the virtual hand is to release the virtual object;

determining a predetermined time range prior to the first time;

determining, at least partly in response to determining that the virtual hand is to release the virtual object, a peak velocity of the handheld controller within the predetermined time range, wherein the peak velocity comprises a highest velocity within the predetermined time range;

determining that the peak velocity within the predetermined time range occurred at a second time prior to the first time;

determining at least one of a speed of the handheld controller at the second time, a direction of the handheld controller at the second time, a position of the handheld controller at the second time, or a rotational velocity of virtual object at the second time; and

presenting, on the display, the virtual hand releasing the virtual object based at least in part on the at least one of the speed of the handheld controller at the second time, the direction of the handheld controller at the second time, the position of the handheld controller at the second time, or the rotational velocity of the virtual object at the second time.

2. The method as recited in claim 1 , further comprising:

determining at least one of a velocity of the handheld controller at a third time prior to the second time or a velocity of the handheld controller at a fourth time after the second time; and

calculating an average of the peak velocity and the at least one of the velocity of the handheld controller at the third time or the velocity of the handheld controller at the fourth time;

and wherein the presenting the virtual hand releasing the virtual object comprises presenting the virtual hand releasing the virtual object based at least in part on a velocity corresponding to the average.

3. The method as recited in claim 1 , further comprising:

determining a position of the virtual object at the second time;

and wherein the presenting the virtual hand releasing the virtual object comprises presenting the virtual hand releasing the virtual object based at least in part on the position of the virtual object at the second time.

4. The method as recited in claim 1 , wherein:

the determining the at least one of the speed, the direction, the position, or the rotational velocity comprises determining, from the peak velocity, the direction of the handheld controller at the second time; and

the presenting the virtual hand releasing the virtual object comprises presenting the virtual hand releasing the virtual object based at least in part on the direction of the handheld controller at the second time.

5. The method as recited in claim 1 , further comprising:

calculating a trajectory of the virtual object using at least the peak velocity;

and wherein the presenting the virtual hand releasing the virtual object comprises presenting the virtual hand releasing the virtual object based at least in part on the trajectory.

6. The method as recited in claim 1 , further comprising:

calculating a landing location of the virtual object using at least the peak velocity and a position of the virtual object at the second time;

and wherein the presenting the virtual hand releasing the virtual object comprises presenting the virtual object landing at the calculated landing location.

7. The method as recited in claim 1 , further comprising:

calculating a landing location of the virtual object using at least the peak velocity and a position of the virtual object at the second time;

determining a position of the virtual object at a current time; and

calculating a trajectory from the position of the virtual object at the current time to the calculated landing location;

and wherein the presenting the virtual hand releasing the virtual object comprises presenting the virtual hand releasing the virtual object based at least in part on the calculated trajectory.

8. The method as recited in claim 1 , wherein:

the first time is associated with a first frame; and

the determining the peak velocity of the handheld controller within the predetermined time range prior to the first time comprises determining the peak velocity of the handheld controller within a predetermined amount of frames immediately prior to the first frame.

9. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising:

determining, at a first time, that a virtual object presented on a display is to be released;

determining a predetermined time range prior to the first time;

determining, at least partly in response to determining that the virtual object is to be released, a peak velocity of a handheld controller within the predetermined time range, wherein the peak velocity comprises a highest velocity within the predetermined time range;

determining that the peak velocity within the predetermined time range occurred at a second time prior to the first time;

determining at least one of a speed of the handheld controller at the second time, a direction of the handheld controller at the second time, a position of the handheld controller at the second time, or a rotational velocity of the virtual object at the second time; and

presenting, on the display, the virtual object being released based at least in part on the at least one of the speed of the handheld controller at the second time, the direction of the handheld controller at the second time, the position of the handheld controller at the second time, or the rotational velocity of the virtual object at the second time.

10. The one or more non-transitory computer-readable media as recited in claim 9 , the acts further comprising:

determining at least one of a velocity of the handheld controller at a third time prior to the second time or a velocity of the handheld controller at a fourth time after the second time; and

calculating an average of the peak velocity and the at least one of the velocity of the handheld controller at the third time or the velocity of the handheld controller at the fourth time;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on a velocity corresponding to the average.

11. The one or more non-transitory computer-readable media as recited in claim 9 , the acts further comprising:

determining a position of the virtual object at the second time;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on the position of the virtual object at the second time.

12. The one or more non-transitory computer-readable media as recited in claim 9 , wherein:

the determining the at least one of the speed, the direction, the position, or the rotational velocity comprises determining, from the peak velocity, the direction of the handheld controller at the second time; and

the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on the direction of the handheld controller at the second time.

13. The one or more non-transitory computer-readable media as recited in claim 9 , the acts further comprising:

calculating a trajectory of the virtual object using at least the peak velocity;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on the trajectory.

14. The one or more non-transitory computer-readable media as recited in claim 9 , the acts further comprising:

calculating a landing location of the virtual object using at least the peak velocity and a position of the virtual object at the second time;

and wherein the presenting the virtual object being released comprises presenting the virtual object landing at the calculated landing location.

15. The one or more non-transitory computer-readable media as recited in claim 9 , the acts further comprising:

calculating a landing location of the virtual object using at least the peak velocity and a position of the virtual object at the second time;

determining a position of the virtual object at a current time; and

calculating a trajectory from the position of the virtual object at the current time to the calculated landing location;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on the calculated trajectory.

16. The one or more non-transitory computer-readable media as recited in claim 9 , wherein:

the first time is associated with a first frame; and

the determining the peak velocity of the handheld controller within the predetermined time range prior to the first time comprises determining the peak velocity of the handheld controller within a predetermined amount of frames immediately prior to the first frame.

17. A system comprising:

one or more processors; and

one or more non-transitory computer-readable media storing computer-executable instructions that, when executed, cause the one or more processors to perform acts comprising:

determining, at a first time, that a virtual object is to be released;

determining a predetermined time range prior to the first time;

determining, at least partly in response to determining that the virtual object is to be released, a peak velocity of a handheld controller within the predetermined time range, wherein the peak velocity comprises a highest velocity within the predetermined time range;

determining that the peak velocity within the predetermined time range occurred at a second time prior to the first time;

determining at least one of a speed of the handheld controller at the second time, a direction of the handheld controller at the second time, a position of the handheld controller at the second time, or a rotational velocity of the virtual object at the second time; and

presenting, on the display, the virtual object being released based at least in part on the at least one of the speed of the handheld controller at the second time, the direction of the handheld controller at the second time, the position of the handheld controller at the second time, or the rotational velocity of the virtual object at the second time.

18. The system as recited in claim 17 , the acts further comprising:

determining at least one of a velocity of the handheld controller at a third time prior to the second time or a velocity of the handheld controller at a fourth time after the second time; and

calculating an average of the peak velocity and the at least one of the velocity of the handheld controller at the third time or the velocity of the handheld controller at the fourth time;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on a velocity corresponding to the average.

19. The system as recited in claim 17 , the acts further comprising:

determining a position of the virtual object at the second time;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on the position of the virtual object at the second time.

20. The system as recited in claim 17 , the acts further comprising:

calculating a trajectory of the virtual object using at least the peak velocity;

and wherein the presenting the virtual object being released comprises presenting the virtual object being released based at least in part on the trajectory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2019
From: BRADNER, KEITH; SLOCUM, JEREMY; NIETFELD, SCOTT DOUGLAS; YANG, LAWRENCE; LEINBAUGH, JEFFREY GEORGE
To: VALVE CORPORATION
Reel/Frame 049508/0547 →
Continuity (7)
Continuation In Part 15834372 · Dec 7, 2017
Continuation In Part 15679521 · Aug 17, 2017
Continuation In Part 29580635 · Oct 11, 2016
Provisional Application 62687806 · Jun 21, 2018
Provisional Application 62687774 · Jun 20, 2018
Provisional Application 62520958 · Jun 16, 2017
Related Publication 20190290999A1 · Sep 26, 2019
Cited By (2)
US 12,379,527 US 12,675,160