D D Weiner and S E Anderson

1974

Focal Press

The capability for graphic digital computer output has been available for many years. But with movies, where thousands of frames of film are usually required, it is impractical to program each frame as a separate entity. To answer this specialized need, a language capable of generating tens, or even hundreds, of frames by means of just a few instructions has been developed at Syracuse University USA. The language consists of the four programs:

  1. CALD (Computer Aided Line Drawings).
  2. CAPER (Computer Aided Perspectives).
  3. CAMP (Computer Aided Motion Pictures).
  4. CAMPER (Computer Aided Movie Perspectives).

CALD and CAPER are written for output on the CalComp 565 mechanical plotter while CAMP and CAMPER are to be used with the Stromberg Carlson 4020 microfilm recorder. Output capability for both the mechanical plotter and microfilm recorder was necessary because there was no microfilm recorder available nearby and the mechanical plotter would give results quickly.

When producing computer animated motion pictures, several attempts are usually required before satisfactory results are achieved. In addition to debugging the program, the animator often experiments with various picture parameters in order to obtain a certain effect as best he can. Because no microfilm recorder is located within the Syracuse area, the magnetic tapes have had to be sent for processing to the nearest installation, at the Polytechnic Institute of Brooklyn which is approximately 300 miles away. In order to eliminate long delays during the debugging and experimental phase of the movie, provision has been made for graphic output on the University's mechanical plotter. It is intended that movies be debugged by plotting selected frames using CALD and CAPER. Since the names of the commands in CAMP and CAMPER are identical to those of CALD and CAPER, little additional work is required to convert from the mechanical plotter to the microfilm recorder. The option exists for drawing pictures in either a two- or three-dimensional representation. CALD and CAMP are programs for generating, manipulating and plotting three-dimensional figures onto a two-dimensional plane in true perspective.

PROGRAMS AND USERS

All four programs have been written in FORTRAN IV. It is recognized that other programming languages are more versatile and efficient. However, the use of such languages is limited to a relatively small number of computing centres. If computer animation is to develop rapidly into a useful, effective and widely available educational tool, it is desirable to create a common library of subroutines that will be available to as many computer installations as possible. Clearly, FORTRAN IV is ideally suited for this purpose. Unavoidably, either assembly or machine language is needed to provide the input codes for both the plotter and the microfilm recorder. (FORTRAN IV is unable to manipulate data on a bit level). Fortunately, this is required for only a very small number of commands.

The four programs consist of a series of subroutines. Each subroutine is called by one data card. The program user need not know FORTRAN. He need only learn the movie language (i.e. the name and function of each command and the purpose of the parameters associated with each command). The names of the subroutines and associated parameters have been chosen to be as simple and descriptive as possible. Should the user be familiar with FORTRAN, it is possible for him to enlarge the original set of subroutines.

A list processing technique is used for picture storage. Each new figure is stored consecutively at the end of a variable length list (stack). Each figure within the stack is called an array and figures are referred to by specifying their respective stack and array numbers. Stacks and arrays can be altered either in total or in part, and, hence, it is possible to individually alter entire frames, figures within frames, or points within figures. Fig. 14.1 gives an example in which the arrays of two separate stacks are used to store the basic figures generating the dog and the letters comprising the text. Should it be desirable to wag both the dog's tail and ears, it is only necessary to modify the fourth and seventh array of the first stack. Thus, constant backgrounds and non-varying portions of a frame need not be computed more than once during an animated sequence.

Fig 14.1: The array of two separate stacks are used to store the basic figure generating the dog and the letters comprising the text.

Basic figures are provided for in the movie language. For example, Fig. 14.2 illustrates the command used to generate an arrow. Sand ARR denote the stack and array numbers in which the arrow is to be stored. The parameter P equals 0, 1, 2 or 3 depending upon whether the shaft is to be solid or dashed and the head open or closed. The arrow is directed from the co-ordinates (X1, Y1) to (X2, Y2) and the size of the head is specified by the parameter HEAD. Subroutines for generating circles, rectangles, triangles, crosses, grids, clocks and sine waves are also available. Some electronic circuit symbols are included.

Fig 14.2: The command used to generate an arrow.

In addition, an alphanumeric set of 49 characters is provided. They have been created using straight line segments and may be manipulated in size, position, and orientation so as to give a large degree of flexibility in creating text. When lines of text are desired, a single command can be used that automatically spaces up to twenty characters. If more than twenty characters are required, the command can be used consecutively to concatenate the strings of text. A sample title used in a movie explaining the movie language is shown in Fig. 14.3. Fig. 14.3 also illustrates the masking routine. By specifying the boundary of a rectangular area, it is possible to draw only those lines and portions of lines that fall outside of the specified area. As an application of the masking routing, Fig. 14.3 is taken from a dissolve sequence in which the rectangular area is made successively larger until the entire title has been masked leaving a blank frame of film. In this way, an interesting scene transition is made. Windowing, the inverse of masking, is also part of the movie language. With this routine only those lines and portions of lines that fall inside a specified rectangular area are drawn.

Fig 14.3: A sample title used in a film explaining the movie language.

In Fig. 14.4 the windowing routine is used to stimulate an odometer. During the animation sequence. numerals move vertically through the window indicating current time on the clock.

Fig 14.4: The windowing routine is used to stimulate an odometer.

Commands are provided for the translation, rotation and magnification of objects. The rotation command rotates an object about any desired centre point by a specified angular increment. The magnification command expands or contracts all points of an object as measured from any specified reference point. Fig. 14.5 illustrates the simultaneous use of magnification and windowing to properly truncate an object as it is blown up beyond the limits of the screen. Another command, helpful in animating sequences, is the MOVE command which moves an object in equal increments from an initial to final position. This is demonstrated in Fig. 14.6 where the six animated figures are produced by means of only two MOVE commands.

Finally, three commands (SAVE, ESAVE and REPET) are included for use when the same scene is to be repeated many times. A great deal of computer time is saved since the scene is retained in SC-4020 coded form.

Figs. 14.1-14.4 and Fig. 14.6 are taken from a ten minute computer animated movie explaining the CAMP movie language.

Fig 14.5: Simultaneous use of magnification and windowing to properly truncate an object as it is blown up beyond the limits of the screen.

Fig 14.6: Six animated figures produced by means of only two MOVE commands