[Claus Reinke] [FunWorlds/HOpenGL] [Summary] [Paper] [Presentation] [Screencast] [Source]

FunWorlds/VRML -- Functional Programming and Virtual Worlds

This page is about the first, VRML-based, generation of the FunWorlds project, named FunWorlds/VRML. The second, OpenGL-based, generation was FunWorlds/HOpenGL.

Summary: The Virtual Reality Modeling Language (VRML'97) is a standard format for describing interactive 3d content, especially on the world-wide web. It combines declarative specifications of static scenes with imperative manipulations of scene graphs to realise dynamic scenes.

We set out to re-examine the design space for interactive 3d content, taking the current standard VRML'97 and Fran (Functional Reactive Animation) as yardsticks. We prototype our experiments as an embedded compiler in Haskell, generating standard VRML'97+ECMAScript code from concise declarative descriptions. The results are promising in two directions: first, they give the functional programming community access to a rich output medium for animated, interactive 3d content, employing standard technology, but avoiding low-level imperative specifications. Second, the mapping will help to compare Fran, which developed out of ActiveVRML, with VRML'97, which developed out of a competing proposal for VRML 2.0, hopefully helping the VRML community to re-assess the values of Fran's concepts.

Paper: FunWorlds -- Functional Programming and Virtual Worlds, Claus Reinke, draft paper presented at IFL 2001, Stockholm, Sweden, September 24-26.

Source code: update (14/11/2003): following requests, a snapshot of the old system used to generate the presentation below is now available (FunWorldsVRML-14112003.tar.gz, README.txt)

Presentation: The project presentation about FunWorlds/VRML is itself a VRML file generated by a prototype of FunWorlds/VRML (a stress test;-). The presentation gives some examples using an embedding of VRML concepts in Haskell, combined with features of the host language and some first Fran concepts. The slides, or rather: the worlds of the presentation are available below. The source code shown on the slides is the one used to generate the examples in our current experimental prototype - note that the details of syntax are likely to change.

FunWorlds -- Functional Programming and Virtual Worlds

24.09.2001, Stockholm, Sweden, 13th International Workshop on the Implementation of Functional Languages
(slides are available as VRML files; you'll need a free VRML browser or plugin, e.g., ParallelGraphics' Cortona for Windows or Mac; there are browsers for most platforms, see vrml archive for alternatives); [IE users should see the slides embedded below, using Cortona plugin; if you haven't used Cortona before, you'll be asked for permission to install (less than 1Mb, takes a minute or so to download) and whether you want to use it as your default VRML viewer];

Use the long arrow at the bottom to navigate, make sure that anti-aliasing is switched on in your VRML browser, otherwise the text will be hard to read; when you come across a big grey cube, try clicking on it, but not too often (unless you've got a very big machine;-); same for the strange tree on the last but one slide.. Oh, and don't feel limited to two dimensions - if your VRML browser supports navigation, you can try to read the text from the back of the slides (not recommended;), but try not to get lost..

If you don't want to install a VRML viewer, you can also see a non-interactive screencast version of the presentation.