Syzygy: A Cross-Platform, Distributed Operating System for PC-Cluster-Based Virtual Reality

Dev

Take a look at Syzygy: a new programming toolkit for writing virtual reality or other graphical applications. From the Syzygy website: "A virtual reality is a spatially-displayed set of data that the user can move around in and interact with. For best results, it requires a device to track the position and orientation of the user's head (so that the display can be updated correctly for the user's current viewpoint) and of a hand-held input device; Syzygy supports a variety of tracking devices. A virtual world will also make a stronger impression if the display is stereoscopic, providing distinct views for the user's left and right eyes and yielding a strong percept of 3-D; Syzygy supports a number of methods of presenting virtual worlds stereoscopically.

Syzygy applications can run on a single computer, but Syzygy is especially designed for the creation of applications to run on clusters of networked computers. Programs or instances of the same program running on different computers in the cluster communicate with one another and share data. The cluster as a whole effectively becomes a single computer with multiple screens and input devices. The rendering of your virtual world is synchronized on all of the computers (to within a few milliseconds), so different screens in the cluster give you different simultaneous views on the virtual world. Included utilities handle communication with 6DOF trackers and other input devices. Spatially-localized sound is supported using the FMOD libraries and non-localized text-to-speech on Windows.

Syzygy runs on Windows, Linux, MacOS X, and Irix. A cluster can be heterogeneous, i.e. you can mix different operating systems. Installation varies somewhat between operating systems.

Windows users (particularly Python-oriented ones) are strongly encouraged to look at the related Aszgard project.

The Syzygy libraries themselves are written in C++. Syzygy applications can be written in either of two programming languages: C++ or Python. Applications written in C++ run more quickly, but for many applications this is unimportant for two reasons: First, unless your virtual world is fairly complex, most of the computing is probably happening on the graphics card, so the language the program is written in doesn't matter much; Second, the Python code is generally making calls to the C++ libraries to do most of the work anyway.

Syzygy can be used to write two different kinds of programs, using the provided application frameworks:

  • The Distributed Scene Graph Framework is easier to use, but much more limited. In this framework, a single copy of your program runs on one computer in the cluster. Your virtual world is contained within a special-purpose database, and you modify the world by sending commands to the database. Changes to the database are mirrored to a special-purpose rendering program (called szgrender) running on each computer of the cluster; this program draws the database for you. The main advantage of this approach is that most of the work of drawing your world and keeping the various copies of it on the various computers synchronized with one another is handled for you. The disadvantage is that your virtual world can only contain the types of objects that the database knows about, and you don't have complete control over how they are rendered; it would be difficult to make them partially transparent, for example.
  • The Master/Slave Framework is a bit harder to use, but much more powerful. You manually specify how your virtual world is to be rendered, using the OpenGL graphics library. A copy of your program runs on each computer. One copy is designated as the master; the rest are slaves. You can specify that certain processing only occurs in the master copy. Data that you specify are then copied from the master to each of the slave copies. You have another opportunity to perform additional processing, either in all instances of the program or only in the slaves, and then your virtual world is rendered on each computer.

Syzygy's initial motivating goal was to run a wide range of VR applications on a PC cluster with equal performance to shared-memory SMP machines like the SGI Onyx, which used to be the preferred platform for high-end VR. Subsequent work has focused on making the system portable, robust, and easier to use.

The first release of Syzygy on the web was in September 2000. There are now 5 PC cluster CAVEs (that we know of) running Syzygy: two here at the Integrated Systems Lab (one of them used to belong to the NCSA, but we made off with it while they weren't looking), one at UIUC's Krannert Art Museum (the CANVAS), one in Berlin, and one in at Duke University in North Carolina (the DiVE. Syzygy has been used as the primary visualization tool for 5 classes (as of this writing in March 2005), both at the univerity and high school levels. In addition, it has been used in 6 art projects: three projects shown in museums, one "tele-dance", one UIUC faculty dance show, and one art conference installation."


Powered by Drupal - Design by J-A Boulay (from an artinet theme)