FIELD

The present disclosure generally relates to methods and systems for generating an animation control rig configured to manipulate a skeleton of an animated character.

BACKGROUND

Visual content generation systems are used to generate imagery in the form of still images and/or video sequences of images, for instance, used in visual productions (e.g., movies, videos, clips, and recorded visual media). Such still images and/or video sequences of images can include live action scenes obtained from a live action capture system, computer generated scenes obtained from an animation creation system, or a combination thereof.

An animation artist uses tools to specify content for the imagery. Where the imagery includes computer generated scenes, the animation artist may use various tools to specify the positions in a scene space such as a three-dimensional coordinate system of objects (also referred to as “characters”). Some characters are articulated, having multiple parts, e.g., limbs, with joints that are movable with respect to each other.

The animation artist may retrieve a representation of an articulated object, such as a digital skeleton of a three dimensional (3-D) model, and generate an animated sequence of movements of the articulated object, or part thereof. Animation sequence data representing an animation sequence may be stored in data storage, such as animation sequence storage.

Animation sequence data might be in the form of time series of data for points of an articulated object having attributes that are controllable by creation of a digital control rig representing a sculpture of an object. Various aspects of animation sequence movement may be authored in source code that is then compiled for runtime operation efficiency. The generation of animation sequence data to create an articulated object has the potential to be a complicated task.

SUMMARY

The present animation system enables generation of an animation control rig configured to manipulate a skeleton of an animated object. With use of the animation system, software changes may be easily made to make alteration to the control rig or to use in generating a similar control rig.

In some implementations, a computer-implemented method is provided for generating an animation control rig configured to manipulate a skeleton of an animated object. The method includes receiving of uncompiled computer code associated with the animation control rig. A plurality of potential changes to be applied to the animation control rig and a request for a particular change of the plurality of potential changes are also received. The uncompiled computer code is analyzed relative to a performance metric to determine one or more partitions to partition the uncompiled computer code into separate computer code blocks in order to insert a software change associated with the particular change, into a relevant block of the separate computer code blocks. The uncompiled computer code may be then separated into the separate computer code blocks at the one or more partitions in the uncompiled computer code. The relevant block(s) of the separate computer code blocks is updated with the software change to create updated computer code. The updated computer code is compiled to generate the animation control rig.

The uncompiled computer code that is associated with the animation control rig may include functions to control of at least one of a location, position, or orientation of one or more handles of the animation control rig. The uncompiled computer code may be organized into hierarchical nodes including in descending order an archetype node, at least one appendage node, and at least one feature nodes. At times, the software change may include a physical constraint of a particular movement to a skeleton modeled by the animation control rig.

In the method, analysis of the uncompiled computer code may include a determination of an aggregate of predicted processing times of the separate computer code blocks during runtime. Further to the method, one or more widgets may be provided to a user, which enable the user to select at least one separation parameter relative to a performance metric. Such separation parameters may include one or more of: (1) a number of the separate computer code blocks to separate the uncompiled computer code, or (2) one or more locations in the uncompiled computer code for the respective one or more partitions.

In particular implementations, further processes may be added to generate the animated object based on the animation control rig and to display the animated object on a display as an image sequence.

In some implementations, a computer system is provided that includes one or more processors and a storage medium storing instructions for generating an animation control rig configured to manipulate a skeleton of an animated object. When the instructions are executed by the one or more processors, the computer system is caused to perform certain processes. The computer system receives uncompiled computer code associated with the animation control rig and a plurality of potential changes to be applied to the animation control rig. The computer system also receives a request for a particular change of the plurality of potential changes. The uncompiled computer code is analyzed by the computer system relative to a performance metric to determine one or more partitions to partition the uncompiled computer code into separate computer code blocks in order to insert a software change associated with the particular change, into a relevant block of the separate computer code blocks. The uncompiled computer code is separated at the one or more partitions in the uncompiled computer code and the relevant block is updated with the software change to create updated computer code. The updated computer code is then compiled to generate the animation control rig.

The uncompiled computer code received by the computer system may include functions to control of at least one of a location, position, or orientation of one or more handles of the animation control rig. The software change that is inserted into a relevant block, for example, may include a physical constraint of a particular movement to a skeleton modeled by the animation control rig.

In some specific implementations, the computer system analyzes the uncompiled computer code by determining an aggregate of predicted processing times of the separate computer code blocks during runtime.

One or more widgets may be provided to a user to enable the user to select at least one separation parameter relative to the performance metric. Such a separation parameter may include one or more of a number of the separate computer code blocks to separate the uncompiled computer code, or one or more locations in the uncompiled computer code for the respective one or more partitions.

In some implementations, a non-transient storage medium storing instructions may be provided. The instructions may be used for generating an animation control rig configured to manipulate a skeleton of an animated object. When the instructions are executed by one or more processors, the one or more processors perform processes including receiving uncompiled computer code associated with the animation control rig and a plurality of potential changes to be applied to the animation control rig. Furthermore, a request is received for a particular change of the plurality of potential changes. The instructions additionally provide for analysis of uncompiled computer code relative to a performance metric to determine one or more partitions to partition the uncompiled computer code into separate computer code blocks in order to insert a software change into a particular block of the separate computer code blocks. The uncompiled computer code are separated into the separate computer code blocks at the one or more partitions in the uncompiled computer code. As such, the particular block is updated with the software change to create updated computer code. This updated computer code is compiled to generate the animation control rig.

The uncompiled computer code used by the processes may include functions to control of at least one of a location, position, or orientation of one or more handles of the animation control rig. Also, the software change may include a physical constraint of a particular movement to a skeleton modeled by the animation control rig.

In some implementations, the instructions provide for analyzing uncompiled by determining an aggregate of predicted processing times of the separate computer code blocks during runtime. In still some implementations, one or more widgets may be provided to a user according to the instructions, which enable the user to select at least one separation parameter relative to the performance metric. The separation parameter may include one or more of: a number of the separate computer code blocks to separate the uncompiled computer code or one or more locations in the uncompiled computer code for the respective one or more partitions. In addition, the instructions may cause generation of the animated object based on the animation control rig and display of the animated object on a display as an image sequence.

A further understanding of the nature and the advantages of particular embodiments disclosed herein may be realized by reference to the remaining portions of the specification and the attached drawings.

