Difference between revisions of "ScreenMultiViewer"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
m
 
(7 intermediate revisions by one user not shown)
Line 1: Line 1:
 
==Project Overview==
 
==Project Overview==
This CalVR display mode allows two users to simultaneously use the StarCAVE or Nexcave with dual head tracking.
+
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.
  
Implementation 1:
+
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.
 
+
...
+
 
+
Implementation 2:
+
 
+
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 the same zone, it is displayed from a point of view that balances the view-error between them, resulting in an equal amount of minimal immersion loss. When both users face opposite sides of the cave, they will each see the zones before them in optimal stereo quality. When one user is looking directly at the zone and the second user is seeing it only peripherally, the camera is positioned to display the zone nearly perfectly for the user facing directly at the zone.
+
  
 
==Status==
 
==Status==
Implementation 1:
+
* Zones are properly split into a grid per screen
*--Work Completed--
+
 
+
Implementation 2:
+
* Zones are properly split
+
 
* Two contribution balancing functions (linear and gaussian)
 
* 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 simulation
+
* 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)
 
* Orientation can be setup to use 3d vector angles, or 2d (ignoring height/z-axis/vertical differences)
* Zone quantity can be set by the config file
+
* 3 orientation contribution implementations (linear, cosine, and Gaussian).
* Zone quantity can be set by the simulator plugin
+
* Maximum zone quantity can be set by the config file
* 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)
+
* 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)
  
==Goals==
+
==Additional Features==
Implementation 1:
+
* 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).
* --Goals--
+
* 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.
Implementation 2:
+
* Setup to work in StarCAVE (currently ones under IVL and NexCAVE)
+
* Allow zones to be a grid instead of just columns
+
  
 
==Participants==
 
==Participants==
Line 35: Line 28:
 
Software Developers:
 
Software Developers:
  
* Phi Hung Nguyen - Implementation 1
+
* [http://www.linkedin.com/in/manganse John Mangan]
 
+
* John Mangan - Implementation 2
+
  
  
Line 45: Line 36:
  
 
* Andrew Prudhomme
 
* Andrew Prudhomme
 +
 +
 +
Development Assistance:
 +
 +
* Philip Weber

Latest revision as of 10:34, 23 November 2011

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