An Embedded Modeling Language Approach to
Interactive 3D and Multimedia Animation

Conal Elliott

Microsoft Research


While interactive multimedia animation is a very compelling medium, few people are able to express themselves in it.  There are too many low-level details that have to do not with the desired content, e.g., shapes, appearance and behavior, but rather how to get a computer to present the content.  For instance, behaviors like motion and growth are generally gradual, continuous phenomena.  Moreover, many such behaviors go on simultaneously.  Computers, on the other hand, cannot directly accommodate either of these basic properties, because they do their work in discrete steps rather than continuously, and they only do one thing at a time.  Graphics programmers have to spend much of their effort bridging the gap between what an animation is and how to present it on a computer.

We propose that this situation can be improved by a change of language, and present Fran, synthesized by complementing an existing declarative host language, Haskell, with an embedded domain-specific vocabulary for modeled animation.  As demonstrated in a collection of examples, the resulting animation descriptions are not only relatively easy to write, but also highly composable.

This paper appeared in IEEE Transactions on Software Engineering, May/June 1999 25(3) and is (c) 1999 IEEE.

Note the figures in this paper are high resolution, in order to print well, but they are consequently very large.  Also, the color figures may not look as good on a grayscale printer. You can get color PDF (1.1Mb), or this grayscale PDF (2.3Mb) or one of the following Postscript versions, with color, grayscale, or non-existent figures, and uncompressed, zipped, or gzipped.  The numbers (which are hyper-links) in the table are the size in Mb.

uncompressed zipped gzipped
color 22.8 9.9 9.9
grayscale 5.6 3.0 3.1
none 1.3 0.4 0.4


  author       = "Conal Elliott",
  title        = {An Embedded Modeling Language Approach to Interactive {3D} and Multimedia Animation},
  url          = {},
  journal      = "{IEEE} Transactions on Software Engineering",
  ISSN         = "0098-5589",
  year         = "1999",
  volume       = "25",
  month        = may # "/" # jun,
  number       = "3"

(c) 1999 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE.