OBJECT-ORIENTED COMPUTER ANIMATION
William E. Lorensen
Boris Yamrom
GE Corporate Research and Development
animation system; and describe an implementation in the
language C. A short example illustrates the system.
ABSTRACT
2. OBJECT-ORIENTED TECHNOLOGY
Recent advances in computer graphics hardware offer an Object-oriented systems rely heavily on the software engi-
opportunity to extend 3D visualization techniques into a neering concepts of
fourth dimension, time. But, computer animation - the - Information hiding: Details of a system that do not af-
control and display of models, cameras, and lights in a fect other parts of the system are not visible from the
simulated world - is a complex process and software that outside.
performs animation should hide this complexity from us- - Abstraction: Entities of a system are grouped according
ers. Furthermore, because computer animation is not ma- to common properties and operations.
ture, modem animation systems should be designed to - Modularization: Parts of a system that have localized
add innovative techniques without discarding investment behavior are grouped together with well defined inter-
in existing software. faces.
Praised by software researchers throughout the decade, In object-oriented systems, these three principles comple-
object-oriented technology provides tools to deal with the ment rather than compete with each other.
complexity and change present in computer animation. Terminology
Object-oriented design creates a natural partitioning of Object-oriented terminology combines the everyday terms
complex systems into manageable pieces called objects. objects and inheritance, with unfamiliar ones, such as in-
allowing system architects to reuse existing software and stances and message passing. Here, we define common
to extend existing systems. object-oriented concepts as they are used in the paper;
We used the object-oriented paradigm to design and Stefik and Bobrow [l] give more extensive definitions.
create the 3D computer graphics animation system Object-oriented systems are characterized by abstract
OSCAR, the Object-oriented Scene AnimatoR. After a re- constructs called objects that contain data and procedures
view of object-oriented terminology, we describe a design to manipulate that data. The data describe the local state
methodology, system architecture and implementation of an object and are only accessible to the outside world
strategy for animation systems regardless of the through an object’s procedures, called methods. A method
object-oriented capabilities of the implementation envi- is executed when the object receives a message. Objects
ronment. communicate with other objects by sending messages. A
1. INTRODUCTION method dictionary maintains the correspondence between
Two areas of computer science and computer graphics messages and methods.
receive considerable attention in recent literature. Com- An instance is created by making a copy of a particular
puter scientists tout the benefits of object-oriented sys- class of objects. Classes are templates for object creation,
tems, promising benefits in system design that will sur- containing not only the data associated with the class, but
pass those obtained using structured programming. Com- also the methods for manipulating the data. These data
puter graphics researchers actively pursue realism, pro- are called instance variables.
ducing high quality, three-dimensional animation sys- Through a mechanism called inheritance, new classes
tems. obtain data and methods from other classes, changing or
The following sections review object-oriented systems adding data and methods. Two types of inheritance exist
and 3D computer animation; present a design methodol- in object-oriented systems: single and multiple. Using sin-
ogy that applies an object-oriented philosophy to a 3D gle inheritance, a class inherits data and methods from at
588
CH2759-9/89/0000-0588 $1 .OO 1989 IEEE
Q
most one other class. On the other hand, multiple inheri- Identify the operations for each abstraction.
tance permits a class to inherit from more than one class. The operations are the methods (or procedures) for
Only the objects know their data structures and meth- each class. While some methods access and update in-
ods. Nothing outside the object can directly access these stance variables, others execute operations singular to
structures. If the implementation of an algorithm requires the class. If the new abstraction inherits from another
change in the object's data structure, only the object itself class, inspect that class's methods to see if any need to
feels this change. be overridden by the new class.
A variety of systems are available that apply object- Identify the communication between objects.
oriented techniques. Smalltalk-80 [2], developed at Define the messages that objects can send to each
Xerox's Palo Alto Research Center (PARC), is a system other and suggest a correspondence between the meth-
and language based solely on the object-oriented para- ods and the messages that invoke them. Even if an
digm. Objective-C [3], a product of Stepstone, Inc., com- object-oriented implementation is not planned, mes-
bines Smalltalk-style messaging, with the C language. sages help the design team communicate and can be
C++ [4], from AT&T, is a superset of C that supports used in the next step, writing scenarios.
classes and inheritance. Test the design with scenarios.
3. OBJECT-ORIENTED DESIGN Scenarios, consisting of messages to objects, test the
Software engineers can apply the principles and proper- design's ability to match the system's requirements.
ties of object-oriented systems to software design. This Write a scenario to satisfy each user level function in
section describes an object-oriented methodology that is the requirements specifiqon.
independent of the implementation. Apply inheritance where appropriate.
Grady Booch [5] outlines an object-oriented design If the data abstraction process in step 1 proceeds top-
methodology for the Ada"' language that does not ad- down, introduce inheritance there. However, if abstrac-
tions are created bottom-up (often because the require-
dress inheritance (since Ada does not support it) and im-
ments directly name the abstractions), apply inheri-
plies that object-oriented design can be done by extract-
tance here, before going to another level of abstraction.
ing nouns (objects) and verbs (methods) from a require-
The goal is to reuse as much of the data and methods
ments description.
that have already been designed. At this point, com-
We take an alternative approach that places more em-
mon data and operations often surface and these com-
phasis on the abstraction process and also deals with in-
mon instance variables and methods can be combined
heritance. This methodology is appropriate at the prelimi-
into a new class. This new class may or may not have
nary design stage, i.e. the architectural stage, of the soft-
meaning as an object by itself. If its sole purpose is to
ware engineering life cycle. The primary effort is to de-
collect common instance variables and methods, it is
fine and characterize the abstractions. This approach to
called an abstract class.
object-oriented design proceeds as follows:
The designer repeats these steps at each level of ab-
1. Identify the data abstractions for each subsystem.
straction. Through successive refinements of the design,
Data abstractions are the classes of the system. Work-
the designer's view of the system changes depending on
ing from the requirements document, the abstraction
the needs of the moment. Each level of abstraction is im-
process starts top-down where possible, although many
plemented at a lower level until a point is reached where
times the requirements explicitly mention abstractions.
the abstraction corresponds to a primitive element in the
Often the classes correspond to physical objects within
design. New levels of abstraction should provide some at-
the system being modeled. This is, by far, the most
tribute or operation that cannot be expressed at the previ-
difficult step in the design process and the selection of
ous lowest level. For example, the abstraction of geomet-
these abstractions influences the entire system architec-
ric primitives starts with a polygon, defines a rectangle at
ture.
the next level of abstraction, and follows with a square.
2. Identifi the attributes for each abstraction.
The attributes become the instance variables for each 4. COMPUTER ANIMATION SYSTEMS
instance of the class. Many times, for classes that cor- Computer graphics representations have progressed from
respond to physical objects, the instance variables are the early use of lines to produce wire frame images of
obvious. Other instance variables may be required to three dimensional models, through simple shaded presen-
respond to requests from other objects in the system. tations, up to the current state-of-the-art realistic images.
This is the result of success in defining more accurately
Ada is a trademark of the Department of Defense the models' environment. Transparency, translucency,
589
shadows, illumination models, and surface properties are sity and commercial systems depend on artistic talent to
a few areas where research continues to provide algo- communicate a message through the animation. In con-
rithms that produce more acceptable synthetic images. trast, the industrial environment is driven by analyses of
The current trend in computer graphics is to apply these modeled phenomenon. For example, an artist interpreting
advanced techniques to produce quality animations. robot motion in a work environment may show the robot
Related Work execute apparently realistic motions, whereas an indus-
Although dozens of films produced using 3D computer trial robot motion must .be predicted by sophisticated
graphics have appeared over the years, the literature con- kinematic analysis. After all, the intent of such an anima-
centrates on the algorithms that produce the images, not tion is not to produce a pretty film but to gain insight into
on the animation systems themselves. This is probably the interactions of the robot with its work environment.
because few general purpose animation systems exist. Also, if the animation is used as a marketing tool, pro-
Many computer-generated films are produced by execut- spective customers will not be impressed by an artist's
ing a sequence of unrelated programs through the control interpretation of the robot behavior, but want to under-
of command files. The major efforts seem to have been in stand how the commercial robot operates in a real envi-
the areas of' image quality and realism, not on the anima- ronment.
tion interfaces themselves. This is the key difference between this system and
ASAS [CI], the Actor/Scriptor Animation System, was those described previously: this system relies on analysis
used at Information International Inc., Ill, to produce se- rather than art. This raises an issue for industrial applica-
quences for the Disney movie TRON [7]. ASAS, imple- tions: the analysis software often already exists with its
mented in Lisp, relies heavily on object-oriented con- own user interface and data bases.
cepts. ASAS actors are the participants in the animation, OSCAR, the Object-oriented Scene AnimatoR, provides
communicating by sending and receiving messages. Cues an automated graphics animation capability to create,
define actor behavior and their processing resides within control, and manage 3-D computer-generated animation
the actors themselves. sequences. OSCAR automates the creation of high-quality
MIRANIIbl [8] also extends a computer language, here film and video, showing the results of complex research,
Pascal. Abstract graphical types describe the participants experiments, and other computer-generated analyses. Us-
in the animation. A sequence of scenes comprise an ani- ing an object-oriented script language as the user inter-
mation, where each scene is a sequence of statements ma- face, the animation system provides automatic control of
nipulating actors, cameras, and lights. analysis, modeling, rendering, display, and filming proc-
Clockworks 191, developed at Rensselaer Polytechnic esses. Interfaces have been developed for scientific analy-
Institute, is a C-based object-oriented animation system sis programs in the areas of molecular modeling, mecha-
that integrates modeling, animation control, and render- nisms analysis and robotics, with future interfaces
ing. Both Clockworks and OSCAR use an animation script planned for structural analysis and fluid dynamics. The
to control the animation process. The systems were devel- object-oriented design produced a system that lends itself
oped in parallel and OSCAR benefits from the interactions to interfacing with existing and future in-house and exter-
with the R.P.I. staff. The major differences lie in OSCAR'S nal software.
ability to interface with external programs that often exist 5.1. The Animation Process
in an industrial setting. A prerequisite to developing any software system, is un-
Several commercial animation systems are available. derstanding the problem to be solved. As in all disci-
Wavefront 'Technologies (Santa Barbara, CA) offers mod- plines, computer animation has its own terminology. Here
eling, animation and rendering products that run on high we present the animation process, defining enough jargon
performance graphics workstations. Videoworks E, (Mac- for the reader to understand the subsequent system de-
roMind, San Francisco, CA) is a two dimensional anima- sign.
tion system that runs on Apple Macintosh desktop sys- The user of a computer animation system acts as the
tems. producer, writer and director of a film sequence. The pro-
5. OSCAR ducer manages the overall film production, keeping
Industrial computer graphics applications share some schedules, assigning tasks, and organizing resources. The
characteristics with those of the university and commer- writer creates a script based on the requirements of the
cial film communities. Although software for modeling customer. The director controls the animation, positioning
and rendering is common to both environments, univer-
590
the props, actors, cameras, and lights. Several steps are 6. Film Editing. Editors do post-production, creating ti-
required to produce an animation. tles, credits, and special effects such as dissolves and
A review of the process illustrates the steps that can fades that add a professional touch to the completed
benefit from the computer animation system. sequence.
1. The Story. The writer, working with a customer, deliv- 7. Recording. Recorders select frames for the final se-
ers a story that describes the role of each participant quence and expose film or video tape.
including their appearance, dialog, and actions. Every 5.2. Major Subsystems
film is made with some purpose in mind. It could be to
The subsystem breakdown in OSCAR delegates authority
verify or understand some mathematical algorithm as it
for the steps in the animation process. Using an anthropo-
relates to a physical phenomenon, to explain an ab-
stract concept to an audience, to market a product, or morphic flavor throughout the descriptions maintains the
to provide entertainment. Writing is an artistic process correspondence with conventional movie making meta-
that is difficult to assist with the computer. phor. Figure l shows a diagram of the system.
2. The Script. The script contains the details of position- Interactions between objects and programs are de-
ing and movement of the actors, cameras and lights in scribed below:
the animation. OSCAR provides a language for script- 1. Director is a collection of objects that provide control
ing to document changes and to produce the final ani- over all the components of OSCAR. The Director reads
mation. The script can be written with a text editor, or and interprets a script, sending commands to the other
created with the OSCAR Interactive Script Generator. modules to do the animation.
OSCAR scripts contain statements in an object-oriented 2 . Interactive Script Generator provides a graphic user in-
language developed as part of the system. terface for writing scripts. Scripts contain the instruc-
3. Simulations. For scientific applications, experiments tions describing what is to occur in the animation se-
and simulations often provide the physics of the anima- quence. The Interactive Script Generator allows the user
tion. Technical analysts setup and execute these simu- to position cameras, lights, and to describe the move-
lations. For computer animations, these analysts are ment of objects while seeing a wire-frame image of the
the scientists and engineers requesting the animation. objects that will be presented in the final film as realis-
OSCAR assumes that most animations depend on some tic images. User inputs are interpreted and stored in a
computer model. Analysis runs must be made to pro- script file. Although the Interactive Script Generator pro-
vide the simulation results for the animation. OSCAR vides a user interface for both- the novice and experl-
calls these simulation programs analysts. enced user, the experienced user can achieve more
4. Models. Each prop and actor in an animation must control by writing or editing the scripts with a text edi-
have a geometric model. During the animation, the di- tor.
rector moves the models around the environment. 3.'The Frame clerk keeps track of the location of each
Some analyses have geometric models associated with finished frame of the film, notes whether it has been
them, while others do not. For instance, a structural recorded, and archives frames when they are no longer
engineer, doing a stress analysis of a turbine, models needed. Frames can be kept in several places: online
the turbine with finite elements before the analysis is disk, magnetic tape, and optical video disk.
run. Here, the model and analysis are tightly coupled: 4. Liaisons are interfaces between OSCAR and external
both analysis and display require the same model. modules. The Liaisons translate OSCAR-specific infor-
However, in a molecular mechanics calculation, simple mation into a form their assigned modules (analysts,
Cartesian points model the atoms, and connectivity re- modelers, or renderers) can understand and vice-
lationships model the bonds. Here, the rendering proc- versa.
ess requires more sophisticated geometric models: 5 . Analysts are external programs that do analyses in a
spheres and cylinders. Models are created by programs variety of scientific fields. The interfaces to these soft-
called modelers. ware packages cannot be changed, so an analysis-spe-
5 . Rendering. This step applies computer graphics algo- cific liaison is the interface between each analyst and
rithms to the computer geometric model, surface prop- OSCAR.
erties, lighting, etc. and produces shaded images for 6. Modelers are external programs that create the geome-
display. Rendering is done by programs called ren- try of the objects for the animation. Typically, they use
derers. geometric primitives to build complex representations
of structures. Modelers available for use include
GEOMOD, Movie.BYU, Phigs+ [lo], and Synthavison.
591
Movie BYU
Mechanismsanalysis Synthavislon
Molecular MocW4ng Geomod wigs
Movle.BYU Ray Tracer
Synthavlsion
Phigs
Figure 1. System Overview
argument:= VALUE I NAME I STRING
Like the analysts, these systems also have defined inter- I " ( " argumentlist ") "
faces, and each needs a liaison to translate between the I " [ " object messages "1 "
director and the modeler. argument-list := argument I argument-list ", " argument
7 . Renderers are external programs and objects that take where, VALVE is a floating point number, NAME is a
geometric information and environmental information string of characters, STRING is a quoted string, and PRE-
(such as lighting and camera positions) from the script FIX is an optional string. Special characters at the start of
and create frames for later display and filming. These a line allow the user redirect input and output, invoke
renderers include Movie.BYU, Phigs+, and Synthavison. system routines, and print text at the terminal. The left
There is a liaison object for each external renderer. and right square brackets allow the arguments to a mes-
8 . Frame editor objects do editing, and provide special ef- sage to be obtained from another object. The semantics of
fects and titles. These objects operate on frames. messages are implemented within the objects themselves.
9. Recorder objects do the filming of the sequences. Steps The following rules for message suffixes illustrate mes-
include obtaining finished movie frames from the frame sage semantics:
clerk, displaying the images in a frame buffer, and re- ? requests for the value of an instance variable.
cording the images on film or video disk. = sets an instance variable.
5.3. Animation Language : requires arguments, but does not specifically set an in-
Our animation language uses one statement structure that stance variable.
defines communication between objects. In an animation @ defines an index.
script, the user specifies an object and the messages for +, -, /, *, and terminate arithmetic operation messages.
that object. In the excerpts from the syntax description of
! ends messages with no arguments.
the language that follow, capitalized items and characters
within double quotes are terminal symbols: Messages to the same object can be concatenated on a
statement:= object messages '' ;
" statement. A typical statement is:
object := NAME ACTOR new: Abox
messages:= message I messages message position= (0,5,0)rotate-x: 30
message:= PREFIX "7" I PREFIX " I " color=(l,O.l) onl;
I PREFIX " : " argument I PREFIX "=" argument This statement creates an instance of the class ACTOR
I PREFIX "@" argument I PREFIX "+" argument with a position and color. The object is rotated about its
I PREFIX "-" argument 1 PREFIX " I " argument local x axis. An alternate statement, that improves read-
I PREFIX " ' "argument 1 PREFIX " ^ " argument
ability, provides the same results as above:
592
Abox := ACTOR [
position= (0.5,O) rotate-x: 30 Cameras are the means by which the animation is
color=(l ,O,l)on1 viewed. In our implementation, the Foley and Van
1: Dam [ll] viewing transformation pipeline is used.
To make another box with the same instance variable Val- Cameras can be moved, rotated, and turned on and
ues as the first, off. They have fields of view, up directions, and clip-
Abox new: AnotherBox; ping planes. Cameras have no geometric representation
A camera can be defined, so that if one is within the view of another, it is not
CAMERA new: Acamera position= (0,20, 5) view-angle= 30: visible in the animation. Although multiple cameras
and its view reference point can be set to the position of can be present in a scene, only one camera can be
the box by sending a message to the box requesting its active at one time for a given renderer.
position, Lights illuminate the scene. They have position, color,
Acamera focal-point= [Abox position?]: and orientation. Lights can be moved and turned on
6 . OSCARCLASSES and off. Multiple lights can be active at one time.
Currently over one hundred classes exist in the system. Renderers access cameras, lights, and the geometry and
These classes were selected using the design process de- state of each actor to create raster or vector images.
scribed in Section 3. A few of the classes are summarized When a renderer receives a render! message, it re-
here: quests position and orientation information from its as-
Actors are the geometric objects of the animation. They signed actors, lights, and cameras. Renderers that exist
have position, origin, orientation, color, and visibility. as objects in the system, produce images interactively.
Their visibility is controlled with on! and ofit messages. For external renderers, a renderer liaison creates a
They have an associated model that is kept in a sepa- command file that can be run later to do the rendering.
rate modeler object. By separating the actor’s state and An abstract renderer exists that specifies the protocol
model, we can preview an animation with simple mod- for all renderers. To add a new renderer, the user must
els, later substituting more sophisticated models for satisfy this protocol.
slower, but higher quality animations. Editors are objects that contain cues and recorders. They
Scenes contain cues and renderers. In addition, scenes are similar to scenes in that they send tick! messages to
have durations (in seconds), resolution (in frames per each of their cues and record! messages to each of their
second), and lists of actions to execute when they start, recorders. Editors manipulate the raster images created
while they are active, and when they complete. An ac- by renderers.
tion is any valid script statement. A scene executes ac- Recorders compose frames from multiple movie frames.
tions by sending parse: messages to the parser with the Each recorder has a list of sequences of movie frames
actions as arguments. Once a scene receives a start! that it can display and record.
message, it executes any start actions, and sends tick! Other classes available within the system include matrix
messages to each of its cues. After the cues complete, transformations, splines, scalars, vectors, key frames, and
the scene sends a render! message to each of its ren- collections.
derers. On a scene runs for its duration, it executes its
7. IMPLEMENTATION
end actions and sends a complete! message to each ren-
The system, written in C, runs on Digital Equipment Cor-
derer.
poration VAXs running VMS,@ Sun Microsystems work-
Cues contain temporal information that controls the pres- stations running Unix,@ and a Stellar GSlOOO graphics
ence and behavior of a scene’s participants. A start and computer (Newton, MA). The parser, produced using
end time define the interval that a cue is active. Cues YACC [12] and LEX [13], is an object that other objects
have clocks that advance at a cue-specific resolution. can send parse: messages to. Each class is a C module. C
When a tick! message is received from another object struct’s define the instance variables, but the structures
(typically a scene), the cue advances its clock and tests themselves are static so that they are not visible outside
if it should become active. If so, it executes each of its the module. A standard header, required for each class,
start and tick actions and advances its clock. As long as includes the object name, super class, debug information,
a cue’s clock remains within the interval, the cue exe- and other general instance variables.
cutes tick actions when it receives tick! messages. Once
the interval is exceeded, the cue executes its end ac- V M S is a trademark of Digital Equipment Corporation
tions. Unix is a trademark of Bell Laboratories
593
Every method is a C procedure and each class has a actor for each joint. It also generates cues for key work
method dictionary that contains the name of each mes- points in the analysis. The ROBOT generator sends the
sage and the appropriate procedure to invoke. Single in- script to the parser object and stores the script in a text
heritance of both instance variables and methods has file that can be edited later. The notion of generators re-
been implemented. The message handling is done through duces a user’s effort in starting a script while still main-
a message object that receives an instance name or pointer, taining the flexibility offered by the language.
message, and argument list. On receipt of a message, the 8.3. The Script
message object searches the instance’s method dictionary.
The scene has three cues. Pan moves the camera along a
If it finds a match, it invokes the appropriate procedure. If
path defined by a spline. Simulate sends a tick! to the RO-
not, it searches the method dictionary of the object’s super
BOT liaison object. When the ROBOT liaison object re-
class. This continues until the highest object in the object
ceives the tick!, it interpolates the transformations for
hierarchy is reached, when the message object reports an
each joint of the robot and sends position+ and orientation+
error to the user. An argument package, by keeping an
messages to each joint’s actor. The cue labeled both, com-
argument stack, allows methods to have variable numbers
bines the pan and simulate cues, setting the start time for
of arguments. Objects return and receive arguments
the simulate cue to be 1 second, i.e. the robot movement
through this mechanism.
will start 1 second after the camera pan begins.
The system now consists of over 120,000 lines of C -- First describe the scene
code. C macros generate the code for data structures and SCENE new: scene-1
methods that query or update instance variables. A class cues = (pan, simulate, both)
generator object automatically generates C code from a renderers = aPhigs
script describing an object’s instance variables and meth- -- Next define the participants.
ods. -- For brevity, we omit repetitive statements
ROBOT new: Qe-rObOt
8. A SAMPLE ANIMATION time=0
A short animation illustrates the capabilities of the sys- transfile= trans2.dat
tem. joint-1 =(robot-part-l-l)
-- joints 2 - 9 skipped for brevity
8.1. The Analysis System joint-1 O= (robot-part-1 0-1 ) :
The analysis package is an in-house system capable of COLLECTION new: robotparts
predicting articulated robot motion given starting and end- members=(robot-part-1-1 ,
ing positions of a robot hand. The user of this system -- robot parts 2 - 9 skipped for brevity
robot-part-1 0-1 ) :
interactively prescribes key positions of the robot hand,
and using kinematic techniques, the robot program pro-
-- Each joint in the robot is an actor
ACTOR new: robot-part-1-1
duces a graphic display of the motion of the robot. The modeler=modeI-l-l:
program creates a file containing transformations for each -- robot part instances 2 - 10 skipped for brevity
joint and member as it progresses through the simulation. -- Each actor has a modeler
The analysis does not require elaborate geometric models, GEOMOD new: model-1-1
using prisms to model members and cylinders to model universal=trans3.uni
joints. However, for animation purposes, more realistic object=transl :
representations are used. Here, the robot has been mod- -- model instances 2 - 10 skipped for brevity
-- Define cameras and lights
eled using GEOMOD [14], a commercial modeling pack-
CAMERA new: camera-1
age from SDRC. The transformations produced by the position=(228, 34.2, 90.0)
simulation are applied to the vertices of the polygons pro- view-up=(O.O, 1)
duced by GEOMOD. Liaisons for the robot simulation focal-point= (28 .O. 34.2, 36 .O)
and GEOMOD provide the interfaces between each exter- view_angle=45
cIipping_range=(5.,700.)
nal program and the animation system. A PHIGS+ ren-
onl;
derer produces the images on a Stellar computer. LIGHT new: light-1
8.2. Script Generators position= (camera-1 position?] on1;
A robot has many components, but, rather than burden PHlGS new: aPhigs
actors= robotparts
the user with creating actors for each component, a RO-
cameras= camera-1
BOT generator object scans user specified transformation lights= light-1 :
and modeling, files and generates a script that defines an -- path circle, below, is a spline left out for brevity
594
CUE new: pan - The system is less fragile than others we have written.
duration=[ge-robot duration?] We make changes and additions proceed without fear of
start-actions= breaking the system.
(”path-circle time = O;”, ”ge-robot time= 0.;)
tick-actions =
10. ACKNOWLEDGMENTS
“camera-1 position= ([path-circle tick!]);”; Object-oriented design methodology and computer graph-
CUE new: simulate ics application development is a team effort in our labora-
duration= [ge-robot duration?] tory. Other team members include: Michelle Barry (now
start-action= ”ge-robot time= 0.; ” with Star Technologies) and Dan McLachlan (now with
tick-action=”ge-robot tick1 ;” ;
Ardent Computer). The Animation Project at the
CUE new: both
duration= [ge-robot duration?] duration+ 1
Rensselaer Polytechnic Institute Center for Interactive
start-actions=” Computer Graphics contributed to the ideas described in
ge-robot time= 0.; this system. Jon Davis of GE provided interfaces to the
pan time=O start-0; simulate time=O start=l : robot simulation system.
.
9.
11. REFERENCES
-- Give start times for each cue
pan start = 0; simulate start = [pan end?];
Stefik, M. and Bobrow, D., “Object-Oriented Pro-
both start = [simulate end?]; gramming: Themes and Variations,” AI Magazine,
-- Now run the animation vol 6, no 4, pp. 40-62, 1986. .
scene-1 startl; Goldberg, A. and D. Robson, Smalltalk-80, The Lan-
The animation script creates instances of classes (defined guage and Its Implementation, Addison-Wesley,
in C modules) and specifies values for their instance vari- 1983.
ables. The objects interact with each other by sending mes- Cox, B., Object-Oriented Programming, An Evolution-
sages. The animation process begins with the message ary Approach, Addison-Wesley, 1986.
start! to scene-1. This message causes scene-1 to advance Stroustrup, B., The C++ Programming Language, Ad-
its own clock, send tick! messages to each of its cues, dison-Wesley, 1986.
followed by render! messages to each of its renderers. The Booch, G., Software Engineering with Ada, Benjamin
cues manipulate actors, cameras, and lights by sending Cummings Publishing, 1983.
messages to them. The renderers, on receipt of a render! Reynolds, C., “Computer Animation with Scripts
message, ask their associated actors, cameras, and lights and Actors,” Computer Graphics, vol. 16, no. 3, July
for current settings, and produce appropriate movie 1982, pp. 289-296.
frames. “Disney Takes the Lead with TRON,” Computer
9. SUMMARY Graphics World, vol. 5 , no. 4, April 1982, pp. 41-45.
OSCAR made its first film in December 1984 when it con- Magnenat-Thalmann, N. and D. Thalmann, Com-
sisted of twenty five classes including actors, cameras, puter Animation: Theory and Practice, Springer Ver-
lights, scenes, cues and renderers. Since its initial imple- lag, 1985.
mentation, OSCAR has grown to contain over ninety Breen, D., Apodaca, A. and P. Ghetto, “The Clock-
classes, fifty eight of which are subclasses of the original works,” TR-86016, Rensselaer Polytechnic Institute
classes, i.e. over half of the classes share code with other Center for Interactive Computer Graphics, 1986.
classes. [ 101 “PHIGS+ Functional Description,” Computer
During this project we have made several observations: Graphics, vol. 22, no. 3, July 1988.
- Applying the data abstraction process to animation pro- [ l l ] J. Foley and A. Van Dam, Fundamentals of Interuc-
duces a natural user interface with familiar terminol- tive Computer Graphics, Addison-Wesley, 1982.
ogy. [12] S. Johnson, YACC: Yet Another Compiler Compiler,
- The abstraction step of the design is critical and re- Comp. Sci. Tech. Rep. No. 32, Bell Laboratories,
quires the most effort.. Murray Hill, New Jersey, 1975.
- The object-oriented approach partitions a complex sys- [13] M. Lesk, LEX - A Lexical Analyzer Generator, Comp.
tem into manageable pieces. No single object is com- Sci. Tech. Rep. No. 39, Bell Laboratories, Murray
plex, but the system as a whole can deal with the com- Hill, New Jersey, 1975.
plexity of the modeled process. [ 141 GEOMOD Reference Manual, Structural Dynamics
Research Corporation, 1983.
595