IP Library › Granted Patent US 10,311,621
Granted Patent B2
US 10,311,621 · App. 15/463,225 · Granted Jun 4, 2019

Held object stabilization in virtual reality

Inventor: Francois Chabot (Brossard, CA)
Assignee: GOOGLE LLC
G06T13/40G06F3/017G06T13/20G06T15/08G06T17/10G06T19/20G06T2219/2016
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 10,311,621
App. No.
15/463,225
Granted
Jun 4, 2019
Kind
B2
Abstract

Techniques of animating objects in VR involve applying a motion filter to the object that varies with vertices on an object. Along these lines, a VR computer generates an object for an interactive, three-dimensional game by generating a triangular mesh approximating the object surface and bones including vertices defining motion of the vertices based on motion of an anchor vertex. When a user selects a vertex of the object as an anchor vertex about which to move the object, the VR computer generates variable filters for each bone that restrict the motion of that bone based on the distance of that bone from the anchor vertex. Accordingly, when the user produces a gesture with a controller that defines a path of motion for the anchor vertex, the bone including the anchor vertex goes through an unfiltered motion while bones remote from the anchor vertex go through a more restricted motion.

Claims (42)

1. A method, comprising:

generating, by processing circuitry of a virtual reality (VR) computer, an object in a virtual environment, the object having a surface and including a first bone including a first vertex and a second bone including a second vertex, the first bone defining a motion of the first vertex according to a rigid transformation that preserves distances between points on the first bone;

receiving a request to move the first vertex of the surface of the object included in the first bone and the second vertex of the surface of the object included in the second bone;

in response to the request, applying a first filter to the first bone and a second filter to the second bone, each of the first filter and the second filter, upon respective application to the first bone and the second bone, restricting the motion of the first vertex of the first bone by a first amount and dampening the motion of the second vertex by a second amount different from the first amount.

2. The method as in claim 1 , wherein receiving the request includes defining an anchor vertex, the anchor vertex being included in the first bone;

wherein the motion includes a translation component and a rotation component; and

wherein the first filter is an identity filter that, when applied to the first bone, dampens the translation component of the motion of the anchor vertex by zero distance and dampens the rotation component of the motion of the anchor vertex by zero angle so that the anchor vertex moves along a path according to the rigid transformation.

3. The method as in claim 2 , wherein the object includes a first region that includes the anchor vertex, a second region including the second vertex, and a third region between the first region and the second region in which the object is deformed, the second vertex being remote from the anchor vertex, and

wherein the method further comprises performing a deformation operation on vertices within the third region to produce a deformed object with in the third region.

4. The method as in claim 3 , wherein performing the deformation operation on the vertices within the third region includes mapping a position of each of the vertices within the third region according to a continuous mapping function, the continuous mapping function having a zero slope at boundaries between the first region and the third region and between the second region and the third region.

5. The method as in claim 2 , wherein generating the object in the virtual environment includes defining the second bone to be identical to the first bone in a bind pose of the object.

6. The method as in claim 5 , wherein applying the second filter to the second bone includes defining the filter as an asymptotic filter having a filtering ratio proportional to a current angular distance between a position of a vertex of the second bone due to unfiltered motion of the vertex and a position of the vertex due to motion in response to application of a previous filter of the second bone.

7. The method as in claim 5 , wherein the rigid transformation defining the motion of each vertex attached to a bone of the plurality of bones includes a dual quaternion representation of a coordinate transformation, and

wherein the method further comprises performing a skinning operation on the third region after applying the second filter to the second bone to preserve a volume of the object in the third region.

8. The method as in claim 1 , further comprising displaying the object in a display configured to render the virtual environment for viewing by a user of the VR computer.

9. A computer program product comprising a nontransitive storage medium, the computer program product including code that, when executed by processing circuitry of a virtual reality (VR) computer, causes the processing circuitry to perform a method, the method comprising:

generating an object in a virtual environment, the object having a surface and including a first bone including a first vertex and a second bone including a second vertex, the first bone defining a motion of the first vertex according to a rigid transformation that preserves distances between points on the first bone;

receiving a request to move the first vertex of the surface of the object included in the first bone and the second vertex of the surface of the object included in the second bone;

in response to the request, applying a first filter to the first bone and a second filter to the second bone, each of the first filter and the second filter, upon respective application to the first bone and the second bone, dampening the motion of the first vertex of the first bone by a first amount and dampening the motion of the second vertex by a second amount different from the first amount.

10. The computer program product as in claim 9 , wherein receiving the request includes defining an anchor vertex, the anchor vertex being included in the first bone;

wherein the motion includes a translation component and a rotation component; and

wherein the first filter is an identity filter that, when applied to the first bone, dampens the translation component of the motion of the anchor vertex by zero distance and dampens the rotation component of the motion of the anchor vertex by zero degrees so that the anchor vertex moves along a path according to the rigid transformation.

11. The computer program product as in claim 10 , wherein the object includes a first region that includes the anchor vertex, a second region including the second vertex, and a third region between the first region and the second region in which the object is deformed, the second vertex being remote from the anchor vertex, and

wherein the method further comprises performing a deformation operation on vertices within the third region to produce a deformed object with in the third region.

12. The computer program product as in claim 11 , wherein performing the deformation operation on the vertices within the third region includes mapping a position of each of the vertices within the third region according to a continuous mapping function, the continuous mapping function having a zero slope at boundaries between the first region and the third region and between the second region and the third region.

13. The computer program product as in claim 10 , wherein generating the object in the virtual environment includes defining the second bone to be identical to the first bone in a bind pose of the object.

14. The computer program product as in claim 13 , wherein applying the second filter to the second bone includes defining the filter as an asymptotic filter having a filtering ratio proportional to a current angular distance between a position of a vertex of the second bone due to unfiltered motion of the vertex and a position of the vertex due to motion in response to application of a previous filter of the second bone.

15. The computer program product as in claim 13 , wherein the rigid transformation defining the motion of each vertex attached to a bone of the plurality of bones includes a dual quaternion representation of a coordinate transformation, and

wherein the method further comprises performing a skinning operation on the third region after applying the second filter to the second bone to preserve a volume of the object in the third region.

16. The computer program product as in claim 9 , wherein the method further comprises displaying the object in a display configured to render the virtual environment for viewing by a user of the VR computer.

17. A virtual reality (VR) computer, comprising:

memory; and

controlling circuitry coupled to the memory, the controlling circuitry being configured to:

generate an object in a virtual environment, the object having a surface and including a first bone including a first vertex and a second bone including a second vertex, the first bone defining a motion of the first vertex according to a rigid transformation that preserves distances between points on the first bone;

receive a request to move the first vertex of the surface of the object included in the first bone and the second vertex of the surface of the object included in the second bone;

in response to the request, apply a first filter to the first bone and a second filter to the second bone, each of the first filter and the second filter, upon respective application to the first bone and the second bone, dampening the motion of the first vertex of the first bone by a first amount and dampening the motion of the second vertex by a second amount different from the first amount.

18. The VR computer as in claim 17 , wherein the controlling circuitry configured to receive the request is further configured to define an anchor vertex, the anchor vertex being included in the first bone;

wherein the motion includes a translation component and a rotation component; and

wherein the first filter is an identity filter that, when applied to the first bone, dampens the translation component of the motion of the anchor vertex by zero distance and dampens the rotation component of the motion of the anchor vertex by zero degrees so that the anchor vertex moves along a path according to the rigid transformation.

19. The VR computer as in claim 18 , wherein the object includes a first region that includes the anchor vertex, a second region including the second vertex, and a third region between the first region and the second region in which the object is deformed, the second vertex being remote from the anchor vertex, and

wherein the controlling circuitry is further configured to perform a deformation operation on vertices within the third region to produce a deformed object with in the third region.

20. The VR computer as in claim 18 , wherein the controlling circuitry configured to perform the deformation operation on the vertices within the third region is further configured to map a position of each of the vertices within the third region according to a continuous mapping function, the continuous mapping function having a zero slope at boundaries between the first region and the third region and between the second region and the third region.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2017
From: CHABOT, FRANCOIS
To: GOOGLE INC.
Reel/Frame 041670/0030 →
Continuity (1)
Related Publication 20180268590A1 · Sep 20, 2018
Cited By (1)
US 12,412,353