IP Library Granted Patent US 10,410,393
Granted Patent B2
US 10,410,393 · App. 15/421,779 · Granted Sep 10, 2019

Animating a virtual object in a virtual world

Inventors: Alberto Aguado (Aston, GB); James Edward John Brewster (Sidmouth, GB)
Assignee: NaturalMotion Ltd.
G06T13/40G06T2213/12
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,410,393
App. No.
15/421,779
Granted
Sep 10, 2019
Kind
B2
Abstract

A computer implemented method for use in animating parts of a virtual object in a virtual world, the method comprising obtaining joint data for joints associated with parts of a virtual object, joint data including length data defining a vector length from the joint to a next joint, the length data corresponding to a length of a part in the virtual world; accessing data for a target curve defining target locations for the joints of the parts of the virtual object; computing a length along the target curve equal to the length defined for a first joint from the first joint defined on the target curve to an initial target location on the target curve; computing an initial location for a second joint at the length defined for the first joint along a line through the initial target location; computing a difference between the initial location for the second joint and the initial target location; and computing a target location for the second joint on the target curve based on the computed difference and the initial target location.

Claims (41)

1. A computer implemented method for use in animating parts of a virtual object in a virtual world, the method comprising:

obtaining joint data for a chain of sequentially connected joints associated with parts of a virtual object, the joint data for each joint including length data defining a vector length from a location of the joint to a location of a next joint, the length data corresponding to a length of a part in the virtual world;

accessing data for a target curve defining possible target locations for the joints of the parts of the virtual object;

computing a length along the target curve equal to the length defined for a first joint from a location of the first joint defined on the target curve to an initial target location on the target curve;

computing an initial location for a second joint at the length defined for the first joint along a line from the location of the first joint defined on the target curve through the initial target location;

computing a difference between the initial location for the second joint and the initial target location;

computing a target location for the second joint on the target curve based on the computed difference and the initial target location; and

rotating the vector for the first joint associated with a first part to the target location for the second joint.

2. A method according to claim 1 , including computing the location of the first joint as a start location for the target curve.

3. A method according to claim 1 , wherein the target location for the second joint is computed as a length along the target curve comprising the sum of the length from the first joint to the initial target location and a length defined by the difference in the computed initial location for the second joint and the initial target location.

4. A method according to claim 1 , including computing a second location for the second joint at the length defined for the first joint and along a line through the target location; computing a second difference in the second location for the second joint and the target location; and if the difference is above a threshold, computing a revised target location for the second joint on the target curve based on the computed second difference and the target location.

5. A method according to claim 1 , wherein the computation of the length along the target curve, the computation of the initial location, the computation of the difference, and the computation of the target location are repeated for successive joints along a chain of joints associated with a chain of parts to determine the locations for the joints to fit to target locations on the target curve.

6. A method according to claim 5 , wherein a last joint in the chain comprises an end joint having no said length data.

7. A computer system for use in animating parts of a virtual object in a virtual world, the computer system comprising:

a program memory storing program code; and

a processor for implementing the program code stored in the program memory;

wherein the program code comprises:

code for controlling the processor to obtain joint data for a chain of sequentially connected joints associated with parts of a virtual object, the joint data for each joint including length data defining a vector length from a location of the joint to a location of a next joint, the length data corresponding to a length of a part in the virtual world;

code for controlling the processor to access data for a target curve defining possible target locations for the joints of the parts of the virtual object;

code for controlling the processor to compute a length along the target curve equal to the length defined for a first joint from a location of the first joint defined on the target curve to an initial target location on the target curve;

code for controlling the processor to compute an initial location for a second joint at the length defined for the first joint and along a line from the location of the first joint defined on the target curve through the initial target location;

code for controlling the processor to compute a difference between the initial location for the second joint and the initial target location;

code for controlling the processor to compute a target location for the second joint on the target curve based on the computed difference and the initial target location; and

code for controlling the processor to rotate the vector for the first joint associated with a first part to the target location for the second joint.

8. A system according to claim 7 , wherein the code for controlling the processor includes code for controlling the processor to compute the location for the first joint as a start location for the target curve.

9. A system according to claim 7 , wherein code for controlling the processor to compute the target location for the second joint includes code to control the processor to compute the target location for the second joint as a length along the target curve comprising the sum of the length from the first joint to the initial target location and a length defined by the difference in the computed initial location for the second joint and the initial target location.

10. A system according to claim 7 , including code for controlling the processor to compute a second location for the second joint at the length defined for the first joint and along a line through the target location; code for controlling the processor to compute a second difference in the second location for the second joint and the target location; and code for controlling the processor to, if the difference is above a threshold, compute a revised target location for the second joint on the target curve based on the computed second difference and the target location.

11. A system according to claim 7 , wherein the code for controlling the processor to: compute the length along the target curve, the computation of the initial location, compute the difference, and compute the target location comprises code to control the processor to repeat the computations for successive joints along a chain of joints associated with a chain of parts to determine the locations for the joints to fit to target locations on the target curve.

12. A system according to claim 11 , wherein a last joint in the chain comprises an end joint having no said length data.

13. A non-transient storage medium storing computer code for controlling a computer to:

obtain joint data for a chain of sequentially connected joints associated with parts of a virtual object, the joint data for each joint including length data defining a vector length from a location of the joint to a location of a next joint, the length data corresponding to a length of a part in the virtual world;

access data for a target curve defining possible target locations for the joints of the parts of the virtual object;

compute a length along the target curve equal to the length defined for a first joint from a location of the first joint defined on the target curve to an initial target location on the target curve;

compute an initial location for a second joint at the length defined for the first joint along a line from the location of the first joint defined on the target curve through the initial target location;

compute a difference between the initial location for the second joint and the initial target location;

compute a target location for the second joint on the target curve based on the computed difference and the initial target location; and

rotating the vector for the first joint associated with a first part to the target location for the second joint.

14. A non-transient storage medium according to claim 13 , storing computer code for controlling a computer to compute the location of the first joint as a start location for the target curve.

15. A non-transient storage medium according to claim 13 , storing computer code for controlling a computer to compute the target location for the second joint as a length along the target curve comprising the sum of the length from the first joint to the initial target location and a length defined by the difference in the computed initial location for the second joint and the initial target location.

16. A non-transient storage medium according to claim 13 , storing computer code for controlling a computer to compute a second location for the second joint at the length defined for the first joint and along a line through the target location; to compute a second difference in the second location for the second joint and the target location; and if the difference is above a threshold, to compute a revised target location for the second joint on the target curve based on the computed second difference and the target location.

17. A non-transient storage medium according to claim 13 , wherein the computation of the length along the target curve, the computation of the initial location, the computation of the difference, and the computation of the target location are repeated for successive joints along a chain of joints associated with a chain of parts to determine the locations for the joints to fit to target locations on the target curve.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: AGUADO, ALBERTO; BREWSTER, JAMES EDWARD JOHN
To: NATURALMOTION LIMITED
Reel/Frame 041147/0348 →
Priority Claims (1)
GB 1601777.4 · Feb 1, 2016 · national
Continuity (1)
Related Publication 20170221248A1 · Aug 3, 2017