Computer Assisted Animation refers to systems consisting of one or more two-dimensional planes that computerize the traditional (hand-drawn) animation process. Interpolation between key shapes is typically the only use of the computer in producing this type of animation (in addition to the non–motion control uses of the computer in tasks such as inking, shuffling paper, and managing data).
Computer Generated Animation in which the animator is typically working in a synthetic three-dimensional environment with the objective of specifying the motion of both the cameras and the 3D objects (e.g., as in Toy Story ). For discussion purposes, motion specification for computergenerated animation is divided into two broad categories, interpolation and basic techniques and advanced algorithms. These somewhat arbitrary names have been chosen to accentuate the computational differences among approaches to motion control. The former group can be thought of as low level because the animator exercises fine control over the motion and the expectations of the animator are very precise. The latter group comprises high-level algorithms in which control is at a coarser level with less of a preconceived notion of exactly what the motion will look like. Use of the term algorithms is meant to reinforce the notion of the relative sophistication of these techniques.
The interpolation and basic technique category consists of ways in which the computer is used to fill in the details of the motion once the animator specifies the required information. Examples of techniques in this category are key framing and path following. When using these techniques, animators typically have a fairly specific idea of the exact motion they want; these techniques give animators a direct and precise way of specifying and controlling the motion, with the computer’s function limited to filling in appropriate numeric values that are required to produce the desired motion.
High-level procedural algorithms and behavioral models generate motion using a set of rules or constraints that specify what is to be done instead of how it is to be done. The animator chooses an appropriate algorithm or sets up the rules of a model and then selects initial values or boundary conditions. The system is then set into motion, so to speak, and the objects’ motions are automatically generated by the algorithm or model. These approaches, such as particle systems and rigid body dynamics, often rely on sophisticated computations.
The motion control methods can also be discussed in terms of the level of abstraction at which the animator is working. At one extreme, at a very low level of abstraction, the animator could individually color every pixel in every frame using a paint program. At the other extreme, at a very high level of abstraction, the animator could (in an ideal world) tell a computer to “make a movie about a dog.” Presumably, the computer would whirl away while it computes such a thing. A high level of abstraction frees the animator from dealing with the myriad details required to produce a piece of animation. A low level of abstraction allows the animator to be very precise in specifying exactly what is to be displayed and when. In practice, animators want to be able to switch back and forth and to work at various levels of abstraction depending on the desired effect. Developing effective animation tools that permit animators to work at both high and low levels of abstraction is a particular challenge.
This distinction between basic techniques and advanced algorithms is made primarily for pedagogical purposes. In practice the collection of techniques and algorithms used in computer animation forms a continuum from low to high levels of abstraction. Each technique requires a certain amount of effort from the animator and from the computer. This distribution of workload between the animator and the computer is a distinguishing characteristic among animation techniques. Intuitively, low-level techniques tend to require more user input and employ fairly straightforward computation. High-level algorithms, on the other hand, require less specific information from the animator and more computation.