# US 2018/0025525 A1 · Rigging for non-rigid structures

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

- Number: US 2018/0025525 A1
- Document ID: US20180025525A1
- Status: Published application
- Kind: A1
- Application number: 15/283,135
- Filed: 2016-09-30
- Published: 2018-01-25
- Earliest claimed: 2016-07-22
- Assignees: Pixar
- Applicants: Pixar
- Inventors: Mark C. HESSLER; Jeremie TALBOT; Mark PIRETTI; Kevin A. SINGLETON
- Web page: https://patentgrep.com/patent/US20180025525A1

## CPC

- G06T 19/20: Editing of three-dimensional [3D] images, e.g. changing shapes or colours, aligning objects or positioning parts
- G06T 13/20: Three-dimensional [3D] animation
- G06T 2200/24: involving graphical user interfaces [GUIs]
- G06T 2219/2016: Rotation, translation, scaling
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Techniques for animating a non-rigid object in a computer graphics environment. A three-dimensional (3D) curve rigging element representing the non-rigid object is defined, the 3D curve rigging element comprising a plurality of knot primitives. One or more defined values are received for an animation control attribute of a first knot primitive. One or more values are generated, for a second animation control attribute for a second knot primitive, based on the plurality of animation control attributes of a neighboring knot primitive. An animation is then rendered using the 3D curve rigging element. More specifically, one or more defined values for the first attribute of the first knot primitive and the generated value for the second attributes of the second knot primitive are used to generate the animation. The rendered animation is output for display.

## Claims

### Claim 1

A method of animating a non-rigid object in a computer graphics environment, the method comprising:
defining a first three-dimensional (3D) curve rigging element representing the non-rigid object, the 3D curve rigging element comprising a plurality of knot primitives, wherein each of the plurality of knot primitives corresponds to:
a respective position within a three-dimensional scene; and
a respective plurality of animation control attributes that control the movement of the knot primitive during animation;
receiving one or more defined values for a first one or more of the plurality of animation control attributes for a first one or more of the plurality of knot primitives;
generating one or more values, for a second one or more of the plurality of animation control attributes for a second one or more of the plurality of knot primitives based on the plurality of animation control attributes of a neighboring knot primitive;
rendering an animation using the first 3D curve rigging element, using the received one or more defined values, and the generated one or more values; and
outputting the rendered animation for display.

### Claim 2 (depends on 1)

The method of claim 1, wherein each of the plurality of knot primitives comprises a respective scene graph object, and wherein each scene graph object is individually constrainable within the computer graphics environment.

### Claim 3 (depends on 1)

The method of claim 1, wherein the plurality of animation control attributes for a first one of the plurality of knot primitives includes an indication of direction.

### Claim 4 (depends on 1)

The method of claim 1, wherein the plurality of animation control attributes for a first one of the plurality of knot primitives includes a measure of tangent length.

### Claim 5 (depends on 1)

The method of claim 1, wherein the plurality of animation control attributes for a first one of the plurality of knot primitives includes a twist control constraint.

### Claim 6 (depends on 1)

The method of claim 1, wherein the plurality of animation control attributes for a first one of the plurality of knot primitives includes a spline parameter value.

### Claim 7 (depends on 1)

The method of claim 1, wherein rendering the animation using the first 3D curve rigging element further comprises:
processing each of the plurality of knot primitives to generate a respective plurality of native control points; and
generating a Bézier cubic spline from the pluralities of native control points for the plurality of knot primitives.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
receiving a request to modify the first 3D curve rigging element at a first one of the plurality of knot primitives, in a manner that breaks a tangency of the first 3D curve rigging element at the position of the first knot primitive;
generating a second 3D curve rigging element that approximates a circle arc between the respective positions of a second and third one of the plurality of knot primitives, wherein the second and third knot primitives are adjacent to the first knot primitive within the first 3D curve rigging element; and
inserting the second 3D curve rigging element into the first 3D curve rigging element.

### Claim 9 (depends on 8)

The method of claim 8, wherein the second 3D curve rigging element is not depicted within the graphical user interface.

### Claim 10 (depends on 1)

The method of claim 1, wherein rendering the animation using the first 3D curve rigging element further comprises:
interpolating an orientation of at least one point on the first 3D curve rigging element between a first and a second knot primitive of the plurality of knot primitives, by a performing a torque-minimal rotation framewalk algorithm for the first 3D curve rigging element from the first knot primitive to the second knot primitive.

### Claim 11 (depends on 10)

The method of claim 10, wherein a torque-minimal rotation value is calculated based in part on a value for a first one of the plurality of animation control attributes for the first knot primitive, wherein the first animation control attribute specifies an indication of direction.

### Claim 12 (depends on 10)

The method of claim 10, wherein interpolating the orientation of at least one point on the first 3D curve rigging element between the first and the second knot primitive of the plurality of knot primitives further comprises:
performing a second torque-minimal rotation framewalk algorithm for the first 3D curve rigging element from the second knot primitive to the first knot primitive; and
performing a spherical linear interpolation between results of the first torque-minimal rotation framewalk algorithm and the second torque-minimal rotation framewalk algorithm.

### Claim 13 (depends on 1)

The method of claim 1, further comprising:
providing a graphical user interface through which a position of a first one of the plurality of knot primitives can be altered at a specified point in time.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
receiving a request to lock the position of a second one of the plurality of knot primitives,
wherein the position of the second knot primitive remains fixed during the period of time when rendering an animation of the first 3D curve rigging element, using the one or more defined values for the first one or more attributes for the first one or more one knot primitives, and the generated one or more values for the second one or more attributes for the second one or more knot primitives.

### Claim 15 (depends on 1)

The method of claim 1, wherein the one or more defined values for the first one or more animation control attributes are received at a first moment in time, and further comprising:
receiving, at a second moment in time that is subsequent to the first moment in time, a second one or more defined values for a third one or more of the plurality of animation control attributes for a third one or more of the plurality of knot primitives; and
generating a second one or more values, for a fourth one or more of the plurality of animation control attributes for a fourth one or more of the plurality of knot primitives based on the plurality of animation control attributes of a second neighboring knot primitive.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
receiving, at a third moment in time that is subsequent to the first moment in time, a request to undefine the first one or more animation control attributes for the first one or more knot primitives; and
dynamically generating one or more values for the undefined first one or more animation control attributes for the first one or more knot primitives.

### Claim 17

A system, comprising:
a processor; and
a non-transitory memory containing computer program code that, when executed by the processor, performs an operation for animating a non-rigid object in a computer graphics environment, the operation comprising:
defining a first 3D curve rigging element representing the non-rigid object, the first 3D curve rigging element comprising a plurality of knot primitives, wherein each of the plurality of knot primitives corresponds to:
a respective position within a three-dimensional scene; and
a respective plurality of animation control attributes that control the movement of the knot primitive during animation;
receiving one or more defined values for a first one or more of the plurality of animation control attributes for a first one or more of the plurality of knot primitives;
generating one or more values, for a second one or more of the plurality of animation control attributes for a second one or more of the plurality of knot primitives, based on the plurality of animation control attributes of a neighboring knot primitive;
rendering an animation using the first 3D curve rigging element, using the received one or more defined values, and the generated one or more values; and
outputting the rendered animation for display.

### Claim 18 (depends on 17)

The system of claim 17, the operation further comprising:
receiving a request to modify the first 3D curve rigging element at a first one of the plurality of knot primitives, in a manner that breaks a tangency of the first 3D curve rigging element at the position of the first knot primitive;
generating a second 3D curve rigging element that approximates a circle arc between the respective positions of a second and third one of the plurality of knot primitives, wherein the second and third knot primitives are adjacent to the first knot primitive within the first 3D curve rigging element; and
inserting the second 3D curve rigging element into the first 3D curve rigging element.

### Claim 19 (depends on 17)

The system of claim 17, wherein rendering the animation of the first 3D curve rigging element further comprises:
interpolating an orientation of at least one point on the first 3D curve rigging element between a first and a second knot primitive of the plurality of knot primitives, by a performing a torque-minimal rotation framewalk algorithm for the first 3D curve rigging element from the first knot primitive to the second knot primitive, wherein a torque-minimal rotation value is calculated based in part on a value for a first one of the plurality of animation control attributes for the first knot primitive, wherein the first animation control attribute specifies an indication of direction, and further comprising:
performing a second torque-minimal rotation framewalk algorithm for the first 3D curve rigging element from the second knot primitive to the first knot primitive; and
performing a spherical linear interpolation between results of the first torque-minimal rotation framewalk algorithm and the second torque-minimal rotation framewalk algorithm.

### Claim 20

A non-transitory computer-readable medium containing computer program code that, when executed by operation of one or more computer processors, performs an operation for animating a non-rigid object in a computer graphics environment, the operation comprising:
defining a first 3D curve rigging element representing the non-rigid object, the first 3D curve rigging element comprising a plurality of knot primitives, wherein each of the plurality of knot primitives corresponds to:
a respective position within a three-dimensional scene; and
a respective plurality of animation control attributes that control the movement of the knot primitive during animation;
receiving one or more defined values for a first one or more of the plurality of animation control attributes for a first one or more of the plurality of knot primitives;
generating one or more values, for a second one or more of the plurality of animation control attributes for a second one or more of the plurality of knot primitives, based on the plurality of animation control attributes of a neighboring knot primitive;
rendering an animation using the first 3D curve rigging element, using the received one or more defined values, and the generated one or more values; and
outputting the rendered animation for display.
