This property of notation allows the process of progressive refinement ... theatrical knowledge in animation characters, and less empha- sis on complex graphics.
C o m p u t e r A n i m a t i o n w i t h Scripts a n d Actors b y C r a i g W. R e y n o l d s Information International Inc.
Abstract
Introduction
A t e c h n i q u e and p h i l o s o p h y for controlling c o m p u t e r animation is discussed. Using the Actor/Scriptor Animation System (ASAS) a s e q u e n c e is described by the a n i m a t o r as a formal w r i t t e n SCRIPT, w h i c h is in fact a p r o g r a m in an animat i o n / g r a p h i c language. Getting the. desired a n i m a t i o n is t h e n equivalent to "debugging" the script. Typical images m a n i p u lated w i t h ASAS are synthetic, 3D perspective, color, s h a d e d images. However, the a n i m a t i o n control t e c h n i q u e s are indep e n d e n t of the underlying s o f t w a r e and h a r d w a r e of the display system, so apply to o t h e r types (still, B&W, 2D, line d r a w i n g ...). D y n a m i c (and static) g r a p h i c s are based on a set of geometric object data types and a set of geometric o p e r a t o r s o n these types. Both sets are extensible. The o p e r a t o r s are applied to the objects u n d e r the control of m o d u l a r a n i m a t e d p r o g r a m structures. These s t r u c t u r e s (called a c t o r s ) allow parallelism, independence, and optionally, synchronization, so that they can r e n d e r the full range of the time s e q u e n c i n g of events. Actors are the e m b o d i m e n t of imaginary players in a simulated movie. A type of a n i m a t e d n u m b e r can be used to drive geometric expressions (nested geometrical operators) w i t h d y n a m i c p a r a m e t e r s to p r o d u c e a n i m a t e d objects. Ideas f r o m p r o g r a m m i n g styles used in c u r r e n t Artificial Intelligence research inspired the design of ASAS, w h i c h is in fact an extension to the Lisp p r o g r a m m i n g e n v i r o n m e n t . ASAS w a s developed in an academic r e s e a r c h e n v i r o n m e n t and m a d e the transition to the "real world" of c o m m e r c i a l m o t i o n g r a p h i c s production.
This p a p e r describes the Actor/Scriptor Animation System (ASAS), w h i c h is a w a y of thinking about and describing c o m p u t e r g r a p h i c animation. ASAS is basically a notation for a n i m a t e d graphics. The n o t a t i o n for an a n i m a t e d s e q u e n c e (the script) can be automatically read and converted into a n i m a t e d images by an ASAS interpreter. As in the case of musical notation being interpreted by a g r o u p of m u s i c i a n s - - o r the script of a video p r o d u c t i o n being executed by a host of actors, camera, audio, lighting and video technicians--ASAS allows the creation a n d use of any n u m b e r of simulated particpants, "actors" each of w h i c h can control one or m o r e aspects of the animation. The ability of ASAS a c t o r s to operate i n d e p e n d e n t l y or (by c o m m u n i c a t i n g w i t h each other) to act in s y n c h r o n i z a t i o n allows a simple and u n a m b i g u o u s description of the f u n c t i o n of each actor. ASAS differs f r o m "performance" based real time c o m p u t e r g r a p h i c s s y s t e m s as well as f r o m c o m m a n d o r "menu" based systems. Writing the ASAS n o t a t i o n for an a n i m a t e d s e q u e n c e will p r o b a b l y take longer t h a n the final r u n n i n g time of the sequence. On the o t h e r hand, an ASAS script is typically m o r e c o m p a c t t h a n a simple listing of the value of all relevant p a r a m e t e r s for each frame, as m i g h t be r e q u i r e d in a c o m m a n d m e n u system. This results f r o m the fact that ASAS is a p r o c e d u r a l notation, a p r o g r a m m i n g language for a n i m a t i o n and graphics. I n fact ASAS is a "full" p r o g r a m m i n g language a n d includes all of the typical m o d e r n s t r u c t u r e d p r o g r a m m i n g features (procedures (recursive), local variables, "if t h e n else"s loops, typed data s t r u c t u r e s a n d generic operators). Additionally ASAS s u p p o r t s i n d e p e n d e n t , parallel, "animated" p r o g r a m s t r u c t u r e s (actors), and includes a rich set of geometric and p h o t o m e t r i c objects a n d generic o p e r a t o r s o n these objects.
CR Categories and Subject Descriptors: 1.3 [Computer Graphics]; !.3.5 [CG]: Computational Geometry and Object Modeling; 1.3.6 [CG]: Methodology and Techniques--Languages; 1.3.7 [CG]: Three-Dimensional Graphics and Realism--Animation' General Terms: Design, Languages Additional Key Words and Phrases: Lisp, Procedural Animation Languages, Motion Picture Production Author's addresses; US Mail: III, 5933 Slauson Ave., Culver City, CA 90230 ARPAnet mail: Reynolds@Rand-AI Uocp network mail: ucbvax!randvax!reynolds
The existence of a formal n o t a t i o n for a field of e n d e a v o r leads to a w o r k a b l e p r o c e d u r e for the d e v e l o p m e n t of an idea. Like an algorithm being debugged by a c o m p u t e r p r o g r a m m e r , o r a musical score being revised, an ASAS script being developed is b o t h u n a m b i g u o u s a n d precisely modifiable. It is possible to c h a n g e just o n e small aspect w h i l e keeping everything else exactly the same. This p r o p e r t y of notation allows the p r o c e s s of progressive refinement ("tweaking") to be u s e d to converge o n the desired algorithm, m u s i c or animation.
Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission.
© 1982
ACM 0-89791-076-1/82/007/0289
History ASAS w a s developed at the Architecture Machine G r o u p at MIT as t w o thesis projects b e t w e e n 1975 and 1978 [24,24]. "ASAS 0" w a s not a full i m p l e m e n t a t i o n , b u t "ASAS 1" did actually work,
$00.75
289
giants" b e c a u s e of its relationship to the p r o g r a m m i n g language Lisp. ASAS can be c o n s i d e r e d to be either i m p l e m e n t e d in, or an extension to, Lisp. The rich p r o g r a m m i n g e n v i r o n m e n t of ASAS is d u e largely to Lisp, since all Lisp primitives a n d utilities are usable f r o m ASAS (and vice versa). A Lisp i n t e r p r e t e r p l u s the ASAS s o f t w a r e yields an ASAS interpreter. ASAS w a s developed under MagicSixLisp at The Architecture Mac h i n e G r o u p at MIT a n d w a s painlessly t r a n s p l a n t e d to r u n u n d e r MIT MacLisp at III. For a long time Lisp h a s h a d a r e p u t a t i o n as s o m e w h a t of a "toy" language, a p o w e r f u l b u t q u a i n t tool u s e d by g n o m i s h academic artificial intelligence researchers, b u t not a language really suited for c o m m e r c i a l use. These critisisms are misdirected, Lisp is o n e of the m o s t elegant and useable algorithmic n o t a t i o n s ever devised. The bad r e p u t a t i o n is d u e m a i n l y to p o o r i m p l e m e n t a t i o n s o r u n d e r p o w e r e d c o m p u t e r s . Because Lisp trades off r a w c o m p u t a t i o n a l efficiency for expressive p o w e r and usability, a well designed i n t e r p r e t e r and a fast m a c h i n e are r e q u i r e d for a p r o d u c t i o n e n v i r o n m e n t . Today there are several good Lisp s y s t e m s for various types of general p u r p o s e c o m p u t e r s (MacLisp [20], InterLISP [29], ...) and currently three firms are selling specially designed Lisp m a c h i n e s (Lisp Machine Inc., Symbolics Inc., a n d Xerox)
Figure 1: An Arch Fractal despite a very s l o w a n d u n i n t e r e s t i n g display package. In 1979 ASAS w a s integrated into the Digital Scene Simulation s y s t e m of I n f o r m a t i o n International Inc. c I I r ' , "tripled"] in Culver City, California. In this instance, ASAS is not u s e d to m a k e images directly, b u t serves as a p r e p r o c e s s o r for tit's existing 3D, h i d d e n surface and s h a d e d g r a p h i c s system. Hence "ASAS 2" f u n c t i o n e d as a true language compiler, translating f r o m the a n i m a t o r ' s s c r i p t to the c o m m a n d s e q u e n c e for the display software. The i n c o n v e n i e n c e of having the display s u p p o r t in a s e p a r a t e s o f t w a r e package is offset by the m u c h w i d e r range of g r a p h i c features m a d e available to the ASAS u s e r t h r o u g h the very advanced III software. After t h r e e y e a r s of c o m m e r c i a l use the s y s t e m w a s refined and b e c a m e "ASAS 3". The c u r r e n t reference for the language is the u n f i n i s h e d ASAS U s e r ' s
ASAS E x p r e s s i o n s ASAS a n d Lisp use a simple, if u n u s u a l , notation. A "parenthesized prefix notation" is u s e d for operators, control s t r u c t u r e s a n d data. An ASAS e x p r e s s i o n is either: (1) a n u m b e r (2) a s y m b o l ("variable") (3) a p a r e n t h e s i z e d list of e x p r e s s i o n s . If the e x p r e s s i o n is a list, the first (leftmost) thing is the n a m e of an o p e r a t o r (or "function") a n d any o t h e r e x p r e s s i o n s in the list are p a r a m e t e r s for the operator. W h e n an e x p r e s s i o n is evaluated (or "executed"), n u m b e r s evaluate to themselves, s y m b o l s to their currently defined value, and a list (eg: "(plus a (abfl b))" ) evaluates to the result of a p p l y i n g the o p e r a t o r ("plus ~) to the recursively evaluated p a r a m e t e r s (values of "a" a n d " ( a b s b)"). For example, to define the s y m b o l ~wheels" to be the n u m b e r of tricycles times 3, w e w o u l d write:
Manual 3.0. [26] The design of ASAS w a s influenced by s o m e c o n c e p t s f r o m r e s e a r c h in the Artificial Intelligence field. The basic c o n c e p t of g r a p h i c databases a n d a n i m a t i o n scripts as p r o g r a m s (procedural e m b e d d i n g of knowledge) w a s i n s p i r e d by Terry W i n o g r a d ' s p i o n e e r i n g w o r k in c o m p u t e r linguistics. In Winograd's s y s t e m n a t u r a l language w a s r e p r e s e n t e d by a p r o c e d u r a l data structure. [30] The c o n c e p t of m e s s a g e p a s s i n g a c t o r s w a s f r o m Carl Hewitt's b o d y of w o r k in ~actor s y s t e m s ° s u c h as PLASMA. [12,13,14] (Similar c o n c e p t s exist in Smalltalk [11], Simula [5] a n d Modula [32].)
(define wheels
(times tricycles 3))
An a n i m a t i o n s y s t e m in d e v e l o p m e n t at a b o u t the s a m e time as ASAS by Ken Kahn s h a r e d s o m e c o n c e p t s w i t h ASAS. [16,17] K a h n ' s s y s t e m h a d w h a t Hewitt calls a " u n i f o r m actor basis" a n d so p e r h a p s a theoretically "cleaner" structure. K a h n ' s w o r k placed m o r e e m p h a s i s o n e m b e d d i n g c o m m o n - s e n s e a n d theatrical k n o w l e d g e in a n i m a t i o n characters, and less e m p h a sis o n c o m p l e x graphics.
Normal ASAS o p e r a t o r s (like times) evaluate each of their p a r a m e t e r s , w h i l e certain o p e r a t o r s have special evaluation p a t t e r n s (like define, w h i c h does not evaluate its first p a r a m e ter, these are called "macros"). To define a s i m p l e o p e r a t o r (call it "thrice") w h i c h multiplies its single p a r a m e t e r ('x") by three:
(defop thrice (param: x) (times x 3))
ASAS and Lisp As a p r o g r a m m i n g language, ASAS "stands o n the s h o u l d e r s of
290
(define houses (group red-house yellow-house brown-house))
an equivalent definition in MacLisp w o u l d be:
(defun thrice (x) (times x 3))
The "point of view" object (pov) is used to define the p o i n t of v i e w of an o b s e r v e r (for example the ASAS camera) or of an object. That is, a p o v describes the three coordinate axis basis vectors and the position of the origin of an arbitrary coordinate space. We refer to s u c h spaces by n a m e s like "eye space" and "an object's local coordinate space". Note: a pov plays a role very similar to a "4X4 h o m o g e n e o u s t r a n s f o r m matrix" in o t h e r 3D g r a p h i c s s y s t e m s (there is a s i m p l e t r a n s f o r m a t i o n f r o m a pov to a 4X4 matrix) b u t a p o v is a geometrical object c o m p o s e d of vectors and can be m a n i p u l a t e d just like any o t h e r object.
The first e x a m p l e could t h e n be rewritten:
(define wheels (thrice tricycles)) Special Symbols Within a script certain aspects of the p r o d u c t i o n are controlled by the values given to s o m e special symbols. None of these s y m b o l s are actually "reserved words", but it is best to use the script symbols background and camera only for the p u r p o s e of defining the c u r r e n t c o l o r of the graphical b a c k g r o u n d of the image and the c u r r e n t c a m e r a description (as a pov, see the section on geometric objects). The initial ASAS e n v i r o n m e n t h a s o t h e r s y m b o l s defined to various frequently u s e d objects (axes, colors, basic solids), it is good practice to k n o w these and avoid redefining them.
A s u b w o r l d is an object associated w i t h a p o v . This allows ASAS to m a n i p u l a t e a c o m p l e x object by modifying only the pov, h e n c e various "instances" of an object m a y s h a r e the s a m e underlying data. S u b w o r l d s also allow ASAS to w o r k w i t h "levels of abstraction" in a g r a p h i c database, w h e n a subworld is f o r m e d it notes the "overall size" and "typical color" of its contents. At display time this allows efficient tree s t r u c t u r e d clipping ( w h e n an entire s u b w o r l d is offscreen) and h a n d l i n g of detail too small to see ( w h e n an entire s u b w o r l d lies w i t h i n a single pixel). [4] Hence the u s e r can build levels of abstraction
Geometric Objects In addition to the data types f o u n d in m o s t p r o g r a m m i n g languages, ASAS provides a set of geometric (and photometric)
objects: vector, color, polygon, solid, group, pov, subworld, and light. The vector r e p r e s e n t s a position in three d i m e n s i o n a l Cartesian space. It allows three parameters, the X, Y and Z coordinates. Trailing zero coordinates m a y be omitted. A color object m a y be specified either by its Red, Green and Blue c o m p o n e n t s , o r by Intensity, Hue, Saturation. The t w o o p e r a t o r s are called rgb a n d ihs, each of w h i c h accept three n u m b e r s b e t w e e n 0 and 1. A s i m p l e polygon contains a color and a list of v e c t o r s , the "boundary". The cut-hole o p e r a t o r allows the c o n s t r u c t i o n of polygons w i t h "holes and islands" (that is, multiple boundaries). The color can be a group of a front color and a back color. The b o u n d a r y p o i n t s m a y be listed separately or as a group of vectors. Here is a p o l y g o n e x p r e s s i o n for a certain blue triangle:
(polygon blue (vector 1 0 O) (vector 0 1 O) (vector 0 0 1)) A solid r e p r e s e n t s a b o u n d e d region of space, a closed p o l y h e d r o n . It is c o m p o s e d of vertices and faces (as v e c t o r s and p o l y g o n s ) in addition to topological c o n n e c t i o n information. Several geometric objects can be "glued together" into a g r o u p object, w h i c h is t h e n m a n i p u l a t e d as a w h o l e by the geometric operators. A group e x p r e s s i o n allows any n u m b e r of p a r a m e t e r s -geometrical objects to be grouped together, including o t h e r groups.
Figure 2:
(defop
H o w to m a k e an A r c h Fractal
(~iven an arch element).
arch-fractalizer
(param: (local:
arch-element top-color bot-color levels fractal-ratio height width leg-width) (total-levels (offset-dist (sub-tower-offset-1 (sub-tower-offset-2
(arch-tower
levels) (half (dif width leg-width))) (vector offset-dist 0 0)) (mirror x-axis sub-tower-offset-I)))
levels))
(defop arch-tower (param:
levels)
(if (zerop
levels)
(then nothing) (else (add-arch-level
(arch-tower (dif
levels 1))))))
(defop add-arch-level (param:
sub-tower)
(grasp sub-tower (scale fractal-ratio) (move (vector 0 height 0)) (rotate 0.25 y-axis)) (grasp arch-element (recolor (interp (quo levels total-levels) bot-color top-color))) (subworld
291
(group arch-element (move subtower-offset-1 sub-tower) (move subtower-offset-2 sub-tower))))
in to a g e o m e t r i c d a t a b a s e by the n e s t i n g of subworld objects.
tortoise) w a s first u s e d by J i m Stansfield a n d t h e n r e f i n e d b y
Objects to be s e e n in s h a d e d i m a g e s are i l l u m i n a t e d by light objects. L i g h t s are c o m p o s e d of a p o s i t i o n v e c t o r a n d a color.
g o o d t r e a t m e n t of t h i s s u b j e c t c a n be f o u n d i n [1]. U s u ally
H e n r y L i e b e r m a n in a 3D l i ne d r a w i n g e x t e n s i o n to LOGO. A objects w i l l be d e f i n e d so t h a t t h e o r i g i n of t h e i r local c o o r d i n a t e
Geometric O p e r a t o r s
s p a c e is at t h e c e n t e r of t h e object. For t h i s r e a s o n w e w i l l i n f o r m a l l y re fe r to t h e "origin of t h e local c o o r d i n a t e s y s tem "
ASAS's g e o m e t r i c o p e r a t o r s are t h e tools t h e a n i m a t o r u s e s to s h a p e , m o v e a n d o r i e n t objects. An o b j e c t ' s s h a p e m a y c o m e d i r e c t l y f r o m t h e a c t i o n of o p e r a t o r s , o r p a r t s e n c o d e d by h a n d w i t h a d i g i t i z e r c a n be a s s e m b l e d w i t h t h e o p e r a t o r s . T h e s a m e o p e r a t o r s are u s e d b o t h for static a r r a n g e m e n t s , or to c r e a t e a n i m a t e d m o t i o n , by o p e r a t i n g f r a m e by f r a m e u n d e r t h e c o n t r o l of an actor.
as t h e "center". Local o p e r a t o r s a re p r o v i d e d for m o v i n g , rotating, s c a l i n g a n d "zooming" r e l a t i v e to t h e local c o o r d i n a t e s y s t e m . All of t h e s e o p e r a t o r s a c c e p t o n e or t w o p a r a m e t e r s , t h e s e c o n d o p t i o n a l p a r a m e t e r is t h e object to o p e r a t e on, if n o n e is specified, t h e c u r r e n t l y g r a s p e d object is r e d e f i n e d . Note: t h e r e l a t i o n s h i p b e t w e e n g l o b a l a n d local o p e r a t o r s is
In m a n y c o m m a n d / m e n u b a s e d g r a p h i c s s y s t e m s it is difficult to p r e c i s e l y s p e c i f y t h e c o r r e c t o r d e r i n g of g e o m e t r i c transform a t i o n . For e x a m p l e , t h e r e w i l l be a "rotate" c o m m a n d w h i c h a c c e p t s t h r e e n u m b e r s , t h e a n g l e s of r o t a t i o n for e a c h axis. Often t h e r e is no m e n t i o n of in w h a t o r d e r t h e r o t a t i o n s a r e a p p l i e d , let a l o n e a w a y to s p e c i f y t h e d e s i r e d order. In ASAS, t h e a n i m a t o r e x p l i c t l y d e t e r m i n e s t h e o r d e r i n g of o p e r a t i o n s by th e s t r u c t u r e of t h e n e s t i n g of t h e e x p r e s s i o n s w r i t t e n in t h e
s i m i l a r to t h e t h a t of pre- a n d p o s t - m u l t i p l i c a t i o n of t r a n s f o r m m a t r i c e s . Also note: w h e n obj e c t s o t h e r t h a n f l u b w o r l d s o r p o v s a re p a s s e d to self r e l a t i v e o p e r a t o r s t h e y a re first p u t in to a n i d e n t i t y ("home") s u b w o r l d , t h e n o p e r a t e d on. Local o p e r a t o r s :
g row shrink forward backward left right up down cw ccw zoom-in zoom-out local-move local-stretch home
script. T h e b a s i c o p e r a t o r s are ~generic", t h e y c a n be g i v e n a n y t y p e of g e o m e t r i c object a n d o p e r a t e on it as is a p p r o p r i a t e for t h a t o b j e c r s type. ASAS o p e r a t o r s NEVER m o d i f y t h e object t h e y a re o p e r a t i n g on. T h e v a l u e r e t u r n e d by a n o p e r a t o r is a g e o m e t r i cally m o d i f i e d c o p y of the o r i g i n a l object w i t h o t h e r w i s e t h e same type and structure. A n o t a t i o n a l s h o r t h a n d is p r o v i d e d for t h e c o m m o n o c c u r e n c e of a s e r i e s of o p e r a t i o n s to be p e r f o r m e d o n a s i n g l e object. The object to be o p e r a t e d u p o n c a n be m a d e t h e "current" object (using th e grasp operator). The "grasped" object w i l l t h e n be r e d e f i n e d by calls to o p e r a t o r s w h i c h do n o t e x p l i c i t l y s p e c i f y an object to o p e r a t e on.
s c a l e u p a b o u t local c e n t e r s c a l e d o w n a b o u t local c e n t e r m o v e a l o n g local +Z axis m o v e a l o n g local -Z axis r o t a t e to left a b o u t local Y axis r o t a t e to r i g h t a b o u t local Y axis r o t a t e u p w a r d a b o u t local X axis r o t a t e d o w n w a r d a b o u t local X axis r o t a t e c l o c k w i s e a b o u t local Z axis r o t a t e c o u n t e r - c l o c k w i s e a b o u t local Z axis s c a l e u p local Z axis s c a l e d o w n local Z axis m o v e a l o n g a r b i t r a r y local v e c t o r s c a l e e a c h local axis i n d e p e n d e n t l y r e s e t s b a c k to o r i g i n a l d e f i n i t i o n s p a c e
T w o b a s i c t y p e s of g e o m e t r i c o p e r a t o r s are p r o v i d e d by ASAS, "global" a n d "local" ( s o m e t i m e s called "self relative").The ASAS g lobal g e o m e t r i c o p e r a t o r s are called: scale, move, rotate,
E x a m p l e s : a n o p e r a t o r s e q u e n c e w h i c h (if e v a l u a t e d e a c h frame)
stretch and mirror.
w i l l c a u s e t h e AIRPLANE (that is, t h e s e q u e n c e of obj ects w h i c h f o r m t h e a n i m a t e d v a l u e of t h e v a r i a b l e AIRPLANE) to p e r f o r m
G e n e r a l l y t h e s e o p e r a t o r s a p p l y t h e n a m e d g e o m e t r i c a l t ra ns f o r m to a n y g i v e n g e o m e t r i c a l object T h e t r a n s f o r m s a re r e l a t i v e to t h e o r i g i n a n d m a j o r axes of t h e g l o b a l c o o r d i n a t e space. T h e p a r a m e t e r t y p e s to e a c h are n u m b e r s a n d v e c t o r s as a p p r o p r i ate. ("Stretch" is a d i f f e r e n t i a l s c a l i n g for e a c h axis, s p e c i f i e d by a v e c t o r of scale factors).
"barrel rolls", a n d o n e to c a u s e t h e CAMERA to p a n a r o u n d w h i l e z o o m i n g out:
(grasp airplane) (forward 0.1) (cw 0.02) (up 0.02)
As an e x a m p l e of t h e u s a g e of t h e ASAS g l o b a l o p e r a t o r s see F i g u r e s 1 a n d 2, t h e s e s h o w h o w last y e a r ' s SIGGRAPH c o v e r was constructed.
(grasp camera) (right pan-speed) (zoom-out 1.01)
T h e "local" o p e r a t o r s are s i m i l a r in effect to t h e global o p e r a t o r s , e x c e p t that t h e y a r e b a s e d on an o b j e c t ' s OWN c o o r d i n a t e s y s t e m r a t h e r t h a n t h e global c o o r d i n a t e s y s t e m . A subworid c a r r i e s a l o n g its o w n little c o o r d i n a t e s y s t e m , its p o v . Not o n l y d o e s this a l l o w efficient m o d i f i c a t i o n of t h e subworld b u t it also p r o v i d e s a r e f e r e n c e for o p e r a t i o n s in t h e objec t ' s local c o o r d i n a t e space. T h e local o p e r a t o r s w e r e i n s p i r e d by t h e "turtle" of the LOGO g r a p h i c s l a n g u a g e [2], a n d are i n t e n d e d to be a t h r e e d i m e n s i o n a l a n a l o g of the t u r t l e o p e r a t i o n s (w a l k f o r w a r d s or b a c k w a r d s , t u r n right or left). T h i s n o t i o n of a 3D t u r t l e (more of a d e e p sea s w i m m i n g t u r t l e t h a n a l a n d c r a w l i n g
V a ri ous o t h e r ASAS o p e r a t o r s a r e a v a i l a b l e b u t w i l l n o t b e
discussed here. There are recolor and cut-hole, and interp the general purpose interpolater, r o w and ring w h i c h make regular g r o u p s of objects, a n d prism w h i c h m a k e s s o l i d s by p r o j e c t i n g a polygon. Here a r e s o m e e x a m p l e s of s o m e of t h e m , an o p e r a t o r to m a k e a n - s i d e d r e g u l a r p o l y g o n ( i n s c r i b e d w i t h i n a u n i t r a d i u s circle), a n d a n o p e r a t o r to m a k e a p r i s m w i t h r e g u l a r "ends":
292
(defop regular-polygon (param: color sides)
s t r u c t u r e of t h e action. W h i l e a n ASAS "cue" is i n fact s i m p l y a n u m b e r (a f r a m e n u m b e r r e l a t i v e to t he c u r r e n t animate block) it s h o u l d n o t be t h o u g h t of as a c o n s t a n t . B e c a u s e of t h e c o m p u t a t i o n a l n a t u r e of a script it c a n be q u i t e e a s y to m o v e c u e s a r o u n d , s i n c e all c u e p o i n t s c a n be h a n d l e d s y m b o l i c a l l y (by n a m e r a t h e r t h a n by a literal n u m b e r ) . For e x a m p l e it is a s i m p l e rrlatter to c h a n g e t h e o v er all r u n t i m e of a s c r i p t (for a " qui c k r u n t h r o u g h " test) if all c u e p o i n t s a re d e f i n e d r e l a t i v e to o n e v a r i a b l e (e.g. "runtime"). Li bra ry m a c r o s exist to facilitate just s u c h a s c h e m e . T h e a n i m a t o r m a y find it n e c e s s a r y for a r t i s t i c r e a s o n s to m o v e a c u e p o i n t w i t h i n a s c r i p t , a g a i n t h i s w i l l be q u i t e p a i n l e s s if e v e r y t h i n g w h i c h is supposed to b e g i n or e n d at t h a t c u e p o i n t refers to it o n l y s y m b o l i c a l l y .
(polygon color (ring sides (vector 0 1 O) z-axis))) (defop regular-prism (param: color sides thickness) (prism color (vector 0 0 thickness) (regular-polygon color sides))) This s u m m a r y of ASAS o p e r a t o r s suffers b e c a u s e of t he l a n g u a g e ' s extensibility; t h e full list is e n d l e s s s i n c e t h e u s e r i n v e n t s n e w o n e s as n e e d e d . B e y o n d s i m p l e c o m b i n a t i o n s of b a s i c l i n e a r o p e r a t i o n s , t h e r e is a large class of n o n l i n e a r "bending" o p e r a t o r s . For e x a m p l e c o n s i d e r "curl-up" w h i c h t a k e s a l o n g t h i n object a n d c u r l s it i n t o a s p i r a l (Escher fans w i l l k n o w t h e a p p l i c a t i o n for that).
Actors The c o n t r o l s t r u c t u r e of a n a n i m a t i o n s y s t e m w o u l d be v e r y s i m p l e if w e c o u l d a s s u m e t h a t all s e q u e n c e s to be p r o d u c e d h a d at m o s t o n e i n d e p e n d e n t l y a n i m a t e d f e a t u r e at a n y o n e t i me . On t he o t h e r h a n d , if w e a s s u m e t h a t t h e r e m a y b e a n y n u m b e r of fully i n d e p e n d e n t a n i m a t e d f e a t u r e s (starting a n d s t o p p i n g at r a n d o m times, h a p p e n i n g at di ffe re nt rates, r u n n i n g in s y n e or not) t h e n c o n v e n t i o n a l c o n t r o l s t r u c t u r e s ar e n o longer the most appropriate.
Scripts and Animate B l o c k s The m a i n p r o g r a m an ASAS u s e r w r i t e s is called a s c r i p t , w h i c h is a s p e c i a l t y p e of defop. A script h a n d l e s t h e s e t t i n g u p a n d s e t t i n g d o w n n e e d e d to p r o d u c e an a n i m a t e d s e q u e n c e (or w r i t e a file for l a t e r p r o d u c t i o n by a n o t h e r system). The script e x p r e s s i o n i n c l u d e s a n a m e a n d a n y n u m b e r of s u b e x p r e s s i o n s . The effect is to d e f i n e a n o p e r a t o r w i t h t h a t n a m e w h i c h o p e n s p r o d u c t i o n , e v a l u a t e s e a c h e x p r e s s i o n , in t h e body, a n d closes p r o d u c t i o n . T h e r e is no restriction, b u t t h e t h i n g s in t h e b o d y are u s u a l l y e i t h e r animate e x p r e s s i o n s ("animate blocks") or p r o d u c t i o n u t i l i t i e s (such as " m a k e N b l a n k frames", "put t h i s slate text", or " m a k e an N s e c o n d c o u n t d o w n " ) .
An ASAS actor c a n be t h o u g h t of s e ve ra l w a y s . Most b a s i c a l l y a n a c t o r is a "chunk" of c o d e w h i c h w i l l be e x e c u t e d o n c e e a c h frame. Usually a n actor (or a t e a m of t he m) is r e s p o n s i b l e for o n e vi s i bl e e l e m e n t in a n a n i m a t i o n s e q u e n c e , h e n c e it c o n t a i n s all v a l u e s a n d c o m p u t a t i o n s w h i c h re l a t e to t h a t object. In t h i s s e n s e a n actor s e r v e s to m o d u l a r i z e a n d l oc a l i z e t h e co d e r e l a t e d to o n e aspect, i s o l a t i n g it f r o m u n r e l a t e d code. F r o m a f o r m a l p o i n t of vi e w , a n a c t o r is a n i n d e p e n d e n t c o m p u t i n g p r o c e s s in a n o n - h i e r a r c h i c a l s y s t e m w i t h s y n c h r o n i z e d activat i on a n d able to c o m m u n i c a t e w i t h o t h e r actors by m e s s a g e passing.
An animate b l o c k is a s p e c i a l t y p e of loop. E a c h t i m e a r o u n d t h e loop, after it e v a l u a t e s its body, a f l a m e of a n i m a t i o n is p r o d u c e d a u t o m a t i c a l l y . Usually t h e b o d y c o n t a i n s c u e express i o n s ("cue at f r a m e N .... "L T h e s e c a u s e objects to be m a d e visib le (with t h e s e e o p e r a t o r ) or start, s t o p or d i r e c t actors. Animate b l o c k s are e x i t e d w h e n a c u t o p e r a t o r is e v a l u a t e d .
W h e n a n actor is "on" ( b e t w e e n b e i n g started a n d stOped), it w i l l be a w a k e n e d o n c e e a c h f l a m e , its local v a r i a b l e s restored, its b o d y e va l ua t e d, its v a r i a b l e s saved, t h e n p u t b a c k to sleep. (Hence a n actor h a s p r o p e r t i e s b e t w e e n a "closure" a n d a "process" in r e c e n t Lisp i m p l e m e n t a t i o n s . ) A c t o r s are p u t in to a c t i o n w i t h t h e start o p e r a t o r , w h i c h t a k e s a n actor a n d r e t u r n s t h e "actor i n s t a n c e id", a u n i q u e n u m b e r for e a c h active actor. An actor c a n d e a c t i v a t e itself, or c a n be g u n n e d d o w n by t h e script or a n o t h e r actor, t h i s is d o n e w i t h t h e StOp o p e r a t o r w h i c h a c c e p t s a n "actor i n s t a n c e id". R u n is a c o m b i n a t i o n of start and stop, it s t a r t s a n actor w i t h a p r e d e t e r m i n e d s t o p cue. Thi s is t h e d e f i n i t i o n of t h e o p e r a t o r "spin-cube-actor" u s e d i n t h e s c r i p t " s pi nni ng-c ube s " :
T h i s e x a m p l e script c o n t a i n s o n e animate block, w h i c h s t a rt s t w o s i m i l a r a c t o r s at different times. Both a c t o r s t h e n r u n u n t i l t h e e n d of t h e block.
(script spinning-cubes (local: (runtime 96) (midpoint (half runtime)))
(animate (cue (at O) (start (spin-cube-actor green)))
(defop spin-cube-actor (param: color)
(cue (at midpoint) (start (spin-cube-actor blue)))
(actor (local: (angle O)
(cue (at runtime) (cut))))
(d-angle (quo 3 runtime)) (my-cube (recolor color cube)))
(see (rotate angle y-axis my-cube))
(Note: cut a c c e p t s an o p t i o n a l f r a m e n u m b e r , a n d w i l l c ut o n l y if that is the c u r r e n t frame, so t h a t t h i r d c u e c o u l d h a v e b e e n w r i t t e n as "(cut runtime)") W h e n a n animate b l o c k is exited, all of th e actors a s s o c i a t e d w i t h it are s t o p p e d . Hence animate blo cks are s o m e w h a t like t h e "scenes" of a movie, the c o a r s e
(define angle (plus angle d-angle)))) It e x p e c t s o n e parameter, a color, a n d r e t u r n s a n a c t o r object.
293
Computer Graphics
V o l u m e 16, N u m b e r 3
The actor itself h a s t h r e e local variables, e a c h of w h i c h is a s s i g n e d a n i n i t i a l v a l u e in t h i s case: "angle" is t h e c u r r e n t a n g l e o f r o t a t i o n for t h i s a c t o r s cube, "d-angle" is t h e i n c r e m e n t a l v e l o c i t y of t h e angle, "my-cube" is a r e c o l o r e d v e r s i o n of ASAS's p r e d e f i n e d "cube" s o l i d . Each f r a m e t h e actor c o n s t r u c t s t h e r o t a t e d v e r s i o n of "my-cube" a n d p a s s e s it to t h e d i s p l a y e r , t h e c u r r e n t "angle" is u p d a t e d for t h e next frame.
July 1982
i n d e p e n d e n t "instances" of a g i v e n "class" of
actors.
T h e o t h e r ke y f e a t u r e of actors w h i c h m a k e s t h e m s u i t a b l e for b e h a v i o r s i m u l a t i o n is t h e a b i l i t y to p a s s m e s s a g e s . Clearly t h e b i r d s in t h e flock a re e x c h a n g i n g i n f o r m a t i o n , t h r o u g h t h e a c t i o n of l i ght a n d s o u n d on t h e b i r d ' s s e n s e s e a c h o n e is a w a r e of w h e r e t h e o t h e r s a r e a n d w h e r e t h e y a re g o i n g (in a n i n t r i n s i c a l l y d e p t h s o r t e d order!) In a n a c t o r s i m u l a t i o n of t h e flock w e w o u l d n o t go to t h e e x t e n t of m o d e l i n g l i ght a n d s o u n d , b u t w e c o u l d r e a l i s t i c a l l y h a v e e a c h b i r d b r o a d c a s t i n g to e v e r y o n e t h e m e s s a g e "I a m h e r e (x y z) a n d I ' m h e a d i n g (dx dy dz)". In t h a t i m p l e m e n t a t i o n , e a c h b i r d w o u l d h a v e to p u t t h e o t h e r s in o r d e r of i m p o r t a n c e , p r o b a b l y u s i n g a ~hidden b i r d algorithm".
Animated N u m b e r s In t h e last e x a m p l e t h e s y m b o l "angle" t o o k on a s e r i e s of n u m e r i c values, f r a m e b y frame, f o r m i n g a n a r i t h m e t i c series. But for m o r e c o m p l e x t i m e b e h a v i o r ( q u a d r a t i c o r c u b i c curves) t h e i n l i n e c o d e to h a n d l e a n d u p d a t e all t h o s e l i n e a r d i f f e r e n c e t e r m s b e c o m e s a b u r d e n . To a v o i d this, ASAS s u p p o r t s a n a n i m a t e d n u m e r i c object called a n e w t o n (as in N e w t o n i a n m e c h a n i c s ) . N e w t o n s c a n be u s e d a n y p l a c e a n u m b e r w o u l d b e used, s u c h as a c o o r d i n a t e in a v e c t o r o r t h e a n g l e p a r a m e t e r for rotate. B e t w e e n f r a m e s h o w e v e r , newtons are a u t o m a t i cally u p d a t e d to t h e next v a l u e in t h e i r p r e d e f i n e d s e q u e n c e . T h e n e w t o n d a t a s t r u c t u r e h o l d s its f u t u r e as a c h a i n of p i e c e w i s e c u b i c c u r v e s w i t h s e l e c t a b l e d e g r e e of c o n t i n u i t y at t h e joints.
Message P a s s i n g ASAS messages a re h a n d l e d by t w o s p e c i a l o p e r a t o r s : send a n d receive. Send c o m p o s e s m e s s a g e s a n d p o s t s t h e m at th e r e c i p i e n t ' s ma i l box. R e c e i v e r e a d s e a c h m e s s a g e in t h e m ailbox, r e s p o n d i n g to e a c h in a m a n n e r d e p e n d i n g on t h e t y p e of m e s s a g e . (ASAS a c t o r s act o n c e e a c h frame, n o t w h e n e v e r a m e s s a g e comes, h e n c e m a i l m a y p i l e u p b e t w e e n f r a m e s so t h e m a i l b o x is i m p l e m e n t e d as a FIFO queue.)
A n e w t o n c a n be s p e c i f i e d in t e r m s of p o s i t i o n , velocity, a c c e l e r a t i o n a n d delta a c c e l e r a t i o n ("jerk" or "jerkiness") w h e n t h o s e v a l u e s are k n o w n . But m o r e t y p i c a l l y n e w t o n s a re defined with utilities which produce curves with certain p r o p e r t i e s . A n i m a t o r s are f a m i l i a r w i t h t e r m s like "slow in" or "slow out" m e a n i n g t h a t a n a c t i o n s h o u l d start (or end) w i t h z e r o v e l o c i t y (first derivative). T h e five m o s t c o m m o n c u r v e s (or p i e c e s of curves) u s e d in ASAS are: hold, linear, slowin, s l o w o u t a n d s l o w i o . H o l d a c c e p t s a v a l u e a n d a l e n g t h of time, e a c h of t h e o t h e r s t a k e s a s t a r t i n g a n d e n d i n g v a l u e a n d a time. SIowio (slow in a n d s l o w out) h a s z e r o d e r i v a t i v e s at b o t h ends. W h e n n o n e of t h e s t a n d a r d c u r v e s are a p p r o p r i a t e a n i n t e r p o l a t i n g c u b i c s p l i n e fit is used.
S e n d t a k e s a n a ddre s s , a " m e s s a g e type" (optional), a n d a n y o t h e r s p e c i f i c m e s s a g e d a t a ( n u m b e r s , g e o m e t r i c objects, s y m bols). T h e a d d r e s s is e i t h e r a n a c t o r id o r a s p e c i a l s y m b o l ; uall" m e a n s s e n d to all a c t o r s a n d ~script" and "animate" c a n b e u s e d to s e n d m e s s a g e s to t h e s u r r o u n d i n g script or animate block. T h e " m e s s a g e type" is a n y s y m b o l u s e d to d e s c r i b e t h e t y p e of m e s s a g e , it m u s t m a t c h t h e m e s s a g e t y p e i n t h e r e c i p i e n t ' s receive c o n s t r u c t . For e x a m p l e , t h e s e s e n d s (1) tell "bouncer" to s p e e d u p by 10 p e r c e n t a n d (2) a n n o u n c e to all b i r d s w h e r e w e are:
(send bouncer speedup 1.10) (send all bird-state cur-position cur-velocity)
Actors and Behavior Simulation
T h e receive c o n s t r u c t h a s a b o d y m u c h like a case c o n s t r u c t . E a c h m e s s a g e in t h e m a i l b o x is e x a m i n e d i n turn, t h e " m e s s a g e type" of e a c h is c o m p a r e d w i t h t h e t y p e of t h e v a r i o u s clauses. If o n e of t h e c l a u s e s in t h e b o d y of t h e receive m a t c h e s t h e i n c o m i n g m e s s a g e type, t h e b o d y of t h e c l a u s e is e v a l u a t e d in r e s p o n s e to t h e m e s s a g e . M e s s a g e t y p e "any" in a c l a u s e w i l l m a t c h a n y i n c o m i n g m e s s a g e . T h e c o n t e n t s of a m e s s a g e (past t h e type) m a y be a c c e s s e d by s p e c i f y i n g p a r a m e t e r b i n d i n g s for t h e c l a u s e type. For e x a m p l e , t h i s actor k n o w s h o w to r e c e i v e only "speedup" and "slowdown" message:
So me a n i m a t i o n is m a d e to m a t c h a p r e c o n c e i v e d i ma ge , e s p e c i a l l y in c o m m e r c i a l p r o d u c t i o n . O t h e r times, a n i m a t i o n is p r o d u c e d as an e x p e r i m e n t , t h e a n s w e r to " w h a t w o u l d h a p p e n if ...". In t h e s e c o n d type, w h i c h m i g h t be c a l l e d " b e h a v i o r s i m u l a t i o n " , the a n i m a t o r sets u p a little w o r l d by d e f i n i n g t h e r u l e s of b e h a v i o r a n d s e l e c t i n g t h e c a s t of c h a r a c t e r s . W h e n t h e b e h a v i o r s i m u l a t i o n is r u n w e o b t a i n i m a g e s of w h a t w e n t on in t h e little w o r l d . A classic e x a m p l e of t h i s sort of t h i n g is to try to b u i l d a c o m p u t e r g r a p h i c s i m u l a t i o n of a flock of birds. We m u s t d e f i n e t h e b e h a v i o r o f a s i n g l e b i r d so t h a t w h e n a lot of i n s t a n c e s of t h e b i r d are s i m u l a t e d , t h e y flock c o n v i n c i n g l y . T h e flock s e e m s to b e f o l l o w i n g a leader, b u t e a c h t i m e t h e y turn, a n e w b i r d b e c o m e s t h e leader. T h e flock c h a n g e s d i r e c t i o n like a s i n g l e unit, y e t it is just a n a s s e m b l y of i n d i v i d u a l s . T h e flock is a d e n s e cluster, b u t t h e b i r d s do not often collide.
(receive ((speedup f)
(define speed (times speed f)))
((slowdown f)
(define speed (quo speed f)))
(any
(print 'What?)))
T h e m e s s a g e p a s s i n g m e c h a n i s m d e s c r i b e d a b o v e is b a s e d o n a m o r e p r i m a t i v e o p e r a t o r c a l l e d in. The in o p e r a t o r a l l o w s t h e e v a l u a t i o n of a n y e x p r e s s i o n "inside" t h e local v a r i a b l e s p a c e of a n actor, t h u s a l l o w i n g e x a m i n i n g a n d s e t t i n g t h e local v a r i a b l e s of t h e actor. T h i s is a u s e f u l b u t d a n g e r o u s tool w h i c h s h o u l d be u s e d o n l y i n a w e l l d e s i g n e d prot oc ol .
ASAS a c t o r s p r o v i d e a c o n v e n i e n t w a y of i m p l e m e n t i n g s u c h b e h a v i o r s i m u l a t i o n s . As m e n t i o n e d before, o n e of t h e f e a t u r e s of a c t o r s is t h e w a y t h e y p r o m o t e " s e p a r a t i o n of p o w e r s " , i n d e p e n d e n t m o d u l e s of c o d e w h i c h do n o t i n t e r f e r e w i t h e a c h other. T h i s a l l o w s an a c t o r to t a k e t h e p a r t of o n e c h a r a c t e r s in t h e s i m u l a t i o n . If t h e s a m e sort of c h a r a c t e r o c c u r s m a n y t i m e s in t h e s i m u l a t i o n (e.g. m a n y c o p i e s of BIRD) w e c a n u s e
294
Commercial
Production
at III
Often design constraints are stated in s u c h an indirect fashion ("have the c a m e r a p o i n t i n g s u c h that the logo is positioned here and oriented like in this sketch") that the only w o r k a b l e w a y to find the desired n u m e r i c a l p a r a m e t e r s is experimentally w i t h graphical feedback. After specific "key" f r a m e s have b e e n c o m p o s e d , and the transitions b e t w e e n t h e m defined, a m o t i o n test is made. Usually this test is m a d e in either line ("vector") or l o w resolution s h a d e d image mode. The symbolic n a t u r e of ASAS scripts m a k e it easy to adjust the r u n t i m e of a sequence, m a k i n g p r e l i m i n a r y tests at 10:1 s p e e d ratios allows faster t u r n a r o u n d . Also the script can be simplified for these tests, by d r o p p i n g out certain elements, replacing o t h e r s w i t h "standins", all these c h a n g e s can be m a d e u n d e r the control of ASAS script flags. Often the m o t i o n test will reveal p r o b l e m s in the "feel" of the d y n a m i c s of the a n i m a t i o n o r u n e x p e c t e d b e h a v i o r b e t w e e n the key frames.
ASAS frequently plays a central role in commercial a n i m a t i o n p r o d u c t i o n at III, a l t h o u g h o t h e r t e c h n i q u e s of a n i m a t i o n control are used. Projects m a d e w i t h ASAS include, "MICROMA" a n i m a t e d logo, "LBS" a n i m a t e d logo, "NEWS CENTER 2" TV n e w s s h o w intro, t w o TV c o m m e r c i a l s for "TORNADO", v a r i o u s m a g a z i n e ads, all of the t h e m e a n i m a t i o n for the III 1981 Sample Reel (~The Juggler"), a b o u t half of the special effects for the Ladd C o m p a n y ' s feature m o t i o n picture ~LOOKER", a n d all of the a n i m a t i o n a n d still images III is m a k i n g for the recently released Disney feature "TRON".
A n o t h e r p a s s o r t w o is m a d e to finalize the m o t i o n and t h e n attention is shifted to the color, lighting, s h a d i n g and o t h e r "photometeric" p a r a m e t e r s of the animation. Key f r a m e s are e x a m i n e d on a high resolution video display and color tests are m a d e onto the type of color film w h i c h will be used for the final image. Often a p a r a m e t e r will be d e t e r m i n e d w i t h a "wedge test", m a k i n g a series of f r a m e s w h i c h differ only by a single p a r a m e t e r value (e.g. the a m o u n t of a m b i e n t light in the scene), w i t h the g a m u t of values laid out, the final value can be easily be selected.
Copyright 0 1982 by Walt Disney Productions and Information International, Inc.
Figure 3:
Solar Sailer Escape Sequence f r o m TRON
The Digital Scene Simulation G r o u p usually w o r k s o n a contract basis w i t h clients s u c h as film and video p r o d u c e r s and advertising agencies. Some projects c o m e to us carefully p l a n n e d out by the client, w h i l e o t h e r s c o m e in a very vague foITn. If w e do not get specific artistic directions (timings, s t o r y b o a r d s a n d renderings) f r o m the client, o u r Art Departm e n t creates these materials in consultation w i t h the client. A t e a m of at least three staff m e m b e r s (art director, d e s i g n e r / e n coder, technical director) is f o r m e d to w o r k on the job.
W h e n all has been decided, a high resolution final filming is made. Typically w h e n the result is screened, the client will find at least one r e a s o n to reject the w o r k a n d the w h o l e p r o c e s s goes back to the beginning. Conclusion
This p a p e r h a s p r e s e n t e d ASAS, a general p u r p 6 s e p r o g r a m m i n g language w h i c h has b e e n extended to include geometric objects and operators, parallel control s t r u c t u r e s and o t h e r features to m a k e it useful for a n i m a t e d c o m p u t e r g r a p h i c applications. ASAS m a k e s use of an abstract c o m p u t i n g element called an actor, w e have seen h o w actors p r o m o t e modularity and h o w they can simulate a w i d e range of b e h a v i o r by exchanging m e s s a g e s w i t h each other. In three y e a r s of c o m m e r c i a l use ASAS has p r o v e d itself a w o r k a b l e a n d practical tool. While the specific feature a u s e r w a n t s m a y not already be a part of the language, the extensibility of ASAS allows it to g r o w w i t h its users. ASAS has e x p a n d e d o u r "complexity barrier" a n o t h e r notch, allowing us to a t t e m p t w o r k w i t h m o r e i n d e p e n d e n t l y a n i m a t e d elements t h a n before.
W h e n the artistic c o n c e p t is s o m e w h a t settled, w o r k is started on its c o m p u t e r g r a p h i c realization. The first step is to create a geometrical model of the s h a p e s of the objects to be used in the animation. Unless the g e o m e t r y of the object is regular e n o u g h to allow it to be c o n s t r u c t e d u n d e r p r o g r a m control, the s h a p e definition is d o n e by h a n d in a laborious p r o c e s s similar to technnical drafting w e call "encoding". Often s o m e mix of m a n u a l data entry and p r o c e s s i n g by various ~geometrical tool" p r o g r a m s is used to obtain a finished object s h a p e description. As the objects are being finalized, the technical director begins to w r i t e the ASAS scripts a n d related p r o g r a m s . W h e n the g r o u p is w o r k i n g m a n y closely related scenes, for instance d u r i n g p r o d u c t i o n o n a feature film, m a n y of the "sets" or e n v i r o n m e n t s will be s h a r e d b e t w e e n several scenes. In s u c h cases it b e c o m e s convenient to set u p "libraries" of c o m m o n ASAS f u n c t i o n and object definitions. Contributions are m a d e to these "public libraries" by all a n i m a t o r s w o r k i n g on a project. Usually the m o t i o n s in an a n i m a t e d s e q u e n c e are so specifically p l a n n e d out in advance that an outline of the script can be w r i t t e n before any of the objects are available for test pictures. At this stage the ASAS script is very abstract, references are m a d e to symbolic c o n s t a n t s w h o s e values are not yet k n o w n . W h e n object files are ready a n d the script is r o u g h e d out the "graphical debugging" begins.
The a u t h o r is not p r e p a r e d to state that w h e n the ULTIMATE c o m p u t e r a n i m a t i o n s y s t e m is built, it will be p r o g r a m m i n g language based. But it is h a r d to visualize a s y s t e m w h i c h allows arbitrary extensions into u n e x p e c t e d realms w i t h o u t being fully p r o g r a m m a b l e . However, p r o g r a m m i n g and m a k i n g aesthetic j u d g e m e n t s s e e m to be disjoint in m o s t p e o p l e ' s thinking processes. The u s e r of a g r a p h i c s p r o g r a m m i n g system m u s t always be on g u a r d against c o m p r o m i s i n g aesthetic j u d g e m e n t s to simplify the p r o g r a m m i n g ! The solution u s e d in o u r c o m m e r c i a l w o r k is to m a k e the p r o d u c t i o n a joint effort of several people, s o m e responsible for artistic issues and o t h e r s responsible for technical issues.
295
[22] Pfister, G. "A High Level L a n g u a g e E x t e n s i o n for Creating a n d Controlling D y n a m i c Pictures", A C M SIGPLAN/SIGGRAPH S y m p o s i u m on Graphical Languages, April 1976.
References
[1] Abelson, H. a n d diDessa, A. Turtle Geometry, MIT Press (Series in Artificial Intelligence), Cambridge, MA, 1981.
[23] Preissler, M. "Multi-processed M u s i c Synthesis", BS T h e s i s MIT EECS D e p a r t m e n t , May 1976.
[2] Austin, H., "The LOGO Primer", MIT A.I. Lab. Logo W o r k i n g P a p e r 19.
[24] Reynolds, C. "A M u l t i p r o e e s s i n g A p p r o a c h to C o m p u t e r Animation", SB thesis, MIT EECS D e p a r t m e n t , A u g u s t 1975.
[3]' C h u r c h , A "The Calculi of L a m b d a Conversions", A n n a l s o f M a t h e m a t i c a l S t u d i e s 6, P r i n c e t o n U n i v e r s i t y Press 1941, Rep r i n t e d by Klaus R e p r i n t Co., 1965.
[25] Reynolds, C. " C o m p u t e r A n i m a t i o n in t h e W o r l d of Actors a n d Scripts", SM thesis, MIT (Architecture M a c h i n e Group), May 1976
[4] Clark, J., ~Hierarchical G e o m e t r i c Models for Visible Surface Algorithms", CACM, O c t o b e r 1976. [5] Dahl, M y h r h a u g , a n d Nygaard T h e SIMULA 67 C o m m o n Base Language, N o r w e g i a n C o m p u t i n g Centre, Oslo, 1968.
[26] Reynolds, C. A c t o r / Scriptor A n i m a t i o n S y s t e m User's M a n u a l 3.0, (ASASUM 3), I n f o r m a t i o n I n t e r n a t i o n a l Inc., in preparation.
[6] DeFanti, T. "The Digital C o m p o n e n t of t h e Circle G r a p h i c s Habitat", Proceedings NCC 1976.
[27] Smoliar, S. "A Parallel P r o c e s s i n g Model of Musical Structures" MIT AI Lab T e c h n i c a l Report 242, S e p t e m b e r 1971.
[7] Dijkstra, E.W. "Notes o n S t r u c t u r e d P r o g r a m m i n g " , A u g u s t 1969
[28] S u s s m a n , G. a n d Steele, G. "SCHEME - An I n t e r p r e t e r for E x t e n d e d L a m b d a Calculus", MIT AI Lab M e m o 349, D e c e m b e r 1975.
[8] E a s t m a n , C. a n d Henrion, M. "GLIDE: A L a n g u a g e for Design I n f o r m a t i o n Systems", SIGGRAPH '77 Proceedings, July 1977, San Jose, CA.
b
[29] Teitelman, W. InterLISP R e f e r e n c e Manual, Xerox Palo Alto R e s e a r c h Center, 1978.
[9] Futrelle, R. P. a n d Barta, G. " T o w a r d s t h e Design of a n Intrinsically Graphical Language", SIGGRAPH '78 Pl~gceedings, A u g u s t 1978, Atlanta, GA.
[30] W i n o g r a d , T. U n d e r s t a n d i n g Natural Language, A c a d e m i c Press, 1974.
[10] Goates, G., Griss, M. a n d Herron, G. "PICTUREBALM: A Lisp-based G r a p h i c s L a n g u a g e S y s t e m w i t h Flexible Syntax a n d Hierarchical Data Structure", SIGGRAPH '80 Proceedings, July 1980, Seattle, WA.
[32] Wirth, N. "MODULA: a L a n g u a g e for M o d u l a r Multip r o g r a m m i n g " , Software, Practice a n d E x p e r i e n c e 7,1; 1977 pp. 3-35.
[31] W i n s t o n , P. a n d Horn, B. Lisp, A d d i s o n Wesley, 1981.
[11] Goldberg, A. a n d Kay, A. SMALLTALK-72 I n s t r u c t i o n M a n u a l L e a r n i n g R e s e a r c h Group, Xerox Palo Alto Research, M a r c h 1976. [12] Gre!f, I. a n d Hewitt, C. "Actor S e m a n t i c s of PLANNER-73", Proc. o f A C M SIGPLAN-SIGACT Conf., Palo Alto, CA, J a n u a r y 1975. [13] Hewitt, C. a n d Smith, B. " T o w a r d s a P r o g r a m m i n g A p p r e n tice", MIT AI Lab W o r k i n g P a p e r 90, J a n u a r y 1975. [14] Hewitt, C. a n d Atkinson, R., "Parallelism a n d S y n c h r o n i z a tion in Actor System", A C M S y m p o s i u m o n Principles o f P r o g r a m m i n g Languages 4, J a n u a r y 1977, L. A. CA. [15] Jones, B. "An e x t e n d e d ALGOL-60 for S h a d e d C o m p u t e r Graphics", A C M SIGPLAN/SIGGRAPH S y m p o s i u m on Graphical Languages, April 1976. [16] Kahn, K. "An Actor-Based C o m p u t e r A n i m a t i o n Language", Prec. o f the ACM-SIGGRAPH W o r k s h o p on User-Oriented Design o f C o m p u t e r Graphics S y s t e m s , Pittsburg, PA, O c t o b e r 1976. [17] Kahn, K., "A C o m p u t a t i o n a l T h e o r y Of A n i m a t i o n " , MIT A.I. Lab. W o r k i n g P a p e r 145, April 1977. [18] Larkin, F. " C o m p u t i n g w i t h T e x t - G r a p h i c Forms", Confere n c e R e c o r d o f t h e 1980 LISP Conference, A u g u s t 1980, Stanford University.
Note T h i s e n t i r e p a p e r is a n e x a m p l e of c o m p u t e r g r a p h i c s . All p i c t u r e s w e r e p r o d u c e d w i t h Digital Scene Simulation, a n d directly (digitally) c o n v e r t e d into f o u r color h a l f t o n e s in t h e Infocolor f o r m a t . T h e text w a s edited a n d c o m p o s e d o n TECS, a n d a s s e m b l e d w i t h a Page M a k e u p System. C a m e r a ready, full p a g e art (including t y p e s e t t i n g a n d h a l f t o n e g e n e r a t i o n ) w a s p r o d u c e d w i t h a COMp80/2-Pagesetter. All of t h e s e s y s t e m s are p r o d u c t s of I n f o r m a t i o n I n t e r n a t i o n a l Inc.
[19] Larkin, F. "A S t r u c t u r e f r o m M a n i p u l a t i o n for Text-Graphic Objects", SIGGRAPH '80 Proceedings, July 1980, Seattle, WA. [20] Moon, D. MacLisp R e f e r e n c e Manual, Revision O, MIT Project MAC, D e c e m b e r 1975. [21] N e w m a n , W. a n d Sproull, R. Principles o f Interactive C o m p u t e r Graphics, McGraw-Hill, 1973 a n d 1979.
296