| |
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.

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.
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 to Jason Jearld
for setting up VR-Juggler, this project could have been a much more complicated
|