Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ OverviewHistoryCharactron TubeFontsSC4020 SpeedArchitectureTube16mm CameraHardcopyVought CameraOrder CodePrintingDrawingFilm ProductionUAIDE 1970UAIDE Contents 1964-1973 □ UAIDE Papers □ 1968: Honey1968: Sarno1968: Yarbrough □ SC4020 Manuals □ Engineers TrainingInformation ManualProgrammers' Reference Manual □ Other □ Diagrams drawn by computer
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLTechnologySC 4020
ACLTechnologySC 4020
ACL ACD C&A INF CCD CISD Archives
Further reading

Overview
History
Charactron Tube
Fonts
SC4020 Speed
Architecture
Tube
16mm Camera
Hardcopy
Vought Camera
Order Code
Printing
Drawing
Film Production
UAIDE 1970
UAIDE Contents 1964-1973
UAIDE Papers
1968: Honey
1968: Sarno
1968: Yarbrough
SC4020 Manuals
Engineers Training
Information Manual
Programmers' Reference Manual
Other
Diagrams drawn by computer

Experience with CAFE, a New On-Line Computer Animation System

Lynn D Yarbrough, ARCON Corporation, Wakefield, Mass

UAIDE68, October, San Francisco and IFIP68, August Edinburgh

The two papers are very similar with some additional material in the UAIDE paper.

CONTENTS

1. INTRODUCTION

CAFE is a computer drawing and animation system which was designed by Jack Nolan and Lynn Yarbrough and developed for Lincoln Laboratory, by Lynn Yarbrough and R. E. Cushman of ARCON. Running on the IBM 360/67 time-shared computer system under the Cambridge Monitor System (CP/CMS), it enables a user to generate pictorial images in precisely timed sequences through the use of a device-independent language which is discussed in the following pages.

We wish to draw the reader's particular attention to a few features of CAFE which make it unique and especially powerful for movie-making. These are:

  1. The file system, which makes possible the construction of a library of elementary shapes, which can be called upon, copied, modified, combined with other shapes, and displayed at will.
  2. The object description language, which permits the easy definition and modification of the shape, size, orientation, and position of an object.
  3. the scene description, which defines the behavior of a collection of figures (called graphs) in time sequence and independently of the definition of other display elements.

We have made a number of short films with this system and are both pleased with its power as an interactive design tool and aware of some limitations, which we hope to remove.

The implementation is written in two languages:

  1. SNOBOL handles the interactive language transformations
  2. FORTRAN defines the computational aspects

This approach has yielded an effective and easily modified conversational processor and efficient image generation and transformation. However, we regret that PL/1 was not available to us for this project.

2. CAFE SYSTEM

2.1 Notational Conventions

2.1.1 Explanation of terms

CAFE is a CMS program for the on-line construction, editing, and display of figures which consist of collections of straight-line segments, i.e. stick figures. The process consists of the construction of two kinds of files:

  1. graph files which describe a related set of objects, each of which is in turn made up of a collection of line segments connecting pairs of points in three-dimensional space;
  2. display files which describe the dynamic behavior of display elements, each of which is made up of a collection of graphs with common motion parameters.

The files, once they are completely built up by invoking the various commands of the CAFE language, are further processed to produce a recorded Image of the display on the SC-4020 or IBM 2250 graphic display device.

The motion of display elements is defined in terms of a sequence of scenes. For each element, a scene completely specifies the behavior of that element during a specified time interval. The time interval for a given scene is independent of any other time interval for the current element and of any scene for any other element, so the scene description for the display as a whole is completely flexible. Scenes of various lengths provide for continuous change in the position, attitude, and size of an element, independently of the others; instantaneous changes in the position, attitude, and size of an element may be provided by scenes of zero length.

2.1.2 Notational Conventions

Points, objects, graphs, elements, and displays may be given names. Any name may contain any of the alphabetic characters or numerals, and in addition the underscore character(_). These may be used in any combination, within the following length restrictions:

name         char
graph        6
display      6 
object       8 
element      8 
text         8 
legend       8 
point        4 

Single blank spaces amidst alphabetic or numeric strings, e.g. between command names and options, are always significant. Blanks within text or legend. material are always retained. However, blanks adjacent to special characters (parentheses, commas, other blanks, etc.) are ignored and in fact erased by the command interpreter.

Coordinates, angles, and other numeric quantities may be expressed in any form legible to FORTRAN in the F12.0 format specification. Thus any of the following numeric data are acceptable:

1.0 -1 -1234.56789 13.3E+02 

There are no explicit restrictions on the units used in any of the coordinates. The definition of the camera and focal plane permits the use of arbitrary coordinates. However, angles are always expressed in degrees not in radians.

Ambiguities in the use of names within the graph-object-point structural hierarchy are resolved in the following way: If file2 is a graph containing box54 which in turn contains point pt1, then

file2.box54.pt1 

uniquely identifies the point in question. Usually such detail will only be required when dealing with many copies of the same object or graph file.

A visible vector between points a and b is described as a/b, while its invisible counterpart is a*b. Or, actual coordinates could have been included, e.g., a(0,0,0)/b(1,2,3). In the above example, b(1,2,3) causes the specified coordinates x=1, y=2, z=3 to be assigned to b. With these conventions, we can now describe the unit cube as follows:

a(0,0,0)/b(0,0,1)/d(O,1,1)/c(O,1,0)/
g(1,1,0)/h(1,1,1)/f(1,0,1)/e(1,0,0)/
a/c*g/e*f/b*d/h 

The occurrence of a set of coordinates in the string, as above, is interpreted as a command to enter the name and coordinates in a table of points and to elide the point coordinates from the character string. Thus internally the above description would appear as simply

  
a/b/d/c/g/h/f/e/a/c*g/e*f/b*d/h 
a(0,0,0)/b(0,0,1)/d(O,1,1)/c(O,1,0)/g(1,1,0)/h(1,1,1)/f(1,0,1)/e(1,0,0)/a/c*g/e*f/b*d/h Y X Z a b c d e f g h a/b/d/c/g/h/f/e/a/c*g/e*f/b*d/h

The identifiers x,y,z are reserved: they identify single-valued functions whose argument is a point description, and whose value is the corresponding coordinate value of that point. Thus, e.g., if A is at the origin, x(a) = y(a) = z(a) = 0. Also, a line from a, perpendicular to the x-y plane, would be described as a/(x(a),y(a),0).

2.2 CAFE System Files

The CAFE System consists of several files:

  1. CAFE EXEC: controls the execution of the various programs.
  2. CAFE SPL1: Conversational construction of graph files
  3. DSUBR SPL1: Conversational construction of display files
  4. P3 TEXT: Display processor (main program) (P3B TEXT, P3C TEXT, P3G TEXT, P3K TEXT, P3P TEXT, P3S TEXT are subroutines of P3 TEXT)
  5. DECODE SPL1: Subroutine to produce listings of display elements.
  6. CAFE INTER: Communication file between CAFE and DSUBR.

In addition, certain other files are manipulated in the course of execution of the CAFE System:

  1. CAFE.. EXEC: Optionally causes or suppresses the production of graphic output.
  2. CAFE G.xxxxxx: Graph file for graph xxxxxx.
  3. CAFE D.yyyyyy: Display file for display yyyyyy.
  4. CAFE G..DICT: Dictionary of Graph files in use.
  5. CAFE D..DICT: Dictionary of Display files in use.

In starting to use the CAFE System, the user must be sure that the two dictionary files are initialized to contain the single character ;.

2.3 Using CAFE

The CAFE System is started by the CMS command:

$ CAFE

The system responds READY. when loaded, and is then ready to accept any of the commands of the GRAPH environment, or the DISPLAY command. (Either the GRAPH or the DISPLAY command should be the first one issued.) The system response to most commands is OK- XX.XX, where XX.XX is the elapsed time for the execution of the command, in seconds. The system will announce its inability to read a command name not in the set, and errors In syntax are usually announced by the response EH?"; there may be a more specific response to certain types of errors.

After a DISPLAY command has been issued, CAFE is in the display environment and all graph-environment commands are unrecognized except the GRAPH command Itself, which switches environments back again. The PHOTO command causes the current display file to be stored on the disk and the display processing routines to be called, producing a picture of the display. Finally, the END command (which may be issued in either environment) causes CAFE to terminate immediately.

NOTE: Every command must be terminated by a ;, and every command name must be followed by either a blank or the terminating ;. Any command may be written on two or more (80-character) lines, as required, and the ; may be added as an afterthought if it is forgotten. If the keyboard releases after a carriage return, it is because the system is expecting the ; to be typed, or awaiting more information.

It sometimes occurs that an unwanted item appears in one of the graph or display files, due to an error in typing. To facilitate the correction of such errors, the character ¬ appearing before any name (see list in paragraph C below) implies that the name and all associated information In the file are to be erased. Because of the variety of data structures involved, this notational feature may have a number of unique effects, depending on the context in which it appears. The actual effect is described in the context of the particular command in which it appears.

Some of the commands have several options. In use, these options are separated by commas.

3. GRAPH DEFINING COMMANDS

3.1 Introduction

In the following descriptions of command syntax, all displayed punctuation marks with the exception of < and > (which are used to indicate command options) are essential.

The overall context is established by the GRAPH command; object-level context may be established by any of a number of commands , each of which names the object to be defined or modified.

All transformations applied to any object are static and symbolic: they are applied once, at the time that the graph file is interpreted by the picture processing routines (P3 etc.) Thus the transformations may be erased and otherwise modified in the graph file without changing the form of the original object description.

3.1.1 GRAPH

GRAPH name;                (abbr: GR) 

This command sets the context to that of the named graph. If it were previously defined, its definition is read from the disk file. If not, all objects and other properties of the named graph are undefined.

GR ¬name;

will cause the named graph to be erased from the directory, but not from the disk files.

3.2 Object Definition and Editing

An object consists of:

  1. a set of points and their coordinates;
  2. a description of the object, defining the lines which connect the points (actually a continuous path containing all the visible lines, and some invisible connectors, in the object);
  3. a set of transformations which are to be applied before the object is finally displayed.

A point consists of a point name and from one to three coordinates (x,y,z). If one coordinate is given, it is assumed to be x; if two, x and y; zeros are supplied for missing coordinates.

An object description consists of a sequence of point descriptions, separated by line descriptions, as in the example of the unit cube above.

3.2.1 OBJECT

OBJECT obj-name: obj-descr;              (abbr: OB) 

This command defines an object, by listing the vectors (connections between points) which make it up.

Any previously existing description of the specified object is lost.

On completion of the command, all point coordinates given are stored in a table with the associated point names (dummy names are supplied for unnamed points,) and the description of the connections is stored in condensed form.

OBJECT ¬obj-name;

causes the named object, along with its points, vectors, and transformations, to be erased.

3.2.2 POINT

POINT obj-name: pt-name (x,y,z)             (abbr: PT)
               , pt-name (x,y,z), ... ;    

This command defines the coordinates of the named points in the specified object. Other data defining the object are unchanged.

POINT obj-name: ¬pt-name;

causes the named point and its coordinates to be erased from this object. Other objects having points of the same name are unaffected.

3.2.3 REPLACE

REPLACE obj-name: seq1 = seq2;                 (abbr: RP) 

In the condensed form of the description, the literal characters seq1 are replaced by the literal characters seq2. This command permits changes in, or corrections to, the shape of the graph, without changing the definitions of points.

3.2.4 TEXT

TEXT tname: pt descr: 'any text string';                       {abbr: TX) 

A text string is treated as a special kind of object. The characters enclosed in quotes will be displayed so that the first character is centered at the specified point, the remaining characters being typed from left to right.

The string must not, of course, contain the semicolon character. The single quote may be replaced, if desired, by any other character which does not appear in the string, which will permit the use of the single quote as a text character.

Only one line will be typed; if any part of any character lies outside the picture, that character will not be printed. Text may be shifted but not rotated, and its size is controlled by the SIZE command {see below). Regardless of the position of the camera, text always appears upright on the screen.

TEXT ¬ tname;

will cause the named text object to be erased, along with any associated points and transformations.

3.2.5 SIZE

SIZE tname: (horiz, vert); 

This command specifies the character size and aspect ratio for the named text object. A character dimension of 1.0 represents 10% of the actual screen size, which is appropriate for legibility on a movie screen, and will be assumed in the absence of this command.

3.3 Object Transformation

A previously defined object may be translated, rotated, or scaled prior to display by the following commands.

3.3.1 SHIFT

SHIFT obj-name BY pt-descr;              (abbr: SH) 
SHIFT obj-name TO pt-descr;

This command causes the object to be shifted so that (if TO is specified) the specified point would move to the origin, or vice versa; or (if BY is specified) so that the object moves along a vector whose components are the coordinates of the specified point. This is effected by (eventually) subtracting from, or adding to, respectively, all coordinates in the object the coordinates of the specified point.

Example:

SHIFT 1a BY (5,0,0);

will cause all points In the object 1a to be shifted 5 units in the positive X direction.

SHIFT 1a TO pt1(-5,0,0); 

will have the same effect.

3.3.2 ROTATEX

ROTATEX obj-name: transformation;                    (abbr: RX)
ROTATEY obj-name: transformation;                    (abbr: RY)
ROTATEZ obj-name: transformation;                    (abbr: RZ)

The transformation may be in one of two forms:

angle
angle: pt-descr

The ROTATEX command causes rotation of the object about a line parallel to the X (horizontal) axis, passing through the point named, or the origin if none is given. The corresponding commands ROTATEY and ROTATEZ cause rotation with respect to the Y (vertical) or Z (normal) axis.

In each case the positive rotation is clockwise, looking toward the positive axis direction.

3.3.3 SCALE

SCALE obj-name: transformation;                  (abbr: SC) 

This command causes the size of the object to be scaled by a factor about a point named in the transformation.

The transformation may have either of the two forms:

factor
factor: pt-descr

The transformation is achieved by multiplying all the coordinates in the object by the factor (a factor of -1 causes reflection through the point); If a point-description is given, the expansion or contraction is about the named point.

The corresponding commands :

SCALEX                          (abbr: SX)
SCALEY                          (abbr: SY)
SCALEZ                          (abbr: SZ) 

cause the transformation to be effected in the specified direction only; the other coordinates being unaffected by the transformation.

3.3.4 RESET

RESET obj-name; 

All prior transformations of the named object are erased. Note that in all transformations, no actual computation is done until actual display time. The initial state and description of the object are retained. Thus many similar copies of the same object are always available during the file-building process as required.

3.3.5 COPY

COPY new-name: obj-name;                      (abbr: CP)
COPY new-name FROM obj-name;
COPY obj-name TO new-name; 

An exact copy of the object obj-name is made and given the name new-name. All points and transformations are retained. Since this creates another set of point and object descriptions with identical names, the graph.object.point notation described earlier may be required to resolve ambiguities.

3.4 File Processing

The previous commands cause the formation of certain character strings and lists, in the core storage of the computer. In order that the information be stored on the disk in a format suitable for further processing, the following command must be given.

3.4.1 CAFE

CAFE G.xxxxxx

This command causes the creation (or replacement, if it previously existed) of the file xxxxxx, which is the graph name previously established. It also updates the corresponding entry in the file G..DICT, which contains the names of all current graph files.

3.4.2 COPYFILE

COPYFILE new-graph: old-graph        (abbr: CF)
COPYFILE name;

This command makes a copy of the file named old-graph and names it new-graph.

In the second form, a copy is made of the file name and gives the copy the name of the current graph. Any other information in the current graph will be erased by the copying process.

The new file is identical to the original in every way except its name, and may be modified at will. The status of the old file is unchanged.

3.4.3 LIST

LIST obj-name, ...                  (abbr: LS)

The descriptions (line, point and transformation) for the named objects are printed on the console. If no object name is given, all the objects in the graph are listed.

3.5 Changes to Environment

3.5.1 END

END

This terminates the CAFE routine and returns to CMS.

3.5.2 DISPLAY

 DISPLAY dname                     (abbr: DY)
 

This command causes the display file processor to be loaded. After execution of this command, no further graph-environment commands (except GRAPH) are allowed.

4. DISPLAY COMMANDS

4.1 General Remarks

A DISPLAY file consists of a set of elements, each of which has the following attributes:

  1. A set of graphs which form the element.
  2. A scenario consisting of a numbered sequence of scenes.
  3. A Node description, defining the relation of each element to its parent and subject elements.

A display file may also contain one or more legends which structurally resemble elements. Each legend consists of a text string which is displayed in the focal plane according to a scene description of a special type (motion not being permitted. Moving text may be achieved by building an element of graphs which consist of TEXT records.)

A scene consists of a complete description of the behavior of the element during a specific time interval. Scenes are time-wise strung together head-to-tail, providing a complete continuous description.

The node description is a set of pointers: one upward to the parent element, if any, and one to each subject element, if any. The motion of any subject element is added to that of its parent. The relationship may be changed at the beginning of any scene for the subject element, by means of the FOLLOW option.

Many of the commands in this environment have associated options and, in some cases, sub-options which may or may not be present (and may appear in any order) in the commands. The absence of any option of course implies that an appropriate default value of the optional parameter has been supplied.

4.2 DISPLAY

DISPLAY name;                          (abbr: DY) 

causes the file D.name to be created or loaded for examination or modification if it already exists.

DISPLAY ¬ name;

will cause the given display name to be erased from the display directory but not from the disk files.

4.3 ELEMENT

ELEMENT name: graph1, graph2 ...;                 (abbr: EL)

Within the context of the current display, this command sets the context of future commands to the named element, and lists its component graphs.

ELEMENT  ¬ name;

will cause the named element to be erased from the display.

ELEMENT name: ¬ gr-name;

will cause the named graph to be disassociated from the named element if it was previously associated.

4.4 LEGEND

LEGEND name: <options>, 'text string' ;           (abbr: LEG )

Builds a legend to be displayed on the focal plane of the camera.

LEGEND ¬ name;

causes a previously defined legend-element to be erased.

The same restrictions hold here as for text; i.e. the semicolon character is illegal, and the single quote may be replaced by any character not appearing In the string. A single line will be printed, excepting characters which fall partially or wholly outside the focal plane area.

4.4.1 Options

LOCATION(x, y)
LOC(x, y)

Gives the location of the first character in the string.

SIZE (width, height) 

gives the width and height of the characters. (1.0 represents 10% of the screen size.)

4.5 SCENE

SCENE <options>                           (abbr: SN, notSC1)
SCENE n: <options>

Defines the next scene in sequence for the current element, or (if n is given) modifies scene n.

4.5.1 Options

LIKE (element name, scene no.) 

The named scene is copied, and may be modified by subsequent options.

DURATION (length) 

specifies the length of the scene, in seconds.

MOVE < >                    (abbr: MV)
MOVEX <TO> (data)           (abbr: MX)
MOVEY <AT>                  (abbr: MY)
MOVEZ                       (abbr: MZ)

Causes the current element to be translated to another place during the scene. If no sub-option is given, the motion is relative to its position at the start of the scene. If TO, motion is absolute. If AT, the data specifies the rate of motion to be used during the course of the scene.

SPINX < > (data)            (abbr: SPX)
SPINY <AT>                  (abbr: SPY)
SPINZ                       (abbr: SPZ)

Causes the current elements to rotate about the named axis during the scene. Null and AT sub-options are as above.

ZOOM                       (abbr: ZM)
ZOOMX < >                  (abbr: ZX)
ZOOMY <AT> (data)          (abbr: ZY)
ZOOMZ                      (abbr: ZZ)

Causes the element to change size in the specified dimension(s). The data is a multiplicative scale factor to be applied to the graphs in the element, about the element origin.

FOLLOW (element name)      (abbr: FW) 

Causes the behavior of the current element to depend on the named (parent) element; transformations of the parent are added to those of the current element.

VISIBLE                       (abbr: VIS) 
INVISIBLE                     (abbr: INVIS) 

Sets the visibility code for the entire element, to hold for the duration of the scene. Visibility codes in the original graph definitions are not changed,

BLINK (rate)                  (abbr: BL) 

Causes the element to blink off and on at the specified number of frames/sec. (usually to draw the viewer's attention to the element.)

LIGHT (intensity)             (abbr: LITE or LT)

Causes repetitive display, for emphasis.

LIGHT (0) has the same effect as INVISIBLE. Intensity is implemented in the SC-4020 by over-striklng; values of 0,1,2, or 3 are permitted.

4.6 CAMERA

CAMERA <options>;             (abbr: CAM) 

This command describes the characteristics of the projector to be used, e.g., frame rate, and the location and orientation of the hypothetical camera (or other output device) used to capture the images. The projection used is a simple perspective, where the focal characteristics may be defined through the various objects. The projection assumes the Y-axis to be always in the same plane as the vertical axis of the focal plane; thus the location of the camera must not be on the Y-axis.

4.6.1 Options

LOCATION (X,Y,Z)              (abbr: LOC)

locates the aperture of the camera in the coordinate system of the pictorial elements. (Y = 0 is prohibited; see above.)

SPEED (frames/second)         (abbr: SPD)

Defines speed of the projector. The basic unit is one second of viewer time.

AIM (X,Y,Z)

Defines the direction in which the camera is pointed.

FOCUS (F, dx, dy)            (abbr: FOC) 

Defines the distance F from the picture plane to the aperture, and dimensions: dx and dy, of the picture plane:

(dx,dy) (-dx,-dy)

4.7 PHOTO

PHOTO <options>;            (abbr: PH )

This command causes the actual recording of the pictorial images on some device and describes the type of projection model to be applied.

4.7.1 Options

ON (unit)

Defines the output device: 4020 or 2250.

SNAP (time) 

Provides a single picture of the images as they appear at the specified time.

RUN (time) 

Provides a movie of the images from t=0 until t=time.

4.8 LIST

LIST <name list>;                 (abbr: LS)

If the name list contains the word CAMERA, the camera record will be printed online. In addition, the complete list of scenes will be printed for any element whose name appears in the list, or, if the list is empty, for all the elements in the current display.

4.9 FILE

FILE; 

The FILE command causes the current display to be stored on the disc and the file CAFE D..DICT to be updated. The display remains in core, however, and may be further modified or expanded.

4.10 END

END; 

This command terminates the CAFE program immediately and returns control to CMS. No Image processing takes place and any unfiled information will be lost.

SUMMARY OF CAFE COMMANDS AND OPTIONS AND ABBREVIATIONS

GRAPH   name ;                          GR 
OBJECT  name  : descr                   OB 
POINT   oname : ptlist;                 PT 
REPLACE oname : str1=str2 ;             RP 
TEXT    tname : ptdescr:'text'; 
SIZE    tname : (hor,ver); 
SHIFT   oname   <option>                SH 
        TO point; 
        BY vector; 
ROTATEX oname : angle;                  RX 
              : angle: point; 
ROTATEY                                 RY 
ROTATEZ                                 RZ 
SCALE   oname : factor;                 SC 
              : factor: point; 
SCALEX                                  SX 
SCALEY                                  SY 
SCALEZ                                  SZ 
RESET   oname ; 
COPY old-obj TO new-obj ;               CP 
     new-obj FROM o1d-obj; 
COPYFILE name;                          CF 
- - - - - - - - - - - - - - - -  - - -
DISPLAY name;                           DY
ELEMENT name;                           EL 
        name: grlist;
LEGEND  name: <options>                 LEG
        AT (x,y) 
        SIZE(hor,ver) 
SCENE   <options>;                      SN
SCENE n: <options>; 
        FOLLOW (elname)                 FW 
        MOVE    <suboption> (data)      MV 
                < >
                <TO> 
                <AT> 
        MOVEX                           MX
        MOVEY                           MY
        MOVEZ                           MZ
        SPINX <suboption>(data)         SPX
        SPINY                           SPY
        SPINZ                           SPZ
        ZOOM  <suboption>Cdata)         ZM
        ZOOMX                           ZX
        ZOOMY                           ZY
        ZOOMZ                           ZZ
        VISIBLE                         VIS
        INVISIBLE                       INVIS
        LIGHT (n)                       LT,LITE
        BLINK (rate)                    BL
        CAMERA <options>                CAM
              LOCATION(x,y,z)           LOC
              FOCUS (f, dx, dy)         FOC
              AIM (x,y,z) 
              SPEED (f/sec)             SPD
        PHOTO <options>                 PH
              ON (unit) 
              SNAP (time) 
              RUN (time) 
- - - - - - - - - - ~ - - - - - - - - - 
        LIST                            LS   *
        FILE                                 *
        END                                  *

* Indicates commands which may be used in either environment.

⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site