This disclosure relates to computer animation and computer generated imagery. More specifically, this disclosure relates to systems and methods for creating and using hierarchies of models for rigging.
Computer-generated imagery (“CGI”) is a process of using computers to convert specifications of objects, things, lights, effects, etc. into images. CGI might be used for generating one image, for example, of a teapot with one light source, or might be used to generate an animation, a sequence of images such as might be used for a feature-length film.
Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
Some animation might be done by manually painting each image, but with the wide use of computers, it is common, for movies or other features, to have a user (e.g., an animator or other skilled artist) specify geometric descriptions of models or other objects, such as characters, props, background, or the like that may be rendered into images. An animator may also specify poses and motions for objects or portions of the objects. In some instances, the geometric description of objects may include a number of animation variables (avars), and values for the avars. As an example, a simple character might comprise a model that comprises a fixed body, two arms and two legs, with four joints where the arms and legs join the body and can be moved. An animation variable for such a model might be the angle between the body and the right arm. The animator could “pose” this model by placing the body at a location and an orientation in the virtual three-dimensional space, then specifying the four angles (two arm rotations and two leg rotations). This posing might be done by the animator typing in values for each degree of freedom and viewing a rendering of the result.
In such a simple case, entering in a few values is not a problem, but many models are much more complicated. For example, a character model might include a movable body, arms, elbows, fingers, facial muscles, etc., all with their own degrees of freedom. To simplify the entry of the animator's desired pose and/or movements, a user interface with “handles” or “widgets” for avars might be provided. As an example, a user interface might display a rendered character and overlay yellow squares that the animator can drag and move to indicate movements desired by the animator. Internally, the animation editing software that presents the user interface to the user and receives the animator's inputs could translate a “drag-handle” operation into a change in value of an avar.
In some animation terminology, a model refers to a collection of elements that together form an object that is presented in a scene and may have some degrees of freedom. The number of degrees of freedom may depend on the type of object. A model for a building might have a degree of freedom as to how a door opens or closes and where the building is located, but that model—except perhaps in some stories—might not be expected to have a degree of freedom that allows a central spine to rotate and bend.
A rigging for a model refers to the user interface (logical or actual) for exercising the degrees of freedom. Using the rigging, an animator can specify a pose of the model for a still image and/or specify how the model is to move from pose to pose in an animation. Rigging is not part of the displayed scene, although there are user interfaces provided to animators that illustrate parts of the rigging, such as when animation is being edited. Models can be given various controllers, animation variables, and handles for an animator to manipulate various locations of the object's topology to create complex movements and motions.
For some models, a bone/joint system can be set up to deform various locations of the object's topology. For example, the bone/joint system can be connected to foot, ankle, knee, hip, and other leg locations of a humanoid model to provide the structure to make the humanoid model walk. Other types of information may also be “hung” on the object's topology to add further realism or additional control for the animator. In other words, information may be associated with a vertex, edge, span, or face of the mesh that forms to the object's topology. However, the above processes can be very involved and time consuming to simply generate a single model.
Additionally, a typical feature-length animation may require hundreds to thousands of models. This increases the production time and cost of the animation if each model may be required to be hand-created and setup. One possible solution can be to hand copy the information from one model to another. However, this process still requires an animator to place or “hang” the copied data onto the correct position of the new objects topology. Rarely is each character exactly the same, so each character's topology can have some differences that the animator has to deal with.
For example, an animated feature film might involve classes of objects or characters, with hierarchical subclasses. For example, there might be class of characters such as humans, with subclasses for warriors, elderly humans, tall humans, short stocky humans, children, adults, etc. and subclasses of subclasses, such as injured tall humans, etc. It could be that each of the different subclasses have separate models and separate rigging, but that can be a lot of work for an animation team.
Accordingly, what is desired are improved methods and apparatus for solving some of the problems discussed above, while reducing further drawbacks, some of which are discussed above.