Coder Social home page Coder Social logo

isayasmatter / foveated-field-of-view-restrictor Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 527 KB

This project contains a simple implementation of a foveated Field-of-View (FOV) restrictor as described in the paper "The Effect of a Foveated Field-of-view Restrictor on VR Sickness".

License: MIT License

ShaderLab 20.85% C# 79.15%
virtual-reality field-of-view virtual-reality-sickness eye-tracking

foveated-field-of-view-restrictor's Introduction

Foveated Field of View Restrictor

This project contains a simple implementation of the foveated Field-of-View (FOV) restrictor discussed in our IEEEVR'20 paper published here.

What is a Foveated FOV Restrictor

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.

animated

Implementation

Dynamic restriction

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.

Eye gaze signal smoothing and filtering

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.