Utilizing WebVR technology for measuring eye separation distance

I am currently working on developing a WebVR environment using Three.js. I have exported some scenes from Cinema4D and successfully loaded them into my project using the Colladaloader functionality provided by Three.js. As I wanted to test this environment on Google Cardboard, I realized the need for a split-screen setup to enable viewing through both eyes.

To achieve the virtual reality effect required for VR devices like Cardboard, I utilized the npm module three-stereo-effect. However, when testing it with Cardboard, I noticed some overlapping issues. After researching further, I observed that many WebVR examples use rounded rectangles for each eye (see example) instead of straight rectangles, leading me to explore potential solutions through matrix manipulations (as seen in examples from this repository). Surprisingly, while playing a VR tunnel racing game, I discovered they were using straight rectangles for vision without any problems.

At this stage, I suspect that the eyeSeparation parameter in my stereo effect might be incorrect. I experimented with adjusting the eyeSeparation property within the StereoEffect module based on suggestions found online but felt uncertain about randomly choosing a value...

Am I heading in the right direction towards finding a solution? Or could there be another issue affecting the quality of the 3D scene when viewed through Google Cardboard?

Below is a snippet of the code I am currently working on:


// Inserted code snippet goes here

Answer №1

Extracted from the PDF "Advanced Technology for Real-Time Image Capture and Three-Dimensional Displays":

2.1.1 Binocular Disparity

Binocular disparity refers to the difference in position between the two retinal images of a point in space, caused by the lateral separation of the eyes. This results in each eye seeing the world from a slightly different perspective due to their spatial arrangement. The average interocular distance for humans is typically around 65mm, with most individuals falling within ±10mm of this value.

After conducting tests with individuals of various facial shapes, it may be possible to determine an optimal eyeSeparation value for both the device and its users. Additionally, providing a settings panel allowing users to adjust the eyeSeparation could enhance the stereo viewing experience by mitigating issues such as disparity or overlap. While traditional methods involve using a keyboard to fine-tune alignment, adjustments in cardboard-based systems may require some trial and error on the user's part to achieve the desired outcome.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Execute some jQuery code whenever a user selects an option within a group of options

Is there a way to trigger jQuery when any option within an option group is selected? Specifically, I am looking to display or hide certain inputs based on the selection of any option within one of two option groups. HTML <select> <option> ...

Launching the webpage with Next.js version 13

Hey there! I'm currently working on implementing a loading screen for my website to enhance the user experience. Since it's quite a large site, I believe a loading screen would be beneficial. However, I'm having trouble getting it to work on ...

Utilize a standard PHP script for every subdirectory within a domain

I'm currently working on a website and the design I'm using involves changing the URL in the address bar using the history API when the page content changes through JavaScript and AJAX. However, I also want each "page" of the website to be access ...

Exciting HTML slot machine game without Javascript functionality

Currently engrossed in the development of an HTML/JavaScript slot machine game. Although confident about the functionality from a mathematical perspective - essentially transplanted it from my Python version and adjusted the format for JavaScript - regrett ...

Is there a way to retrieve and store a JSON object from a URL using JavaScript and jQuery?

I have a PHP page that is returning a JSON object in the correct format, like this: [ { "name":"Users", "parent":"null", "children":[ { "name": "adsd", "parent": "Users", "children": [] } , { "name": "ca", "p ...

Having difficulties implementing horizontal scrolling for the Tabs component in Material UI

I can't seem to enable horizontal scrolling for the Tabs in material UI. Here is the version of Material UI I am using: As the number of Tabs increases, they are becoming wider. I tried to set the width, but it ends up affecting the entire Tabs tab ...

Using jQuery's .live('click') method will only bind to the initial element found on the webpage

I developed a custom jQuery plugin that attaches to 8 different elements on a webpage. Within each element, I intended to utilize the .live() method to bind a click event to a link, triggering a form submission via ajax. However, I encountered an issue whe ...

After reloading the data tables, analyze the information and dynamically highlight any rows in red that remain unchanged

I have a table that is refreshed every 5 minutes using ajax.reload(). One of the rows in this table is labeled as CIP. My goal is to highlight the CIP row on each refresh where the value remains unchanged from the previous value (value received in the la ...

Fetching real-time Twitter search feeds through dynamic AJAX requests

Previously, I successfully used JSON to retrieve hash tag feeds from Twitter and Facebook. However, currently the feeds are not updating dynamically, indicating a need for Ajax implementation. Unfortunately, my lack of knowledge in Ajax is hindering this ...

"ModuleNotFound" error occurred when attempting to utilize Netlify lambda functions with external dependencies

https://i.stack.imgur.com/vVmky.jpg I'm currently exploring the capabilities of Netlify, specifically its lambda function feature for running a node function with dependencies. Following a tutorial from CSS-Tricks, my functions/submission-created.js ...

What is the best way to incorporate auto refresh in a client-side application using vue.js?

Disclaimer: I have separated my client application (Vue.js) from the server side (DjangoRest). I am utilizing JWT for validating each request sent from the client to the server. Here is how it works - The client forwards user credentials to the server, an ...

Remove the most recent row that was dynamically inserted into an HTML table

Currently, I am in the process of developing an ASP.NET Web Api 2.2 application using .NET Framework 4.5, C#, and jQuery. Within one of my views, I have set up the following table: <table id ="batchTable" class="order-list"> <thead> ...

Utilizing AngularJS to achieve similar functionality to window.bind()

When trying to set the context of a function and pass it as a callback, I am following this approach: myController.myService.validateToken(param) .then( myController.myService.getToken.bind( myController.myService ) ); myController.myService.getToken ...

How can a key press be simulated without specifically targeting an element?

Is it possible to simulate a key press without targeting any specific element? I found this code snippet: var press = jQuery.Event("keypress"); press.ctrlKey = false; press.which = 75; $("whatever").trigger(press); The above code is used to simulate pres ...

Apply the "ng-class" directive only if there is an <a> element located after the specified element

My issue involves a list of items categorized by labels, with a search filter applied. The problem arises when the labels appear in the search results even though the lists themselves are empty. I need to hide the relevant label if there are no items prese ...

Is it possible to display a React stack trace in the browser using a custom component?

I am currently brainstorming a solution to display a React stack trace error message in the browser with the same formatting and layout as it appears in the terminal. For example, here is the stack trace error displayed in the terminal, and I aim to replic ...

How can I hide a root layout component in specific nested routes within the app directory of Next.js?

Is there a way to prevent rootlayout from being wrapped around dashboardlayout? Explore the latest documentation for Next.js version v13: https://i.sstatic.net/M0G1W.png Take a look at my file structure: https://i.sstatic.net/nVsUX.png I considered usi ...

The time that was constructed is not a valid function

I am currently working on a puppeteer script that interacts with my browser extensions and navigates to a specific page. It clicks on a particular extension button and fills in an input. Unfortunately, I am encountering an issue with the following error me ...

Tips for removing arrays and their values when a duplicate id is detected

Is there a way to remove or filter out subsequent arrays and their values if a duplicate id is found in the previous array? For instance: const a1 = ["id1", "b", "c", "d", "e"], a2 = ["id2", ...

Tips for generating click event with Angular directive

I am completely new to AngularJs directive creation. I have created a directive where, when the user clicks on the delete button, I am trying to print the values of scope, element, and attrs in the console. However, nothing is getting printed. The json dat ...