8/10: The Bazaar repository format has been upgraded to the Bazaar 2.0 format. This means that you’ll need a reasonably recent version of Bazaar in order to download Syzygy. It also means that if you’ve already downloaded it in the old format and you want to upgrade your existing copy to the current version, you’l need to issue the “bzr upgrade” command in the szg directory (after making a backup) before you can successfully issue the “bzr pull” or “bzr merge” commands. Of course, you could just use “bzr branch” to grab a whole new copy…
8/08: We’ve migrated the Syzygy source code from CVS to Bazaar and made the repository publicly readable. This lets you grab a fully-functioning local clone of the source repository, to reconstruct any version of the code from the current bleeding edge all the way back to Sept. 28, 2004. To get the code, install Bazaar and type:
bzr branch http://syzygy.isl.uiuc.edu/repo/szg
Syzygy is a programming toolkit for writing virtual reality or other graphical applications.
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 it 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-spatially-localized text-to-speech is supported on Windows using the Microsoft Speech SDK.
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.
The Syzygy libraries themselves are written in C++. Syzygy applications can be written in either 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.
Windows users (particularly Python-oriented ones) are strongly encouraged to look at the related Aszgard project. It requires that you purchase a copy of Movable Python (about $10US as of this writing), but it’s by far the easiest way to get up and running with Syzygy.
We currently support a single Syzygy application framework called the Master/Slave Framework. This requires that 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 also contains a second application framework, the Distributed Scene Graph Framework. Unforunately, we are unable to continue maintaining or supporting this framework or the scene graph that it is based on. We are looking into marrying existing scene graph projects to Syzygy as a replacement.
Syzygy was created with the goal of running VR applications on a PC cluster with performance equal to that on 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. It was first publicly released in September 2000. There are now 5 stationary CAVEs (that we know of) running Syzygy: two here at the Illinois Simulator Lab (one of them used to belong to the NCSA, but we made off with it while they weren’t looking), one at University of Illinois’ Krannert Art Museum (the CANVAS) one in Berlin, and one in at Duke University in North Carolina (the DiVE. In addition, we have a traveling CAVE that’s just finishing a 7–1/2-month run (1/20/08–8/31/08) at a mathematical art exhibit at the Dennos Museum in Traverse City, MI. Syzygy has been used as the primary visualization tool for a number of classes, both at the univerity and high school levels. In addition, it has been used in several art projects besides the aforementioned exhibit.