IP Library Granted Patent US 11,625,898
Granted Patent B2
US 11,625,898 · App. 16/389,499 · Granted Apr 11, 2023

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
G06T19/003G06F3/014G06F3/017G06T2200/04
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,625,898
App. No.
16/389,499
Granted
Apr 11, 2023
Kind
B2
Abstract

Techniques and devices for holding and releasing virtual objects on a display based on input received from one or more handheld controllers are described herein. In some instances, a handheld controller includes one or more sensors, such as proximity sensors, force sensors (e.g., force resisting sensors, etc.), accelerometers, and/or other types of sensors configured to receive input from a hand of a user gripping the handheld controller. Hardware, software, and/or firmware on the controller and/or on a device coupled to the controller (e.g., a game console, a server, etc.) may receive data from these sensors and generate a representation of a corresponding gesture on a display, such as a monitor, a virtual-reality system, and/or the like.

Claims (125)

1. A method comprising:

receiving first data from one or more sensors of a handheld controller, the first data indicating at least one of a force or proximity of at least a portion of a hand of a user holding the handheld controller at a first time;

storing, based at least in part on the first data, a first indication that a virtual object rendered on a display has been picked up by the user;

presenting, on the display and based at least in part on the first indication, a virtual hand of the user holding the virtual object;

receiving second data from the one or more sensors, the second data indicating at least one of a force or proximity of at least a portion of the hand at a second time;

storing, based at least in part on the second data, a second indication that the virtual hand is to release the virtual object within a predetermined amount of time from the second time;

receiving third data from the one or more sensors, the third data indicating a velocity of the handheld controller at a third time; and

presenting the virtual hand releasing the virtual object on the display at least partly in response to the third data or the predetermined amount of time expiring.

2. The method as recited in claim 1 , wherein the first data indicates a force of at least a portion of the hand at the first time, and further comprising:

determining that the force at the first time is greater than a force threshold;

and wherein the storing the first indication comprises storing the first indication that the virtual object rendered on the display has been picked up by the user based at least in part on determining that the force at the first time is greater than the force threshold.

3. The method as recited in claim 1 , wherein the first data comprises a first capacitance value measured by the one or more sensors, and further comprising:

determining that at least one of the first capacitance value or a second capacitance value that is based at least in part on the first capacitance value is greater than a capacitance threshold;

and wherein the storing the first indication comprises storing the first indication that the virtual object rendered on the display has been picked up by the user based at least in part on determining that the at least one of the first capacitance value or the second capacitance value is greater than the capacitance threshold.

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

the first data indicates a force of at least a portion of the hand at the first time;

the second data indicates a force of at least a portion of the hand at the second time; and

the method further comprises:

determining a difference between the force at the first time and the force at the second time; and

determining that the difference is greater than a difference threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the difference is greater than the difference threshold.

5. The method as recited in claim 1 , wherein the second data further indicates a velocity of the handheld controller at the second time, and further comprising:

determining that the velocity of the handheld controller at the second time is greater than a velocity threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the velocity of the handheld controller at the second time is greater than the velocity threshold.

6. The method as recited in claim 1 , wherein the second data comprises a first capacitance value measured by the one or more sensors, and further comprising:

determining that at least one of the first capacitance value or a second capacitance value that is based at least in part on the first capacitance value is not greater than a capacitance threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the first capacitance value is not greater than the capacitance threshold.

7. The method as recited in claim 1 , wherein the second data comprises a velocity of the handheld controller at the second time, and further comprising:

determining that the velocity of the handheld controller at the third time is not greater than the velocity of the handheld controller at the second time;

and wherein the presenting the virtual hand releasing the object comprises presenting, on the display, the virtual hand releasing the object based at least in part on determining that the velocity of the handheld controller at the third time is not greater than the velocity of the handheld controller at the second time.

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

determining that the predetermined amount of time has expired without presenting the virtual hand releasing the virtual object;

and wherein the presenting the virtual hand releasing the object comprises presenting, on the display, the virtual hand releasing the object based at least in part on determining that the predetermined amount of time has expired without presenting the virtual hand releasing the virtual object.

9. The method as recited in claim 1 , wherein the second data comprises a velocity of the handheld controller at the second time, and further comprising:

determining that the velocity of the handheld controller at the third time is greater than the velocity of the handheld controller at the second time;

storing an indication that the velocity of the handheld controller at the third time corresponds to a peak velocity;

storing an indication that the velocity of the handheld controller at the second time corresponds to a floor velocity;

calculating, based at least in part on the peak velocity and the floor velocity, an ending velocity; and

storing an indication of the ending velocity.

10. The method as recited in claim 9 , further comprising:

receiving fourth data from the one or more sensors, the fourth data indicating a velocity of the handheld controller at a fourth time; and

determining that the velocity of the handheld controller at the fourth time is less than the floor 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 determining that the velocity of the handheld controller at the fourth time is less than the floor velocity.

11. The method as recited in claim 9 , further comprising:

receiving fourth data from the one or more sensors, the fourth data indicating a velocity of the handheld controller at a fourth time;

determining that the velocity of the handheld controller at the fourth time is not less than the floor velocity;

determining that the velocity of the handheld controller at the fourth time is less than the ending velocity; and

determining that a velocity of the handheld controller has remained less than the ending velocity for greater than a threshold amount of 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 determining that the velocity of the handheld controller has remained less than the ending velocity for greater than the threshold amount of time.

12. A system comprising:

one or more processors; and

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

receiving first data from one or more sensors of a handheld controller, the first data indicating at least one of a force or proximity of at least a portion of a hand of a user holding the handheld controller at a first time;

storing, based at least in part on the first data, a first indication that a virtual object rendered on a display has been picked up by the user;

presenting, on the display and based at least in part on the first indication, a virtual hand of the user holding the virtual object;

receiving second data from the one or more sensors, the second data indicating at least one of a force or proximity of at least a portion of the hand at a second time;

storing, based at least in part on the second data, a second indication that the virtual hand is to release the virtual object within a predetermined amount of time from the second time;

receiving third data from the one or more sensors, the third data indicating a velocity of the handheld controller at a third time; and

presenting the virtual hand releasing the virtual object on the display at least partly in response to the third data or the predetermined amount of time expiring.

13. The system as recited in claim 12 , wherein the first data indicates a force of at least a portion of the hand at the first time, and the acts further comprising:

determining that the force at the first time is greater than a force threshold;

and wherein the storing the first indication comprises storing the first indication that the virtual object rendered on the display has been picked up by the user based at least in part on determining that the force at the first time is greater than the force threshold.

14. The system as recited in claim 12 , wherein the first data comprises a first capacitance value measured by the one or more sensors, and the acts further comprising:

determining that at least one of the first capacitance value or a second capacitance value that is based at least in part on the first capacitance value is greater than a capacitance threshold;

and wherein the storing the first indication comprises storing the first indication that the virtual object rendered on the display has been picked up by the user based at least in part on determining that the at least one of the first capacitance value or the second capacitance value is greater than the capacitance threshold.

15. The system as recited in claim 12 , wherein:

the first data indicates a force of at least a portion of the hand at the first time;

the second data indicates a force of at least a portion of the hand at the second time; and

the acts further comprising:

determining a difference between the force at the first time and the force at the second time; and

determining that the difference is greater than a difference threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the difference is greater than the difference threshold.

16. The system as recited in claim 12 , wherein the second data further indicates a velocity of the handheld controller at the second time, and the acts further comprising:

determining that the velocity of the handheld controller at the second time is greater than a velocity threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the velocity of the handheld controller at the second time is greater than the velocity threshold.

17. The system as recited in claim 12 , wherein the second data comprises a first capacitance value measured by the one or more sensors, and the acts further comprising:

determining that at least one of the first capacitance value or a second capacitance value that is based at least in part on the first capacitance value is not greater than a capacitance threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the first capacitance value is not greater than the capacitance threshold.

18. The system as recited in claim 12 , wherein the second data comprises a velocity of the handheld controller at the second time, and the acts further comprising:

determining that the velocity of the handheld controller at the third time is not greater than the velocity of the handheld controller at the second time;

and wherein the presenting the virtual hand releasing the object comprises presenting, on the display, the virtual hand releasing the object based at least in part on determining that the velocity of the handheld controller at the third time is not greater than the velocity of the handheld controller at the second time.

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

determining that the predetermined amount of time has expired without presenting the virtual hand releasing the virtual object;

and wherein the presenting the virtual hand releasing the object comprises presenting, on the display, the virtual hand releasing the object based at least in part on determining that the predetermined amount of time has expired without presenting the virtual hand releasing the virtual object.

20. The system as recited in claim 12 , wherein the second data comprises a velocity of the handheld controller at the second time, and the acts further comprising:

determining that the velocity of the handheld controller at the third time is greater than the velocity of the handheld controller at the second time;

storing an indication that the velocity of the handheld controller at the third time corresponds to a peak velocity;

storing an indication that the velocity of the handheld controller at the second time corresponds to a floor velocity;

calculating, based at least in part on the peak velocity and the floor velocity, an ending velocity; and

storing an indication of the ending velocity.

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

receiving fourth data from the one or more sensors, the fourth data indicating a velocity of the handheld controller at a fourth time; and

determining that the velocity of the handheld controller at the fourth time is less than the floor 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 determining that the velocity of the handheld controller at the fourth time is less than the floor velocity.

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

receiving fourth data from the one or more sensors, the fourth data indicating a velocity of the handheld controller at a fourth time;

determining that the velocity of the handheld controller at the fourth time is not less than the floor velocity;

determining that the velocity of the handheld controller at the fourth time is less than the ending velocity; and

determining that a velocity of the handheld controller has remained less than the ending velocity for greater than a threshold amount of 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 determining that the velocity of the handheld controller has remained less than the ending velocity for greater than the threshold amount of time.

23. A handheld controller comprising:

a controller body;

one or more sensors coupled to the controller body;

one or more processors; and

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

receiving first data from one or more sensors of a handheld controller, the first data indicating at least one of a force or proximity of at least a portion of a hand of a user holding the handheld controller at a first time;

storing, based at least in part on the first data, a first indication that a virtual object rendered on a display has been picked up by the user;

presenting, on the display and based at least in part on the first indication, a virtual hand of the user holding the virtual object;

receiving second data from the one or more sensors, the second data indicating at least one of a force or proximity of at least a portion of the hand at a second time;

storing, based at least in part on the second data, a second indication that the virtual hand is to release the virtual object within a predetermined amount of time from the second time;

receiving third data from the one or more sensors, the third data indicating a velocity of the handheld controller at a third time; and

presenting the virtual hand releasing the virtual object on the display at least partly in response to the third data or the predetermined amount of time expiring.

24. The handheld controller as recited in claim 23 , wherein the first data indicates a force of at least a portion of the hand at the first time, and the acts further comprising:

determining that the force at the first time is greater than a force threshold;

and wherein the storing the first indication comprises storing the first indication that the virtual object rendered on the display has been picked up by the user based at least in part on determining that the force at the first time is greater than the force threshold.

25. The handheld controller as recited in claim 23 , wherein the first data comprises a first capacitance value measured by the one or more sensors, and the acts further comprising:

determining that at least one of the first capacitance value or a second capacitance value that is based at least in part on the first capacitance value is greater than a capacitance threshold;

and wherein the storing the first indication comprises storing the first indication that the virtual object rendered on the display has been picked up by the user based at least in part on determining that the at least one of the first capacitance value or the second capacitance value is greater than the capacitance threshold.

26. The handheld controller as recited in claim 23 , wherein:

the first data indicates a force of at least a portion of the hand at the first time;

the second data indicates a force of at least a portion of the hand at the second time; and

the acts further comprising:

determining a difference between the force at the first time and the force at the second time; and

determining that the difference is greater than a difference threshold;

and wherein storing the second indication comprises storing the second indication that the hand is to release the virtual object based at least in part on determining that the difference is greater than the difference threshold.

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/0287 →
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 20190325651A1 · Oct 24, 2019