instantreality 1.0

Immersive VR With The Emagin Visor

Keywords:
tutorial, X3D, active, stereo, head tracking, emagin, HMD
Author(s): Torsten Fröhlich
Date: 2009-02-08

Summary: The eMagin Visor is a lightweight and affordable head mounted display. This tutorial explains how to set up the display and instant player for headtracked stereoscopic VR applications.

Introduction

The eMagin Visor Z800 is a lightweight and affordable head mounted display. It features two OLED displays which can display two independent images. Being compatible to the Stereographics shutter glasses, it can be driven by an time-sequential (aka "active") stereo video signal.

Image: The eMagin Visor

For immersive VR, headtracking is a must. The eMagin visor has a built-in head tracker consisting of acceleration sensors and a compass. This sensor combination only allows registering rotations of the head. Changes in the head position cannot be measured. That is not enough for many professional VR applications but the sensor quality is quite good and, hey it's free ;-)

In order to set up instantreality and the display, two major challenges must be mastered:

  1. Setting up active stereo rendering
  2. Routing the sensor data into instantplayer

Both issues are not really difficult once you know what you are doing, but it took me quite a long time to get it to work. That wouldn't been possible without the continuous help of Patrick Dähne. He went to great lengths to get this going. Take a look into the forum and you know what I mean.

Setting Up Stereo

Hardware Preconditions

In order to generate a time-sequential (active) stereo video signal, your graphics card must support quad buffer. That's a front and back buffer for the left and the right eye. Quad buffer is typically not possible with consumer graphic cards. There are OpenGL drivers tweaking consumer cards into stereo mode as well as tools like the RivaTuner, but these are not covered here. I assume that you have a graphics card allowing for quad buffer. I have a NVIDIA Quadro FX 1500 and all other cards of this type series should work as well.

Operating System And Drivers

This tutorial covers only the Windows operating system. Moreover, at the time of writing, only Windows XP is capable of active stereo rendering. It took some time to find out which OpenGL driver version actually works with instantplayer. Here it is: Forceware 169.21. Newer versions probably work as well.

Enabling Stereo

Before we actually connect the eMagin display, we have to enable active stereo rendering and set the correct resolution. Open the NVIDIA control panel by right clicking on your desktop, select the task "Manage 3D settings" and scroll down to the stereo settings. Set" Stereo - Display Mode" to "Use shutter glasses", set "Stereo - Enable" to "On" and "Stereo - Swap Eyes" to "Off". Your screen should look like this:

Image:

Now we are ready to test if active stereo is working. Patrick recommended a free tool called redblue.exe. You can download it here.

After launching redblue.exe, you should see a window with flickering contents: A blue and a red rectangle alternating rapidly. Congratulations, you've got stereo working!

The final step is connecting your eMagin display and check if it works properly in stereo. Make sure you change the screen resolution to 800x600 pixels. You will see your (monoscopic) screen first. If you start redblue.exe, you should see the blue rectangle with your left eye and the red one on the right. The LED on the eMagin's electronics box should switch to constant (not blinking) green.

Head Tracking

After having installed the eMagin driver and connected the device, you'll find a small icon at the right side of your task bar, depicting what Patrick called an "ugly mafioso". You will also notice that your mouse cursor will move if you take your eMagin display and rotate it. That indicates that your display's sensors are working nicely, but this mouse emulation is poison for instantplayer's device manager, because it blocks the device. So we have to remove it by killing the service. Right click on the icon in the task bar and select exit.

Warning: Beware of the mob: Stop the eMagin mouse emulation by removing the ugly mafioso icon from your task bar!

Next is some X3D code providing the "glue" between the eMagin motion sensors and instantplayer:

#VRML V2.0 utf8

DEF emagin IOSensor
{
  type "eMagin"
  eventOut SFRotation Orientation
}

DEF vp Viewpoint {}

ROUTE emagin.Orientation TO vp.set_orientation

Inline {
	url "matrix.wrl"
}

This defines some I/O device of type "eMagin" which provides a single output slot: The orientation provided by it's motion sensors. This is routed to the the viewpoint controlling the camera. Finally, some test scene is loaded. That's all we need for head tracking with the eMagin!

In order to obtain a deeper understanding of X3D files provided by this tutorial, you may find it useful to read the tutorials "Active Stereo" and "Connecting Devices".

Files: