# US 12,217,342 B1 · Devices, methods and graphical user interfaces for goal-based animation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,217,342 B1
- Document ID: US12217342B1
- Status: Granted
- Kind: B1
- Application number: 17/659,792
- Filed: 2022-04-19
- Granted: 2025-02-04
- Earliest claimed: 2021-06-10
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Gregory Duquesne; Arnold H. Cachelin
- Web page: https://patentgrep.com/patent/US12217342B1

## CPC

- G06T 13/00: Animation
- G06T 11/00: Two-dimensional [2D] image generation
- G06T 13/40: of characters, e.g. humans, animals or virtual beings
- G06T 2200/24: involving graphical user interfaces [GUIs]
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

A computer-generated environment may include a virtual agent and a plurality of targets. Movements of the virtual agent to the plurality of targets can be defined and the movements of the virtual agent to the plurality of targets may be interpolated, such that to generate an interpolated animation path of movement of the virtual agent to the first target and to the second target.

## Claims

### Claim 1

A method comprising:
at an electronic device in communication with a display and one or more input devices:
displaying, using the display, a computer-generated environment including a first virtual agent and a plurality of targets, the plurality of targets including a first target and a second target;
defining a plurality of movements of the first virtual agent including a first movement of the first virtual agent to the first target and a second movement of the first virtual agent to the second target;
interpolating the first movement and the second movement to generate an interpolated animation path of movement of the first virtual agent to the first target and to the second target, wherein the interpolated animation path is different from a first animation path for animating the first movement and a second animation path for animating the second movement and wherein interpolating the first movement and the second movement comprises:
generating the first animation path and the second animation path, and
generating the interpolated animation path as an animation of the first virtual agent moving with an inertial delay to follow a position along the first animation path and the second animation path; and
displaying the animation of the movement of the first virtual agent along the interpolated animation path to the first target and to the second target.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first target and the second target are stationary targets, the first animation path and the second animation path are each linear, and the interpolated animation path includes a smoothed transition between movement to the first target and movement to the second target relative to transition of the first animation path to the second animation path.

### Claim 3 (depends on 1)

The method of claim 1, wherein the first target is a moving target, the first animation path is non-linear, and the interpolated animation path includes a smoother path for movement of the first virtual agent to the first target relative to the first animation path.

### Claim 4 (depends on 1)

The method of claim 1, wherein the defining the plurality of movements of the first virtual agent includes a pause between the first movement and the second movement, and wherein the interpolated animation path reduces or eliminates a pause between an end of the first movement and a start of the second movement.

### Claim 5 (depends on 1)

The method of claim 1, wherein the inertial delay defines a spring relationship between the first virtual agent and the position along the first animation path and the second animation path.

### Claim 6 (depends on 1)

The method of claim 1, wherein defining one movement of the plurality of movements of the first virtual agent includes defining a start time, a duration, a target of movement, a movement function and an inertia parameter of the first virtual agent.

### Claim 7 (depends on 1)

The method of claim 1, wherein defining the plurality of movements comprises defining a first inertia parameter for the first movement and a second inertia parameter, different than the first inertia parameter, for the second movement, wherein interpolating the first movement and the second movement is based on the first inertia parameter and the second inertia parameter.

### Claim 8 (depends on 1)

The method of claim 1, wherein one of the plurality of targets is a second virtual agent.

### Claim 9

A non-transitory computer readable storage medium storing instructions, which when executed by one or more processors, cause the one or more processors to:
at an electronic device in communication with a display and one or more input devices:
display, using the display, a computer-generated environment including a first virtual agent and a plurality of targets, the plurality of targets including a first target and a second target;
define a plurality of movements of the first virtual agent including a first movement of the first virtual agent to the first target and a second movement of the first virtual agent to the second target;
interpolate the first movement and the second movement to generate an interpolated animation path of movement of the first virtual agent to the first target and to the second target, wherein the interpolated animation path is different from a first animation path for animating the first movement and a second animation path for animating the second movement and wherein interpolating the first movement and the second movement comprises:
generating the first animation path and the second animation path, and
generating the interpolated animation path as an animation of the first virtual agent moving with an inertial delay to follow a position along the first animation path and the second animation path; and
display the animation of the movement of the first virtual agent along the interpolated animation path to the first target and to the second target.

### Claim 10 (depends on 9)

The non-transitory computer readable storage medium of claim 9,
wherein the first target and the second target are stationary targets, the first animation path and the second animation path are each linear, and the interpolated animation path includes a smoothed transition between movement to the first target and movement to the second target relative to transition of the first animation path to the second animation path.

### Claim 11 (depends on 9)

The non-transitory computer readable storage medium of claim 9,
wherein the first target is a moving target, the first animation path is non-linear, and the interpolated animation path includes a smoother path for movement of the first virtual agent to the first target relative to the first animation path.

### Claim 12 (depends on 9)

The non-transitory computer readable storage medium of claim 9, wherein defining the plurality of movements of the first virtual agent includes a pause between the first movement and the second movement, and wherein the interpolated animation path reduces or eliminates a pause between an end of the first movement and a start of the second movement.

### Claim 13 (depends on 9)

The non-transitory computer readable storage medium of claim 9, wherein the inertial delay defines a spring relationship between the first virtual agent and the position along the first animation path and the second animation path.

### Claim 14 (depends on 9)

The non-transitory computer readable storage medium of claim 9, wherein defining one movement of the plurality of movements of the first virtual agent includes defining a start time, a duration, a target or movement, a movement function and an inertia parameter of the first virtual agent.

### Claim 15

An electronic device comprising:
one or more processors;
memory; and
one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for:
displaying, using a display in communication with the electronic device, a computer-generated environment including a first virtual agent and a first target that is configured to move within the computer-generated environment;
defining a movement of the first virtual agent to the first target;
interpolating the movement to generate a second-order animation path of movement of the first virtual agent to the first target, wherein the second-order animation path is different from a first-order animation path animating the movement, the second-order animation path is non-linear, and the second-order animation path includes a smoother path for movement of the first virtual agent to the first target relative to the first-order animation path; and
displaying the animation of the movement of the first virtual agent along the second-order animation path to the first target.

### Claim 16 (depends on 15)

The electronic device of claim 15, wherein interpolating the movement comprises:
generating the first-order animation path; and
generating the second-order animation path as an animation of the first virtual agent moving with an inertial delay to follow a position along the first-order animation path.

### Claim 17 (depends on 16)

The electronic device of claim 16, wherein the inertial delay defines a spring relationship between the first virtual agent and the position along the first-order animation path.

### Claim 18 (depends on 15)

The electronic device of claim 15, wherein defining the movement of the first virtual agent includes defining a start time, a duration, a target of movement, a movement function and an inertia parameter of the first virtual agent.

### Claim 19 (depends on 15)

The electronic device of claim 15, wherein defining the movement comprises defining an inertia parameter for the movement, wherein interpolating the movement is based on the inertia parameter.

### Claim 20 (depends on 15)

The electronic device of claim 15, wherein the first target is a second virtual agent.
