On March 9th I attended the Searis 2008 Workshop: Software Engineering and Architectures for Realtime Interactive Systems, which was the perfect workshop for me 😉
The workshop was about presenting existing architectures and regroup people working on that particular topic, learn from existing projects so that people don’t reinvent the wheel everytime, learn from others and try for find some formalization.
Anthony Steed pointed out that having a platform running for many years is very hard and that it has to be rewritten once in a while. Architecture gets cluttered and needs a fresh restart. Nonetheless, the DIVE platform still allows him to run demos that are several years old, which is probably not the case on many systems. Many platforms break compatibility when upgrading (or license expire for commercial products).
We had the presentation of a lot of middleware architectures (InTml, Lightning, FlowVR, OpenMask, ViSTA VR, Morgan) with lots of common ground such as data flow, abstraction of devices/interaction techniques/renderer, easy cluster distribution, portability.
And there is a lot of wheel reinvention on all this common ground, but at least people are not reinventing scenegraphs (well not everyone but for good reasons, see below). Scenegraph libraries are widely used, with a lot of OpenSG, OpenSceneGraph and Ogre3D. It seems it might be a good idea to create a meta scenegraph library (if it was at all possible ;), as every engine is switching from one scenegraph lib to another at some point.
There is a new trend towards interaction techniques abstraction, following the devices abstraction.
There is also a trend of using handheld devices with limited rendering capabilities, like smartphones, PDA, mainly for Augmented Reality. Not so many platforms/toolkits support those devices (which is why Morgan created their own SceneGraph that supports this feature).
An interesting approach for manipulating heavy graphics data is to use multi-frame rate rendering. The problem is that if your data can only be displayed at very low frame-rates, your interaction will also be that slow. But you can have one fast rendering loop for user interaction, and one slow rendering loop to display the graphics data. The two images would be created on two different graphics card or PCs, then digitally composed to create the final image.
Research in the academics are being conducted to get some higher level frameworks. For example, engines that use functional reactive programming, or the actor model on abstract semantic level. I’m sorry but I didn’t quite understand what it was all about, a bit too academic programming for me.
Some other high level interesting additions are semantic description of a world/application/interaction and the use of dual state machine/data flow approach. Semantic description using web semantic tools were discussed several times.
If you’re interested in joining the group, Raimund Dachselt will give you the details of the next steps.