Introduction
Colin Emmett and Alan Kitching were early users of the computer graphics facilities at the Atlas Computer Laboratory. The main requirements they had were a device for inputting drawings (a D-MAC pen follower), a fast computer (Atlas and later the ICL 1906A) and a means of outputting graphical images on to film (SC4020).
2. Image Capture
2.1 Inputting Drawings via the D-MAC
The D-MAC pencil follower allowed the operator to input the coordinates of a drawing by either a point at a time, lines between two points, or a sequence of points making up a shape. Commands output from the D-MAC could indicate the type of output being generated. The coordinate pair output had the form:
Exxxx Fyyyy
E indicated a 4-digit X-value and F indicated a 4-digit Y-value. A typical output would be something like:
PAGE,1 ORIGINS E5882 F1013 E7972 F0997 E7979 F1996 E5892 F2009 TRACK,CURVE E5985 F1111 E6085 F1247 E6187 F1345 E6282 F1370 E6387 F1186 E6484 F1160 E6584 F1256 E6678 F1445 E6782 F1614 E6885 F1768 E6981 F1868 E7084 F1918 E7185 F1868 E7284 F1765 E7380 F1645 E7477 F1535 E7576 F1442 E7676 F1342 E7777 F1252 E7875 F1180
D-MAC Path Drawing
Thus the D-MAC gave the user the ability to input the coordinates of a graphical outline. The initial implementation towards ANTICS was to specify a curve by a set of line segments and make it a closed curve by adding a point back to the opening point. No constraint was placed on the outline input so it was possible for the outline to cross over itself.
Simple Outline
It soon become apparent that such outlines were quite limited and so an object was allowed to consist of a group of outlines. Here is an example with three outlines of 44, 17 and 9 coordinates giving output on the Antics 1000 by 1000 grid
200 800 256 794 314 777 371 753 425 723 471 690 508 656 533 624 542 596 529 584 496 588 451 602 426 610 401 617 423 590 446 564 468 538 491 512 460 509 406 512 364 526 323 569 335 509 369 471 426 456 463 457 506 464 527 426 528 385 509 351 470 338 382 343 300 360 226 387 162 424 109 471 69 527 43 593 35 668 47 720 81 762 134 790 165 797 200 800 235 770 263 764 282 750 293 730 295 707 289 683 277 663 258 649 235 644 200 649 177 663 165 683 163 707 170 730 185 750 207 764 235 770 260 746 282 737 290 719 282 700 260 692 243 700 237 719 243 737 260 746
Group of Outlines
Finally, the aim was to generate coloured areas not outlines so that there was a need to generate Fortran routines that could take the group of outlines as a single area and decide what part of the area is inside and which is outside. At the time, the only algorithm used was to take a line from infinity to a point and if it met the outlines an odd number of times it was inside and if it did not meet the group of outlines or met it an even number of times it was inside. The decision was made to create the filled area by drawing a series of vertical lines two raster positions apart on the SC4020 to fill the area (the SC4020 vertical lines were about 2 raster positions wide).
Coloured Group of Lines
2.2 Image Library
Images captured via the D-MAC were stored in an image library for future use. The creation of animated sequences tended to consist of defining a number of key frames much the same as in conventional animation. These intermediate frames were also added to the library and called on when required.
3. Transformations
3.1 Introduction
A major influence on Antics was the Computer Image Scanimate system albeit from quite different backgrounds. Scanimate had proved a major supplier of short TV adverts in the USA and elsewhere using a computerised analogue system for manipulating video images. Art work was captured and then manipulated via analogue transformations of the image with good control over the timing of sequences.
The Antics equivalent was to define a set of transformations of the captured X-Y definitions of objects both in the X-Y plane and the time domain.
Simplifying the problem, images are defined on an infinite plane with a 1000 × 1000 area visible. For a 4-second animation, about 100 separate frames are needed that vary over time. Thus the captured images needed to be transformed both in the X-Y coordinate space and the time dimension.
For a 4-sec animation, the array of C(X,Y) coordinates for each object needed to be transformed into C(X,Y,t) for t=1,100.
3.2 Transformations of Objects in Space and Time
Transformations to be applied to objects are defined with respect to fractions of the size of the object. For example, the height of the object might be halved keeping the centre at the same position. Once defined, that transformation could be applied to a range of different objects of different sizes and positions.
The process is reasonably complicated for each animation sequence:
- Define the images needed for the animation at key frames in the sequence
- Calculate any transformations to be applied to the image coordinates for these images
- Define the interpolations required to produce the images for any intermediate frames
ANTICS allows different objects to have quite different animations so that individual objects may have several transformations applied in order.
The example below is a recreation of an early ANTICS demo showing off various effects. Over the following period more and more effects were added to the repertoire. All were transformations of the coordinates making up objects and pseudo 3D was even added by this process.
Transformations of Scale, Rotation, Translation, Timing and Coordinate Transformations
3.3 Inbetweening
In most animations there is a need to change one object into another. If the two objects have the same substructure and the number of points in each object are the same then, in theory, it is a simple operation of interpolating coordinate positions over a set of frames. But it is never that simple for several reasons:
- The number of points in two images is seldom the same. A face moving may make a second eye come into view thus changing the number of sub-objects.
- Unless the two images were created with the expectation that they would be transformed from one to the other then the starting position will almost certainly be different.
- SCANIMATE also had the same problem and it was replaced by CAESAR (Computer Animated Episodes with Single Axis Rotation). Often the intermediate positions are not a simple interpolation. Both the National Film Board of Canada and Computer Image had added point rotations to solve the problem.
The three examples below illustrate the problem of morphing the duck into a cat and back. The number of points in each image are the same. The cat is drawn starting at the top centre. The top duck is started at the tail and is drawn clockwise, the same as the cat. The bottom left has the origin starting at the top of the duck's head and drawn clockwise while the one on the bottom right is drawn anti-clockwise.
There are significant differences in each animation.
Changing a duck to a cat and back
The problem that often arises is that the two drawings have different numbers of points and there are various ways of solving the problem, several of which were used by Antics:
- Add points to the image with the smallest number of points until they are the same. The easiest way giving reasonable results is to add zero length vectors spaced around the image.
- An alternative is to divide long lines in two in the image with less points until the number is the same.
- More sophisticated transformations include transforming the two images into two evenly spaced sequences of lines with the individual lines in the image of similar length.
ANTICS initially had quite simple inbetweening effects but the constraints were relaxed until almost any object could be inbetweened into another.
3.4 Image Transformation and Timing Effects
The early version of ANTICS was reasonably simple in the FX tranformations (FX meaning EFFECTS!) available but the system was under constant enhancement over a number of years until a large range of effects could be used in generating animations. Some examples are:
- SCALEX, SCALEY
- These two FXs define scaling transformations about the horizontal and vertical defined
with respective to the centre or some other position.
- PAN, ZOOM
- These two FXs define the basic movements across the screen and the view. Note that the changes
being made are linear in the sense that half-way through the set of frames the position reached is
half way through the change in position or size.
- STEADY, SMOOTH
- As well as defining the position and shape of objects, how far these changes have taken place in time can also be
defined. STEADY is the linear movement mentioned above. If the movement is 0.4 through the changes made then the timing will be 0.4 through as well.
Movement of objects that appear to have mass tend not to jirk forward at the start but gradually pick up speed and similarly
the object slows down as it is getting close to its final position. SMOOTH achieves that effect.
In the movements below the first half is STEADY and the second half is SMOOTH for the PAN and the ZOOM.
- RANDOM
- Random alterations to an object were added:
Over the years the number of FXs rose to over 50 including 3D effects, inbetweening and skeleton animation.