This project contains a simple implementation of the foveated Field-of-View (FOV) restrictor discussed in our IEEEVR'20 paper published here.
Virtual reality sickness typically results from visual-vestibular conflict. Because self-motion from optical flow is driven most strongly by motion at the periphery of the retina, reducing the user’s field-of-view (FOV) during locomotion has proven to be an effective strategy to minimize visual vestibular conflict and VR sickness. Current FOV restrictor implementations reduce the user’s FOV by rendering a restrictor whose center is fixed at the center of the head mounted display (HMD), which is effective when the user’s eye gaze is aligned with head gaze. However, during eccentric eye gaze, users may look at the FOV restrictor itself, exposing them to peripheral optical flow which could lead to increased VR sickness. To address these limitations, we developed a foveated FOV restrictor and we explore the effect of dynamically moving the center of the FOV restrictor according to the user’s eye gaze position. The animation below shows the difference between a fixed (dynamic) restrictor and our foveated restrictor.
To implement a foveated FOV restrictor (FV) that responds to the user’s eye gaze, we first implement a fixed FOV restrictor to dynamically manipulate the FOV in response to changes in the participant’s linear and angular velocities in the virtual environment. After the fixed restrictor we implement a method to manipulate it’s position in the VE based on the user’s eye gaze position.For both FOV restriction conditions, the FOV is decreased as the participant’s speed or angular velocity increases. To restrict the FOV, we used a black texture with a fully transparentcircular cut-off. The circular cut-off is defined by an inner and outerradius that together form an annulus. We call the region betweenthese two radii the feathering region. In this region the opacity ofthe circular cut-off increases linearly from completely transparentto completely opaque. The inner radius of the circular cut-off iscalculated using the following formula.
For details of the variables included in this formula, please check our paper here.
The movement of the foveated restrictor must, ideally, be smooth and have low latency in order to be imperceptible by the user. However, eye tracking signals contain inherent noise (jitter) and various other signal artifacts that cause sudden spikes in the signal. The raw signal's noise can make the restrictor jittery, and the spikes can cause jumps in the restrictor. To avoid this, we must filter and smooth the signal. Our code includes implementations of a low pass filter to remove high frequency noise and two types of smoothing agorithms, running average smoothing and spring damping, to remove sudden spikes from the signal. The filtering and smoothing steps can introduce perceptible delay into the signal and must be used conservatively.