Dive Immersive Guide


Overview & Default Scripts | Immersive | Configuration Guide | Source Code

Overview

Dive3.3x supports several new hardware configurations, the VR4 helmet, fastrak and CrystalEyes glasses. This has (hopefully) been done in such a way that other devices are easy to support (a Sony Glasstron helmet has been used and also logitech trackers are support).

Essentially you still run vishnu, but with a configuration file that supports a HMD video format, and with the relevant tracker files.

This discussion concerns the immserive support for Dive 3.3x. Previous supported versions include 3.0.13 and 3.1 and 3.2. Only the latter is documented .

Default Scripts

To use the immersive configuration an example helper script dive_hmd/ has been provided. This is installed in /cs/research/vr/starship/common/irix/bin.

There are several parts to this scripts, and they are meant as examples for users to copy and edit for their own purposes. The stages are: +

From within the immersive system, the application can be quit by pressing all the buttons on the 3D mouse simultaneously.

Immersive

Display

The video side of the hmd support is very simple, since the process need only render into two viewports that correspond to the position where the video format combiner has determined the HMD input will be taken from. We do in fact use the same video format combinations as the dvs support (dvs_vr4.cmb/dvs_vrs_mono.cmb). See the default scripts above for example of how to switch the video.

Tracking

Two new processes are introduced, fastrakserver and buttonserver. These run indpendently of the dive process (hmd/diva), and do the actual reading of the physical device involved. The dive process makes a socket connection to both of these processes and registers interest in receiving events when new data is read. This is done so that in theory more than one dive process can read the device at a time, and also so that a single dive process can read more than one of a particular device.

fastrakserver

fastrakserver reads the fastrak box and does the coordinate conversion to virtual world space. The current version requires a configuration file to specify the rotation and scale parameters for this conversion.

Parameter list:

The configuration file has the following format:
    line 1: %s\n 
          fastrakserver version check line current versions are:
          %s = 
     
    line 2: %s\n 
          Indication of whether matrices should be reported 
          row major or column major. String match either
          %s = 
    
    line 3-5: %f %f %f\n %f %f %f\n%f %f %f\n
          Pre-rotation matrix for sensor 0
    line 7-9: %f %f %f\n %f %f %f\n%f %f %f\n
          Pre-rotation matrix for sensor 1
    line 11-13: %f %f %f\n %f %f %f\n%f %f %f\n
          Pre-5otation matrix for sensor 2
    line 15-17: %f %f %f\n %f %f %f\n%f %f %f\n
          Pre-rotation matrix for sensor 3
    
    line 19-21: %f %f %f\n %f %f %f\n%f %f %f\n
          Transformation from tracker coordinate system to world
          coordinate system
    line 23: %f %f %f\n
          Units scale mapping tracker to world
    line 23: %f %f %f\n
          Position offset from tracker to world

There are several configuration files provided. These allow for different devices to be used for the hand tracked device. Examples: Note, that if the fastrakserver is reconfigured to support more or fewer trackers, the dive_configure file will have to be be changed also, so that dive knows which limbs are being tracked, and how many devices to ask for.

buttonserver

Reads the
8-bit serial device.

Parameter list:

In order to test the fastrak or button servers, there are two programs in
/cs/research/vr/starship/common/vr/dive/local3.2/appl
fastrakclient and buttonclient, that implement the client interfaces that dive uses to poll the respective servers.

Misc.

If problems do occur, they are more than likely to do with conflicts for the device (more than one server trying to read the same device) or the device itself is not responding (use readfastrak or readbutton to test this).

fastrakserver and buttonserver can of course be replaced by any other process that can report equivalent data. For example, xstealbuttonserver is a replacement for buttonserver that steals all X mouse click events and sends them to dive. This is useful when very rapid response to button presses is required.

Interaction

Vehicle Operation

The fastrak vehicle operates a number of interaction metaphors. It supports the virtual treadmill metaphor, and various options for the navigation and picking metaphors.

Miscellaneous

The only restriction is that in hmd stereo mode, you are not allowed to change the viewpoint (i.e. the viewpoint variable is ignored), and this option is disabled on the menus. This is because the left and right eye objects in the body are used to determine the parameters of the stereo display, and shouldn't be moved relative to the body.

Dive Configure Files

diva_hmd process more than the usual parameters found in a dive_configure file. Each process runs a different configure file:

Configure Files Options

Using simple_configure as an example, the extra options are:
display_type	mono
fastrak_host    genesis
fastrak_socket  1960
fastrak_freq    20
fastrak_tags    RIGHTHAND HEAD
button_host     genesis
button_socket   1962
button_freq     20
button_tags     RIGHT_BUTTON MIDDLE_BUTTON LEFT_BUTTON TOP_BUTTON BOTTOM_BUTTON
stereo_win  0 52 640 972 0 486 640 486 0 0 640 486
move_dir        look
move_mode       planar
fastrak_on      1
vtm_init_on     0
vtm_record_on   0
torso_rotation 0 
visor_depth 1.8
By option the parameters are: Also the following options are changed by default: Again these are example scripts, and users should consider creating their own to support their preferred options.

Source Code

Note that all immersive code is now integrated into dive3.3x.

All the original UCL source code can be found in the directory

/cs/research/vr/starship/common/vr/dive/local3.2/build/hmd
    
The documentation of the source code can be found in a
README.html file in that directory.
Anthony STEED
Last modified: Thu Jan 27 20:22:04 "GMT 2000