# US 2018/0025527 A1 · Multipoint offset sampling deformation

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

- Number: US 2018/0025527 A1
- Document ID: US20180025527A1
- Status: Published application
- Kind: A1
- Application number: 15/723,063
- Filed: 2017-10-02
- Published: 2018-01-25
- Earliest claimed: 2011-10-07
- Assignees: DreamWorks Animation LLC
- Applicants: DreamWorks Animation L.L.C.
- Inventors: Paul Carmen DILORENZO; Matthew Christopher GONG; Arthur D. GREGORY
- Web page: https://patentgrep.com/patent/US20180025527A1

## CPC

- G06T 13/40: of characters, e.g. humans, animals or virtual beings
- G06T 13/80: Two-dimensional [2D] animation, e.g. using sprites
- G06T 15/005: {General purpose rendering architectures}
- G06T 11/10: Texturing; Colouring; Generation of textures or colours (retouching, inpainting or scratch removal G06T5/77)
- G06T 19/00: Manipulating three-dimensional [3D] models or images for computer graphics
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

A skin deformation system for use in computer animation is disclosed. The skin deformation system accesses the skeleton structure of a computer generated character, and accesses a user's identification of features of the skeleton structure that may affect a skin deformation. The system also accesses the user's identification of a weighting strategy. Using the identified weighting strategy and identified features of the skeleton structure, the skin deformation system determines the degree to which each feature identified by the user may influence the deformation of a skin of the computer generated character. The skin deformation system may incorporate secondary operations including bulge, slide, scale and twist into the deformation of a skin. Information relating to a deformed skin may be stored by the skin deformation system so that the information may be used to produce a visual image for a viewer.

## Claims

### Claim 1

(canceled)

### Claim 2

A computer-implemented method for deforming a skin of a model of a computer animation character, the method comprising:
accessing the model, wherein the model includes a skeleton having a plurality of bones connected at one or more joints, wherein a joint of the one or more joints is associated with a first local coordinate system;
accessing a user's selection of one or more control points, wherein each control point is associated with a second local coordinate system;
accessing a skin vertex, wherein the skin vertex represents a location on the skin and the skin vertex is associated with a position vector;
receiving user input representing selection of a geometric function;
subsequent to accessing the user's selection of the one or more control points and receiving the user input representing selection of the geometric function, using, by one or more processors, the selected geometric function to:
perform an automated control point selection process that selects a smaller subset of control points from the user's selection of the one or more control points, wherein the automated control point selection process is performed by the one or more processors, and wherein the automated control point selection process comprises:
performing one or more calculations using the selected geometric function and at least a portion of the user's selection of the one or more control points; and
selecting, using a result of the one or more calculations, the smaller subset of control points; and
determine an influence, of each control point in the smaller subset, over a new position vector of the skin vertex;
determining the new position vector of the skin vertex using the selected smaller subset of control points and corresponding influence; and
storing the new position vector of the skin vertex, wherein a portion of the skin of the computer animation character is displayed, during animation, at the new position vector of the skin vertex.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, further comprising:
determining a numerical coefficient for each control point in the smaller subset of control points using the position vector of the skin vertex, a position vector of each control point in the smaller subset of control points, and the selected geometric function,
wherein the numerical coefficient for a given control point represents the influence of the given control point over the new position vector of the skin vertex; and
determining an offset vector using the local coordinate system associated with each control point in the smaller subset of control points and the numerical coefficients.

### Claim 4 (depends on 2)

The computer-implemented method of claim 2, wherein:
the geometric function is a B-spline geometric function or a Catmull-Clark geometric function.

### Claim 5 (depends on 2)

The computer-implemented method of claim 2, wherein the automated control point selection process further comprises:
determining a first smaller subset of control points and a second smaller subset of control points, different than the first, of the user's selection of the one or more control points;
performing a first calculation using the selected geometric function and the first smaller subset of control points;
performing a second calculation using the selected geometric function and the second smaller subset of control points; and
selecting, based on results of the first and second calculations, the smaller subset of control points.

### Claim 6 (depends on 2)

The computer-implemented method of claim 2, wherein performing one or more calculations using the selected geometric function and at least a portion of the one or more control points comprises:
determining a plurality of limit curves using the one or more control points, wherein each limit curve of the plurality of limit curves is based on different control points of the one or more control points.

### Claim 7 (depends on 2)

The computer-implemented method of claim 2, further comprising:
calculating a difference between the position vector of the skin vertex and the new position vector of the skin vertex;
receiving a user's selection of a scaling factor; and
determining another position vector for the skin vertex based on the received scaling factor, the calculated difference, and at least one of the position vector of the skin vertex and the new position vector of the skin vertex.

### Claim 8

A non-transitory computer-readable storage medium having computer-executable instructions for deforming a skin of a model of a computer animation character, comprising instructions for:
accessing the model, wherein the model includes a skeleton having a plurality of bones connected at one or more joints, wherein a joint of the one or more joints is associated with a first local coordinate system;
accessing a user's selection of one or more control points, wherein each control point is associated with a second local coordinate system;
accessing a skin vertex, wherein the skin vertex represents a location on the skin and the skin vertex is associated with a position vector;
receiving user input representing selection of a geometric function;
subsequent to accessing the user's selection of the one or more control points and receiving the user input representing selection of the geometric function, using the selected geometric function to:
perform an automated control point selection process that selects a smaller subset of control points from the user's selection of the one or more control points, wherein the automated control point selection process is performed by one or more processors, and wherein the automated control point selection process comprises:
performing one or more calculations using the selected geometric function and at least a portion of the user's selection of the one or more control points; and
selecting, using a result of the one or more calculations, the smaller subset of control points; and
determine an influence, of each control point in the smaller subset, over a new position vector of the skin vertex;
determining the new position vector of the skin vertex using the selected smaller subset of control points and corresponding influence; and
storing the new position vector of the skin vertex, wherein a portion of the skin of the computer animation character is displayed, during animation, at the new position vector of the skin vertex.

### Claim 9 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, the computer-executable instructions further comprising instructions for:
determining a numerical coefficient for each control point in the smaller subset of control points using the position vector of the skin vertex, a position vector of each control point in the smaller subset of control points, and the selected geometric function,
wherein the numerical coefficient for a given control point represents the influence of the given control point over the new position vector of the skin vertex; and
determining an offset vector using the local coordinate system associated with each control point in the smaller subset of control points and the numerical coefficients.

### Claim 10 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein:
the geometric function is a B-spline geometric function or a Catmull-Clark geometric function.

### Claim 11 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the automated control point selection process further comprises:
determining a first smaller subset of control points and a second smaller subset of control points, different than the first, of the user's selection of the one or more control points;
performing a first calculation using the selected geometric function and the first smaller subset of control points;
performing a second calculation using the selected geometric function and the second smaller subset of control points; and
selecting, based on results of the first and second calculations, the smaller subset of control points.

### Claim 12 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein performing one or more calculations using the selected geometric function and at least a portion of the one or more control points comprises:
determining a plurality of limit curves using the one or more control points, wherein each limit curve of the plurality of limit curves is based on different control points of the one or more control points.

### Claim 13 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, the computer-executable instructions further comprising instructions for:
calculating a difference between the position vector of the skin vertex and the new position vector of the skin vertex;
receiving a user's selection of a scaling factor; and
determining another position vector for the skin vertex based on the received scaling factor, the calculated difference, and at least one of the position vector of the skin vertex and the new position vector of the skin vertex.

### Claim 14

A system for deforming a skin of a model of a computer animation character, the system comprising:
a memory operatively coupled to one or more processors, wherein the memory comprises one or more programs, which, when executed by the one or more processors, cause the processors to:
access the model, wherein the model includes a skeleton having a plurality of bones connected at one or more joints, wherein a joint of the one or more joints is associated with a first local coordinate system;
access a user's selection of one or more control points, wherein each control point is associated with a second local coordinate system;
access a skin vertex, wherein the skin vertex represents a location on the skin and the skin vertex is associated with a position vector;
receive user input representing selection of a geometric function;
subsequent to accessing the user's selection of the one or more control points and receiving the user input representing selection of the geometric function, use the selected geometric function to:
perform an automated control point selection process that selects a smaller subset of control points from the user's selection of the one or more control points, wherein the automated control point selection process is performed by one or more processors, and wherein the automated control point selection process comprises:
performing one or more calculations using the selected geometric function and at least a portion of the user's selection of the one or more control points; and
selecting, using a result of the one or more calculations, the smaller subset of control points; and
determine an influence, of each control point in the smaller subset, over a new position vector of the skin vertex;
determine the new position vector of the skin vertex using the selected smaller subset of control points and corresponding influence; and
store the new position vector of the skin vertex, wherein a portion of the skin of the computer animation character is displayed, during animation, at the new position vector of the skin vertex.

### Claim 15 (depends on 14)

The system of claim 14, wherein the one or more programs further comprise instructions for:
determine a numerical coefficient for each control point in the smaller subset of control points using the position vector of the skin vertex, a position vector of each control point in the smaller subset of control points, and the selected geometric function,
wherein the numerical coefficient for a given control point represents the influence of the given control point over the new position vector of the skin vertex; and
determine an offset vector using the local coordinate system associated with each control point in the smaller subset of control points and the numerical coefficients.

### Claim 16 (depends on 14)

The system of claim 14, wherein:
the geometric function is a B-spline geometric function or a Catmull-Clark geometric function.

### Claim 17 (depends on 14)

The system of claim 14, wherein the automated control point selection process further comprises:
determining a first smaller subset of control points and a second smaller subset of control points, different than the first, of the user's selection of the one or more controls points;
performing a first calculation using the selected geometric function and the first smaller subset of control points;
performing a second calculation using the selected geometric function and the second smaller subset of control points; and
selecting, based on results of the first and second calculations, the smaller subset of control points.

### Claim 18 (depends on 14)

The system of claim 14, wherein performing one or more calculations using the selected geometric function and at least a portion of the one or more control points comprises:
determining a plurality of limit curves using the one or more control points, wherein each limit curve of the plurality of limit curves is based on different control points of the one or more control points.

### Claim 19 (depends on 14)

The system of claim 14, wherein the one or more programs further comprise instructions for:
calculating a difference between the position vector of the skin vertex and the new position vector of the skin vertex;
receiving a user's selection of a scaling factor; and
determining another position vector for the skin vertex based on the received scaling factor, the calculated difference, and at least one of the position vector of the skin vertex and the new position vector of the skin vertex.
