Cube world
 
Project: Virtual Worlds
    This assignment is about setting up a Virtual Reality world viewed through a HMD. Tracking the head of the visitor to the VR world allows the visitor to view the world from his/her perspective. 

    My virtual world is a complete room with 4 walls and a floor. There is a divider in the room so that the visitor is forced walk around the divider to see the diamond cube floating in midair. 

Technical implementation
    VR-Juggler is the main engine VR for the application. It manages the displays, tracking, and human interaction. My contribution is to create the world. I extended the “torus” example that is distributed with VR-Juggler. In the process I have learned the following about VR-Juggler: 
     
    • How to configuration files work in simulation and real (with actual tracker and HMD) mode;
    • How to setup the VR-Juggler development environment in Visual Studio (finding libraries and include files takes time);
    • How the application connects to the rest of VR-Juggler; and
    • Understand the tracking model of the head, wand, and camera (simulation mode).


    Once I understood VR-Juggler and the “torus” example I could develop my worlds of cubes. The world is developed with OpenGL. My building block is a 1x1unit (I think unit=meters) cube. A wall (drawwall()) consists of the cubes in a checker board pattern. The walls can be made variable sizes, duplicated, rotated, and translated in the virtual world. In the process I learned the following:
     

    • What the orientation and scale of the virtual world should be to fit into the real-world lab. The origin of the world is at the EVE cabinet. Dimension XY are along the floor, whereby Y is from the origin to the Latency1-cs computer. The Z dimension is up.
    • Standing “in” the virtual-wall and looking along the long surface can verify the placement. 
    • Relearned to program OpenGL. This is a useful tutorial site: NeHe's OpenGL Tutorials,  
    • I learned that the checkerboard wall pattern is more appropriate than a solid wall. It is difficult to notice motion when looking a solid colored wall. It was obvious to see motion when looking at the checkerboard-patterned wall. 
    • The frame rate of the virtual world seems slow as the viewed images “jump” as the viewer’s head turns.


    The code is here

    • torusApp.c -- The code where the virtual world is drawn (see drawroom()).
    • The rest of the code is like the torus example. 

 
Beyond cube world
    I tried to expand the virtual world but ran out of time to complete them
     
    • Texture mapping. I wanted to use texture mapping to make objects standout. I abandoned the idea after I could not find a standard way to load the texture’s bitmap. Choosing a non-stand method is OK, but I would have to get it to work on two computer systems.
    • I am experimenting with spatial audio using OpenAL (Creative labs). In a non-standard way I was able to integrate an OpenAL into the VR-Juggler example. Sound can be generated, however, is incorrect as I have not yet aligned the audio virtual world to the lab coordinates.

 
 
Thanks
    Thanks to Jason Jearld for setting up VR-Juggler, this project could have been a much more complicated 

 
     
 top * home * academics
dorian miller, 9/2/2002