The Solids Animation Program

William D Gattis, Computer Technology Inc (Subsidiary of LTV Aerospace Corporation)

San Francisco, 1968

UAIDE

INTRODUCTION

The SOLIDS Animation Program is a set of FORTRAN subroutines developed for use in producing computer animated motion pictures.

Current versions of the program are running on an IBM 7090 and a 360/65 computer.

Two output options are available to the user. The first produces a 35m motion picture film using the Stromberg-Carlson 4020 microfilm recorder and a Vought pulse operated camera, and the second produces 11 × 14 inch drawings of each frame using a CalComp plotter.

Color has been added to films generated on the 4020 plotter using color gels and film bi-pack techniques.

.

The program is currently being used to produce animated sequences for a number of training films. In these applications, which involve full color and some complex perspective changes, computer animation techniques have made possible a substantial cost reduction over conventional methods.

+Z +X +Y description of object to be plotted data cards (x, y, z points) data cards animation sub-routines motion parameters main program motion parameters motion descriptions Worksheets INPUT Computers OUTPUT calcomp plot-tape SC4020 magnetic tape calcomp plotter animation size cels drawn on plain paper animation transparent cels cels colored oxbery animation camera 16mm film in color SC4020 plotter 8½ × 11 hardcopies 35mm film reduction 16mm film
Figure 1

The program has also been used to produce films in other areas where the use of full animation has never been seriously considered before due to the cost when using conventional techniques.

An example of one of these areas is in the use of short, one-shot animated films illustrating football plays as they would be seen in perspective from the press-box. A number of these have been produced for a national television network.

One of the objectives in the development of the animation program has been to provide the person who has very limited or no programming experience with a means of using computer animation directly. We had in mind specifically the professional animator and we have had some success in this area.

However, some individuals have found it difficult to reduce their ideas to the numerical values - velocities, accelerations, position coordinates, etc. - required as input for the program. For thia reason the approach we have usually taken in producing a computer animated film is to use experienced programmers to do the actual programming. These programmers follow a detailed story board and work closely with experienced animators.

The addition of a specialized language translator to the animation program is being considered to ease this interface problem between animator and computer.

Another objective has been to provide a set of subroutines that can be combined with existing computer programs to produce animated films for engineering and scientific applications.

PROGRAM CONCEPT

In order to use the set of animation subroutines to produce an animated film, a user must provide a main program.

The user has access to the subroutine package through calls to three subroutines.

STANDARD DIMENSION AND COMMON USER SUPPLIED MAIN PROGRAM READE MOTION RESET HIDDEN LINE ELIMINATION TIME CALCULATIONS (IN FRAMES) ACCELERATION AND DECELERATION CALCULATIONS MOTION DELTAS ROTATION, TRANSMISSION OFFSET CALCULATIONS PERSPECTIVE CALCULATIONS ROTATION AND LINEAR TRANSLATION TRANSFORMATIONS REORIENTATION OF SELECTED DATA ARRAYS SC4020 AND CALCOMP SOFTWARE OUTPUT TAPE
Figure 2

The first of these, READE provides for reading data describing the objects to be in the film into the main data array. A call to READE is normally the first statement in the program.

After reading the data, the user supplies FORTRAN statements describing the motion desired for the objects described in the data. This involves setting variable names that describe velocities, accelerations, start and end positions, and scale values, as well as varioua options sucb as vanishing point perspective and hidden line elimination, to the appropriate values.

Once this has been done, motion calculations and the generation of the output tape are initiated by a call to subroutine MOTION.

The idea, then, is to:

  1. Read data
  2. Set variables to select options and describe motion parameters
  3. Initiate output by a call to MOTION

Once a particular sequence is complete, additional ones can be generated by subsequent statements setting motion-variables and followed by calls to MOTION.

A provision is made for a smooth continuation of movement from one sequence or call to MOTION to the next by automatically saving velocity and position information for each object at the end of each sequence and making it available as an option for the start of the next sequence for those objects indicated. This is used frequently to modify motion parameters for a particular figure at a selected time or frame and allow others to continue according to previous parameters.

Variables controlling options for hidden line elimination, vanishing point perspective, windowing, and scaling are provided for each object independently of the others.

Scale values can be varied over a period of time to simulate a zoom.

Film wipes, used in titles, can be programmed using the hidden line option and a special type of plane surface which ia never drawn but which can hide objects behind it and which can be manipulated with velocity, acceleration, deceleration, and associated variables.

The normal order of transformations for each object before each frame is drawn is set up for X, Y, and Z rotation, followed by X, Y, and Z translation. This sequence can be altered for each object independently of the others, or individual transformations can be repeated if desired.

DATA ORGANIZATION

The object, to be in a film are described on data cards in the conventional manner - each card contains the three-dimensional coordinates of a point, and these points describe lines according to their input sequence.

A provision is made for deleting a line by a pen-up or no-line indicator on the appropriate data card.

If hidden line elimination is desired, the data mat be plane-oriented. That is, each object array must be divided into subsets of coordinates that describe each face, and the coordinates of each subset muwt be in a plane. An end-of-plane code indicates the last data card of each of these subsets.

HIDDEN LINES

For hidden line elimination, the technique of even and odd intersections ia used to determine whether an end point of a line in question lies within the boundaries of a plane as seen from the viewing point. If the point does lie within the plane (the number of intersections a line extending in any direction from the point makes with the boundaries of the plane is odd), a test is then made to determine whether the point lies in front of or behind the plane as seen from the viewing point. The portion of the line in question that falls within the plane is drawn or not drawn according to this test.

Figure 3

AREAS OF CURRENT AND FUTURE DEVELOPMENT

Additional areas of development concern techniques of curved surface representation or outlining, simplified methods of programming articulated motion, and improvements to a data generator program now being used for simple geometric shapes.

There are two demonstration films accompanying the presentation. The first is a demonstration film produced entirely with the animation program, using the SC-4020 plotter. It illustrates use of a number of objects in motion, as well as techniques for film wipes, windowing, and variable scaling.

The second film contains the results of some experimentation with color gels and backgrounds using an optical printer.