This Article 
 Bibliographic References 
 Add to: 
An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation
May/June 1999 (vol. 25 no. 3)
pp. 291-308

Abstract—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.

[1] K. Arya, “A Functional Animation Starter-Kit,“ J. Functional Programming, vol. 4, no. 1, pp. 1-18, Jan. 1994.
[2] P. Caspi, D. Pilaud, N. Halbwachs, and J. Plaice, "Lustre: A Declarative Language for Real-Time Programming," Proc. 14th ACM Symp. Principles of Programming Languages, pp. 178-188, Jan. 1987.
[3] A. Daniels, “Fran in Action!“ 1997. to appear /
[4] C. Elliott, “A Brief Introduction to ActiveVRML,“ Technical Report MSR-TR-96-05, Microsoft Research, Feb. 1996. pubsasp.asp?RecordID=38
[5] C. Elliott, “Composing Reactive Animations,“ Dr. Dobb's J., July 1998. Expanded version with animated GIFs: tutorial.htm.
[6] C. Elliott, “Functional Implementations of Continuous Modeled Animation,“ Proc. PLILP/ALP'98, Expanded version: pubsasp.asp?RecordID=164.
[7] C. Elliott, “From Functional Animation to Sprite-Based Display,“ Proc. PADL'99, Expanded version:
[8] C. Elliott, “Declarative Event-Oriented Programming,“ Technical Report MSR-TR-98-24, Microsoft Research, Oct. 1998. pubsasp.asp?RecordID=190. scripts/pubDBpubsasp.asp?RecordID=188
[9] C. Elliot, G. Schechter, R. Yeung, and S. Abi-Ezzi, “TBAG: A High Level Framework for Interactive, Animated 3D Graphics Applications,” Computer Graphics (Proc. SIGGRAPH '94), pp. 421-434, 1994.
[10] C. Elliott and P. Hudak, “Functional Reactive Animation,” Proc. 1997 ACM SIGPLAN Int'l Conf. Functional Programming,
[11] S. Finne, D. Leijen, E. Meijer, and S.L. Peyton Jones, “H/Direct: A Binary Foreign Language Interface for Haskell,” Proc. Int'l Conf. Functional Programming, 1998.
[12] S. Finne and S.L. Peyton Jones, “Pictures: A Simple Structured Graphics Model,” Proc. Glasgow Functional Programming Workshop, July 1996.
[13] T. Gautier, P. Le Guernic, and L. Besnard, “Signal: A Declarative Language for Synchronous Programming of Real-Time Systems,“ G. Kahn, ed., Functional Programming Languages and Computer Architecture, Lecture Notes in Computer Science 274, G. Goos and J. Hartmanis, eds., pp. 257-277, Springer-Verlag, 1987.
[14] P. Henderson, “Functional Geometry,“ ACM Symp. Lisp and Functional Programming, pp. 179-187, 1982.
[15] P.M. Hubbard, "Interactive Collision Detection," Proc. IEEE Symp. Research Frontiers in Virtual Reality, Oct. 1993.
[16] P. Hudak, “Modular Domain Specific Languages and Tools,“ Proc. Fifth Int'l Conf. Software Reuse, June 1997.
[17] P. Hudak and J.H. Fasel, “A Gentle Introduction to Haskell,“ SIGPLAN Notices, vol. 27, no. 5, May 1992.
[18] P. Hudak, T. Makucevich, S. Gadde, and B. Whong, “Haskore Music Notation—An Algebra of Music,“ J. Functional Programming, vol. 6, no. 3, pp. 465-483, May 1996.
[19] P. Hudak et al., “Report on the Programming Language Haskell, a Non-Strict, Purely Functional Language, Version 1.2,” ACM SIGPLAN Notices, Vol. 27, No. 5, May 1992.
[20] P.J. Landin, “The Next 700 Programming Languages,” Comm. ACM, vol. 9, no. 3, pp. 157-164, Mar. 1966.
[21] P. Lucas and S.N. Zilles, “Graphics in an Applicative Context,” CS Research Report, No. RJ 5542 (56566), IBM Almaden Research Center, Mar. 1987.
[22] Microsoft, “DirectAnimation SDK,“;com/~conal/papers/ icfp97.ps Users/simonpj/Papers/ / directx/dxm/help/dac-frame.htm#default.htm
[23] M.A. Najork and M.H. Brown, "Obliq-3D: A High-Level, Fast-Turnaround 3D Animation System," IEEE Trans. on Visualization and Computer Graphics, Vol. 1, No. 2, 1995, pp. 175-193.
[24] M. Pesce, VRML Browsing and Building ByberspaceCyberspace: The Definitive Resource for VRML Technology, New Riders Publishing, 1995.
[25] J. Peterson, C. Elliott, and G. Shu Ling, “Fran User's Manual,“ 1998.
[26] S. Peyton Jones and A. Santos, “Compiling Haskell by Program Transformation: A Report from the Trenches,“ Proc. Sixth European Symp. Programming, ESOP'96, Linkping Sweden, Lecture Notes in Computer Science 1,058, Springer-Verlag, Apr. 1996.
[27] S. Peyton-Jones and P. Wadler, “Imperative Functional Programming,” Proc. ACM Symp. Principles of Programming Languages, pp. 71–84, Jan. 1993.
[28] G. Schechter, C. Elliott, R. Yeung, and S. Abi-Ezzi, “Functional 3D Graphics in C++—with an Object-Oriented, Multiple Dispatching Implementation,” Proc. 1994 Eurographics Object-Oriented Graphics Workshop, Springer Verlag. Papers/ ~conal/
[29] M. Zmuda, M. Rizki, and L. Tamburino, "Approaches to Synthesizing Image Processing Programs," Proc. IEEE National Aerospace and Electronics Conf., vol. 3, pp. 1,054-1,059, 1991.
[30] S. Thompson, Haskell: The Craft of Functional Programming, Addison Wesley Longman, 1996.
[31] S. Thompson, “A Functional Reactive Animation of a Lift Using Fran,“ TR 5-98, Computing Laboratory, Univ. of Kent, May 1998.
[32] The VRML Consortium Inc., “VRML97 International Standard,” part1nodesRef.html.
[33] W.W. Wadge and E.A. Ashcroft, Lucid, the Dataflow Programming Language. UK: Academic Press, 1985.
[34] P. Wadler, “The Essence of Functional Programming,” Proc. 19th Symp. Principles of Programming Languages, ACM, Jan. 1992.
[35] S.N. Zilles, P. Lucas, T.M. Linden, J. Lotspiech, and A. Harbury, “The Escher Document Imaging Model,” Proc. ACM Conf. Document Processing Systems, pp. 159-168, ACM Press, Dec. 1988.

Index Terms:
Graphics, animation, multimedia, temporal modeling, domain-specific languages, embedded languages, functional programming, Haskell.
Conal Elliott, "An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation," IEEE Transactions on Software Engineering, vol. 25, no. 3, pp. 291-308, May-June 1999, doi:10.1109/32.798320
Usage of this product signifies your acceptance of the Terms of Use.