ScreenMultiViewer

From Immersive Visualization Lab Wiki
Jump to: navigation, search

Contents

Project Overview

This CalVR display mode allows two users to simultaneously use the StarCAVE or Nexcave with dual head tracking, while minimizing parallax in a balanced manner for both users.

There are two modes under which the display will operate: single-user mode and multi-user mode. Under single-user mode, the display is perfect for the primary user and ignores any other head trackers in the CAVE. Under multi-user mode, each screen is partitioned into multiple zones, each of which is visualized by an independent camera. Each camera is set via an interpolation between the two users that is weighted based on how directly each user is facing the respective zone. When both users face directly at the same zone, that zone's camera location is set to balance the view-error between the users evenly, resulting in an equal amount of minimal immersion loss for each users. When both users face opposite sides of the cave, the zones cameras will be positioned purely based on the user's tracking that is facing that zone, resulting in each user seeing the zones before them in optimal quality (as the other user is ignored). When one user is looking directly at a zone and the second user is seeing the zone only peripherally, the camera is positioned to display the zone better for the user facing directly at the zone. The interpolation between the user locations, based on the users' orientations, is continuous and determined independently for each zone, resulting in a more continuous screen image as the zone quantity increases.

Status

  • Zones are properly split into a grid per screen
  • Two contribution balancing functions (linear and gaussian)
  • Head tracking simulator complete, so that either one or two heads can be simulated via a plugin (for testing), with two forms of head movements
  • Orientation can be setup to use 3d vector angles, or 2d (ignoring height/z-axis/vertical differences)
  • 3 orientation contribution implementations (linear, cosine, and Gaussian).
  • Maximum zone quantity can be set by the config file
  • Runtime zone quantity can automatically adjust itself to meet a target F.P.S. (range set initially in config file, can be modified by the simulator)
  • Can be run under Multi-User mode or Single-User mode. Single-User mode will treat all screen as a single zone and will only use the primary user's tracking information.
  • SMV2Settings - Plugin that can alter the runtime zone quantity, orientation dimensions (3d or 2d), whether or not we want to use multiple users, target Frames Per Second (and acceptable offset) for zone auto-adjustment, whether or not zone auto-adjustment is enabled, orientation contribution implemention, and contribution function cutoff value.
  • All values that are modifiable in the settings plugin may have initial values set via the config file.
  • Can run in the StarCAVE, NexCAVE, as well as on a desktop computer (for testing purposes).
  • .txt readme-style explanations for altering the config file
  • Fully documented (DOxygen)

Additional Features

  • ScreenMVSimulator - Abstract class which all multi-viewer screens should extend (which in turn extends the original ScreenBase). Added support includes the ability to simulate the head matrices (position and orientation).
  • MVSim - Simulation plugin to simulate the head matrices, as well as the saving/loading of head matrices, for testing benchmarks/views. This plugin will run for any screens that extend ScreenMVSimulator.
  • ScreenMVMaster - Screen that extends ScreenMVSimulator but acts identical to ScreenMono. Added functionality (enabled via MVSim plugin) to use an alternate orthogonal camera that shows a top-down view of the StarCAVE, including head positions and 2D orientation. This screen should be used on the head node for all multi-view screen setups.

Participants

Software Developers:


Project Advisors:

  • Andrew Prudhomme


Development Assistance:

  • Philip Weber