A comprehensive computer animation facility for research and educational filmmaking is described. The facility is composed of an animation package (ZAPP) which is callable from several high-level languages and which has a rich set of tools for defining and controlling movement and picture change, a real time playback and editing system, a free-hand sketching system, and a movie postprocessing system, which ultimately records the movies on film. The paper discusses the major features of ZAPP, then summarizes 18 months of its use in artistic and educational filmmaking, visual simulation and the depiction of complex processes, and computer program illustration.
Late in 1972, we began the design of a new computer animation system. Our goal was to develop a comprehensive facility that could support a broad range of research and educational filmmaking in the University of Toronto community. As the design evolved, the following constraints, assumptions, and intentions were paramount:
We therefore decided to build an algorithmic animation system, in which one could construct movies by writing programs, rather than a demonstrative system, in which one could draw movies. Furthermore, the system had to be accessible from popular high-level languages running on the large batch machine. The resulting design included a major system running on that machine and three auxiliary programs running on the minicomputers:
The intent of this design is that the animator develop and debug a rough version of her film using ZAPP, experiment with its dynamics and timing using FRED, input any needed free-hand sketches with FITZ, and produce the polished footage with FERD. All of the programs communicate using a common data format.
ZAPP has been operational since late summer, 1973. A preliminary version of FRED came up in May 1974; the complete design is described in [2]. FITZ was written in late summer, 1974. FERD has not yet been implemented; a rudimentary microfilm plotting package has been used in its place.
The remainder of this paper discusses the major features of ZAPP, then summarizes 18 months of its use in artistic and educational filmmaking, visual simulation and the depiction of complex processes, and computer program illustration.
ZAPP's major strength as a computer animation language stems from its rich set of tools for describing movement and generating picture change.
In ZAPP, a picture is composed of curves, each of which consists of individual points or sets of points connected by straight lines. ZAPP allows the animator to consruct images with procedure calls that create and open a new image, draw points and lines at specific coordinates and add them to that image, and close and store the image. There are also mechanisms to read in an image description from cards, read it in from a file prepared by the sketchinq system FITZ, retrieve it from an image library, or create it as one of ZAPP's basic set of algorithmically-defined geometric figures, such as circles and polygons.
These images may then be moved, changed, and combined with the folowing mechanisms:
ZAPP's interpolation method is the same as that used by other investigators [5]. Although cumbersome, it can produce striking results in the hands of a skilled and careful animator [6]. Two key pictures, assumed to contain equal numbers of curves, are compared in terms of constituent points, and the curves having fewer points reconstructed with more added. Corresponding line segments in each curve are then interpolated over a number of frames, with the rhythm (See Section II.A.3.) of the interpolation determined by a function.
Although the p-curve is most useful in an interactive animation system accepting free-hand input [7], it has applicability for ZAPP as well. The p-curve is an image that describes both the trajectory and the dynamics of movement of another picture. For example, using as a p-curve a circle with defining points not evenly spaced creates a circular movement with a speed determined by the spacing of the points. The ZAPP animator can cause any picture to be treated as a p-curve for any other picture.
All graphics systems contain geometric transformations such as translation, rotation, and scaling. ZAPP contains a rich set of such functions:
Thess functions can be applied either statically or dynamically. Under static processing, a picrure transformation maps an old picture into a new one, but the change does not appear directly on the film. Static processing is like arranging a cast of characters on the stage before the play begins. Under dynaic processing, the picture transformation executes as part of the movie. Dynamic processing is like the actions of he characers within the play.
Consider, for example, a typical ZAPP movement:
CALL MOVETO (PIC,FLINP,13.,FACDE, 10.)
The final result of this transformation is to move the picture PIC to X=13.0 and Y=10.0. The functional parameters FLINP and FACDE determine the rate of change of PIC's location with respect to time within a prescribed interval. (See Section II.B.2.) In particular, the X coordinate changes linearly from its current value to 13.0, while the Y coordinate changes to 10.0 in a smoothly accelerating then decelerating fashion. Thus each application of a transformation can result in a motion with its own unique rhythm.
Transformations can be driven by tvo kinds of functions, periodic and aperiodic. Since both new transformations and new functions can be added to the system by a knowledgeable user, a standard interface is defined. Functions are assumed to accept temporal fractions between 0 and 1, and return values between -1 and +1. Periodic functions must return 0 for time=0 and time=1; aperiodic functions mus+ return 0 for time=0 and 1 for time=1. It is the responsibility of each transformation to map frame numbers into temporal fractions between 0 and 1, and to map fractional movements into absolute changes in position, orientation, and size.
An effective attention-drawing animation technique is to bring in a new image by uncovering successive portions of it. A graceful way of removing an image from the screen is to wipe out successive portions of it. The ZAPP generator transformation allows any portion of an image to be drawn or erased at a rhythm determined by a standard ZAPP function. Appealing visual effects can be achieved by thoughtful choices of tho segment of the image, the polarity of the generator (in or out), and the rhythm of the change.
The above set of techniques is quite comprehensive compared to many computer animation systems, but there are still some animated sequences that cannot gracefully be constructed. The ZAPP animator can always fall back upon the capabilities of the host language and include in his movie any computable sequence of images.
Additional tools are provided for the ZAPP animator to combine these primitive movements and picture changes into more complex sequences.
ZAPP has one absolute coordinate system which spans all of real two-dimensional space. All coordinate references ara defined with respect to this coordinate system. Relative motions of a picture can be produced witn a set of transformations which are expressed relative to the location of the center of another picture. The center is usually considered to be the midpoint of a minimum enclosing rectangle, but a new center may be established by the user at any time. Relative motion descriptions can be concatenated to arbitrary depth providing they contain no loops.
A computer animation must faciliate the description of concurrent actions, involving both synchronous and asynchronous events and movements. Several movements must be simultaneously applicable to a single picture; several pictures must be transformable in parallel. Despite its importance, no programming-language based animation system prior to ZAPP has provided this capability.
A call on the ZAPP INTRVL routine establishes a time interval over which all following transformations will apply. Transformation requests are not processed immediately but rather stored in an agenda. The agenda records the key to the type of transformation, the picture to which it will be applied, the transformation arguments needed for the calculatior, and the beginning and ending frames of the interval. New intervals can be established with additional calls on the INTRVL routine, hence both synchronous and asynchronous motions may be described. When all the motions for a portion (T1, T2) of the film have been specified, a call ROLLIT (T1, T2) causes the procssing of all trarsformations storeed in the agenda and applicable between T1 and T2. All pictures referenced by these transformations, and any number of unchanging background pictures, are automatically output in the correct frames. Interpolation, p-curve driven movements, functionally controlled movements, generators, and algorithmically described sequences, can all be added to and processed concurrently from the agenda.
While all these concurrent actions occur on the stage of the single ZAPP display page, four independent cameras can record different portions of the scene. Each camera is pointed at a rectangular window on the display page, and can be panned and zoomed over the page to change the location and size of the window. After the scene is clipped to the boundaries of the window, its contents are mapped onto a rectangular viewport, or portion of the movie screen. Thus split-screen presentations can be generated very easily.
90% of the jobs run at the University of Toronto Computer centre are written in PL/I, FORTRAN, or various of their dialects and subsets such as WATFIV, PL/C, or SP/k. We have therefore made ZAPP directly accessible, via procedure calls, from these two languages. We also sought to make the package callable from more elegant high-level languages, and have achieved this, albeit somewhat awkwardly, with ALGOL/W.
The ZAPP animator can easily direct output to a line printer, paper plotter (ink or electrostatic), or microfilm recorder. One saves time and money by debugging the basic algorithms on the line printer, then refining the images on the paper plotter, next previewing the movie with FRED, and finally moving to the microfilm recorder to complete the film.
When requested, ZAPP will output images to two devices on a single run. For instance, use of the microfilm as a primary device and the paper plotter as a secondary device provides a hard copy record for debugging, documentation, and discussion. Such output is usually done in cartoon mode, with successive miniature images arrayed in vertical columns on the paper.
For such use, only key frames are desired. This also applies to many test runs on the microfilm recorder. ZAPP allows the user to specify frame output filters which determine which frames are output to the primary device and to the secondary device. For example, she can request specific individual frames, or every nth frame beginning at a certain one, or all essential frames, where an essential frame is defined as one in which an agenda action starts or stops.
The ZAPP animator assigns symbolic names to her pictures and transacts with the system on those terms. ZAPP manages space for these pictures and does dynamic storage allocation. Each picture has a visibility bit, and with it the user can temporarily hide images. In addition, there is a mechanism whereby one can apply a transformation to all pictures currently defined.
Because ZAPP executes in a batch environment, and the content of a picture is generally fixed, ZAPP represents each picture in a single block of storage. Pictures, however, can be changed, and the system generates new blocks appropriately. Two pictures can be combined, individual curves and points within pictures can be interrogated or modified, and new curves and points can be added.
ZAPP has an absolute frame counter, and also a relative frame counter that can be reset to 0 at the beginning of each scene. All timing references are interpreted with respect to the relative counter. The user can decide if time is to be clocked in seconds or frames, and also determine the ultimate correspondence between seconds of movie time and frames produced by the microfilm recorder.
In the past 18 months, ZAPP has been used in the following projects:
The original design goals have been met, and, despite OS/370, ZAPP has survived. Yet we have often regretted the multi-lingual constraint, which led us to implement in FORTRAN and assembler. This doubled the implementation cost, made ZAPP too unreliable to transport, and allowed the uglinesses of FORTRAN to impair the readability and make awkward ZAPP programs written in any of the host languages. It would have been better to implement in a structured assembly language or systems implementation language, even if ZAPP had then been inaccessible from FORTRAN or PL/I. Another major difficulty stems from the awkwardness of a multiple machine environment without adequate data communications linking the machines. We are therefore beginning work with a medium-scale minicomputer which should ultimately support all our animation activities, both demonstrative and algorithmic.
For a more complete description the reader is referred to Reference [14].
Thanks to Margie Guerin for implementing and then maintaining ZAPP; Tom Britton, Eric Onasick, Tom Horsley, Mike Tilson, and Greg Hill for suggesting and adding features; and the National Research Council for financial support.
[1] Marjorie Guerin, A System for Computer Animated Film Production in a Batch Processing Environment, M.Sc Thesis, Dept of Computer Science, University of Toronto, 1973.
[2] Michael D Tilson,Editing Computer Animated Film, MSc Thesis, Dept of Computer Science, University of Toronto, 1975.
[3] Ronald M Baecker, Stan Bevington, Thomas Britton, Artistic Computer Transformations of Two-Dimensional Text and Images, Final Report to the Canada Council Explorations Program, 1975.
[4] Ronald M Baecker, Picture-Driven Animation, Proceedings of the 1969 Joint Computer Conference, 273-288.
Ronald M Baecker, Interactive Computer-Mediated Animation, MIT Project MAC-TR-61, 1969.
[5] Leslie Mezei, Arthur Zivian, ARTA, An Interactive Animation System, IFIP 1971, 429-434.
Nestor Burtnyk, Marceli Wein, Computer Generated Key-Frame Animation, Journal of the Society of Motion Picture and Television Engineers, Vol 80, March 1971, 149-153.
[6] Peter Foldes, La Faim (Hunger), Color Sound Film, The Film Board of Canada, 1974.
[7] Ronald M Baecker, GENESYS - Interactive Computer-Mediated Animation, appears in [Halas 74], 97-115.
Ronald M Baecker, Lynn D Smith, Eric Martin, GENESYS: An Interactive Computer-Mediated Animation System, Color Sound Film, MIT Lincoln Laboratory, Lexington, Mass, 1970.
[8] Bruce and Kathryn Cornwell, Doppler Effect and the Twin Paradox, Color Film, Houghton-Miflin 1978.
[9] Eric Onasick, ZAPPEX, Color Film, Dynamic Graphics Project, Computer Systems Research Group, University of Toronto, 1974.
[10] Ronald M Baecker, Thomas Horsley, Computer-Animated Simulation Models: A Tool for Transportation Planning, Transportation Research Record, to appear.
[11] Ronald M Baecker, Eric Onasick, Gordon Thompson, Skull Growth, Films, Dynamic Graphics Project and Faculty of Dentistry, Uinversity of Toronto, under production.
[12] Ronald M Baecker, Producer, Program Animation Film Sampler, Dynamic Graphics Project, 1974.
Ronald M Baecker, Two Systems Which Produced Animation Representations of the Execution of Computer Programs, ACM SIGCSE Bulletin, Vol 7, No 1, 158-167.
[13] Edward Yarwood, Toward Program Illustration, MSc Thesis, Dept of Computer Science, University of Toronto, 1974.
[14] Ronald M Baecker, Marjorie Guerin, Michael D Tilson, A Computer Animation Facility for Research and Educational Filmmaking, currently being reviewed.
Marjorie Guerin, ZAPP Version 2.1 User Manual, Dynamic Graphics Project, November 1974.