Project Description
Iching Hexagram 16. Wing calls it Harmony, and Wilhelm Enthusiasm. Meaning: Enthusiasm harmonizes when it inspires rather than commands.
This project seeks to expedite the creation of more compelling collaborative VR applications using either the CAVE or Immersadesk VR display devices.  Tandem is a Distributed Interaction Framework for Collaborative VR applications.  It makes use of the CAVElib for VR projection display support, and CAVERNsoft for its networking. Its stategic use of object technology such as STL and Design Patterns enables an architecure that exploits existing patterns in Collaborative VR.  This framework allows VR developers to spend more time developing the application content and less time implementing generic VR requirements. 

This is a screen shot from a demo Tandem application. The model is borrowed from a work called Mitologies which is inspired by Dante's Inferno, Durer's woodcuts after the Apocalypse, and Wagner's The Ring. It is designed after a sketch by Leonardo Da Vinci of a church that was never built. Credit: Image courtesy of Hisham Bizri and Alan Cruz; EVL 1998.  Tandem Demo Application produced by Benjamin Goldstein, Mike Lewis, Ya Ju Lin; EVL 1999)
Background Work Limbo History
Feature Overview
  • Graphics
    • IRIS Performer Support
    • OpenGL Support
      • Development base class is provided for OpenGL code
    • Tandem Hierarchical Component Tree
      • DAG of TcGfxComponents
      • Composed of groups (composite) and objects (leaf nodes)
      • Supports run-time additions of state and behavior
      • Recursive background loading for a designated group
      • Runtime asynchronous model loading
      • Prioritized model loading based on proximity or other criteria
      • Partitioning of Virtual Environments
  • Interaction
    • Tandem Core ActionEvent classes
      • associated with one or more graphic components
      • triggered explicitly or once per iteration for cases like animated objects
      • scene transitions
      • sound events
      • graphics manipulations
      • animation
      • timed delays
      • network updates
    • Tandem Core Action Classes 
      • Built-in handler interface, through inheritance.
      • Support of both 1 to N and N to 1, actions to handlers
    • Tandem Core Graphics Visitors
      • Carry out the results of actions.
      • Provide operations to be defined for each element type within the scene-graph
      • Recover run time type information without switch statements or RTTI
      • Allow additions of behavior without the need to change the interface of the Scene graph
    • Tandem Core Audio Player based on Bergen Sound Server by Dave Pape
  • Networking
    • Enables the development of collaborative and distributed applications
    • Divides networking into two categories
      • Network Event Processing
        • Multi Process/Thread Support for asynchronous processing 
      • Network Event Sending/Receiving
    • Network event model
      • Provides interface for serialization
    • Fully integrated with Tandem Core, Graphics and Interaction
    • Currently supported by CAVERNsoft, but designed to be extended to support any networking layer
Architecture Introduction to Tandem Architecture
Applications Mars Explorer

Tandem API documentation.
API pdf

Downloads Tandem 1.0 is ready for release.
Supported Platforms : IRIX 6.4+
Requirements: CAVElib 2.6+ , Peformer 2.2+ and CAVERNSoft if you wish to take
advantage of Tandem's network features. A port is currently in progress to the latest version of CAVERNSoft G2 so it is recommended not to develop any major networked applications at this time.

Tandem Libraries Beta 1.0

Presentations December 1, 1999
March 29, 1999

Thesis pdf


Development Team    
Team Leader and Chief Architect Benjamin Goldstein benjamin@evl.uic.edu
Domain and Requirements Analysis Nikita Sawant
Michael J. Lewis
Abhinav Kapoor
Josephine Anstey
Satheesh Ganapathi Subramanian
Chris Scharver


Plug-in Modules Michael Lewis
Zhongwei Qui 
Chris Scharver 
Nikita Sawant
Satheesh Subramanian
Collaborative Menus Interface
Input Devices 
Interchangeable avatar models
Video Avatars 










Last updated Sunday, November 21, 1999