Demonstration Programs

This page describes the demonstration programs I wrote for the graphics lab's FakeSpace® Virtual Reality Workbench. The programs are compiled for an SGI Onyx2 graphics workstation, using the FakeSpace workbench library.

Prerequisites

As I had to find out the hard way, the FakeSpace-supplied tracker driver program (the program which reads the Polhemus FasTrack® hardware and sends sensor positions to the application programs) is less than reliable (FakeSpace's pinch glove driver, on the other hand, works quite well). Since FakeSpace support was virtually non-existing, I had to reverse-engineer the driver program specification and write my own. Luckily, the Polhemus data format is straightforward and well-documented.

My own tracker driver does not have as many features as the "official" one, but it runs rock solid and wastes much less processor resources.

The VR Demos

Virtual Landscape
This is my first VR demo, and it is little more than a container I dumped everything into that came to my mind. Basically, it creates a fractal landscape on startup and displays it on top of the workbench's screen. Afterwards, you can use the stylus as a "Virtual Flashlight" to illuminate parts of the landscape, or you can drop a little ball onto the landscape and watch it rolling down. In another mode of operation, you can use the stylus for freehand drawing in 3-space, a mode I call "Virtual Blackboard." Attached to the user's right hand is a soccer ball (for no apparent reason!), and by pinching fingers of the left hand the user can add different-colored light bulbs to the scenery.
One notable thing about this demo is the first appearance of what I call the "Virtual Wrist Watch:" By a twist of the left wrist, a popup menu is displayed where your wrist watch would be otherwise; you can then use the stylus to pick menu items. I found out that this style of interaction is very natural, and the wrist watch paradigm is the basis of my later CAD framework.
As I said earlier, this demo has everything in it apart from the kitchen sink (Oh, and the "Virtual Rolex" has a cameo, too!).
Objects in Motion / Objects at Rest
This toy program is my attempt at writing a dynamics simulation. It is far from complete, but much fun to play with even in this early stage. It displays a collection of simple objects in space. By selecting an object using the stylus, one adds a "spring frame" around the object. This frame will be attached to the stylus, and if dragged around, the bound object will follow it. After releasing the object, it will move on, following only physic's laws.
Virtual Clay
This is a very early demonstration program I wrote in cooperation with Elke Moritz for her Diploma thesis. It does nothing but display a blue cube of "Virtual Jell-O" that can be moved around by grabbing it with the left hand. Attached to the stylus is a cutting plane, which will cut away pieces from the cube when the stylus button is pressed.
The Jell-O is represented using an octree of fixed maximum depth, and the program was as well a test case for my octree class as an experiment for two-handed interactions in VR environments.
Volume Renderer
This demo is an experiment about the merits of using VR techniques for volume rendering. It features a (very simple) hardware-accelerated volume renderer I wrote some time earlier, and you can move the displayed volume and add cutting planes exactly as in the Virtual Clay demo. If someone wrote a better volume renderer for me, this demo could be a very neat tool for volume data exploration: Interaction is very natural, only image quality is very poor.
Virtual Reality CAD
This is a test bed for the growing number of features of my CAD framework. You can instantiate simple objects and tensor product Bezier surfaces and modify them using the stylus and pinch gloves. Direclty manipulating Bezier patches with your hands is very natural (and great fun, too!), and I see some potential for VR techniques in CAD.
Stay tuned for more features to come!