Cockpit Size and World Scale in VR

I’m suggesting a user setting to override the actual ICD

In practice, there is a need for both absolute and relative adjustments so that you can transform the ICD in the software with this formula: ICD = (IPD + Bias) * Scale

Bias adjusts for the differences between the lenses IPD and your eyes IPD, whereas Scale could adjusts for the differences between the software IPD and the software ICD.

NB: in X-Plane and DCS you can adjust only the ICD (5)

Size depends on the IPD, but not just it.

Some are finding 3D movies smaller than real life and some others find them bigger: this is because of there is a difference between you eyes distance (IPD) and the film cameras distance (ICD) *(1)

To illustrate this, look at the pictures below, cross your eyes until the two squares align, and focus on the middle image

3-s2.0-B9780123742032002372-gr1

Do they look life-size to you? Bigger? Smaller?
Is the perceived depth life-size, bigger, smaller than expected?

If the IPD (inter-eye) is matching the ICD (inter-camera), then any 3D object which is properly modelled and projected on the VR screens should appear in its correct dimensions. The difference between ICD and IPD is what makes the image above not life-size to me

More cross-eye images examples and references

What is the problem within the simulator then?

This mostly depends on the API used and its implementation.

Native WMR with fixed IPD headsets (G1) will adjust where on the screens the image gets displayed, as well as the projection of the 3D world to the screen, whereas OpenVR Valve Index will just change the projection matrices because the screen physically moves with the hardware IPD slider* (2).

When using the Reverb G1 via SteamVR you’re also dependent on the OpenVR API and the Microsoft implementation of the WMR for OpenVR driver. When using a WMR HMD in OpenXR you’re dependent on the OpenXR driver implementation, etc… Nearly all VR APIs are giving each eye projection matrices back to the application so that whatever the HMD and whether it has fixed or variable hardware IPD, the application shouldn’t care. However applications might get it wrong* (3)

So in turn this all depends on this chain of parameters which must all match:

  • you average IPD (distance between pupils)
  • hardware IPD (distance between the lenses)
  • software IPD (distance between images rendered to each eye)
  • software ICD (distance and direction between the virtual cameras looking at the 3D scene)

NB: your physical IPD is different if you’re looking far away or converging up close and without eye tracking with auto IPD like in the Varjo, you’ll have to take an average value.

Therefore any VR application shouldn’t bother with these: they just get the correct projection matrices from the VR driver which is doing its job interpreting and projecting the matrices according to the physical and logical HMD specifications* (4)

Having said this, it is a fact not everything is working like this and there are many VR software not doing it right (whether application and/or driver).


(1) Pupillary distance - Wikipedia

(2) A live test with WMR Headsets (at least with the Reverb G1 and the G2):

  • In the Mixed Reality House, go in front of the Halo helmet, up close (really close).
  • Adjust the IPD hardware slider or…
  • Open the WMR settings popup window in VR where you can adjust IPD in software.
  • Grab the slider with the VR controller and while depressing the trigger look toward the helmet.
  • Move the controller to the left fully and wait 1 sec or so, then move to the right fully and wait 1 sec or so.

In doing this you should perceive the helmet is changing size in front of your eyes (for me with an IPD close to 64, there seems to be about 3 distinctive sizes corresponding to slider left, center and right positions).

(3) it is a little bit more complex than this but there are for example 2 sets of API related to the eye projection matrices in OpenVR and I suspect one is just taking the IPD set in the SteamVR config file and the other is dynamically adjusting at runtime.*

(4) However if the 3D object is wrongly projected on the VR screens, you’ll have to adjust/zoom/scale both the projection parameters and the ICD in order to restore matching dimensions. I can observe the G2 is projecting images smaller than the Index and this makes the world as seen through the G2 smaller that it should be to me. Whereas I find the Index projecting images at the expected focal length and size which makes the world as seen through the Index life-like.

For example in Half Life Alyx both with the Reverb G1 and the Valve Index and only with the Index the object sizes where spot on. I’ve particularly tested these 2 HMD against the metro wagon in the game in matching my seating position with the virtual seat in the wagon. In XP11 the Reverb G1 was making everything smaller to me whereas the Valve Index was always spot-on as well.

Another possible source of conflict in size perception could be the focal point both eyes projection matrices are converging to and the difference with our own vergence. Some implementations are only changing the ICD without changing the focal point location (say 2 meters in front of you) and some other implementations just moving apart the cameras without changing the projection angles, thus putting the focal point at a different location and inducing therefore a different perceived angle from both eyes.

(5) For example, you can override the X-Plane 11.50 ICD in VR in using the following command line:

 --override_ipd 0.01

This will set the IPD to ± 0.01m and you can check log.txt for the following confirmation:

I/VR: Interaxial set to -#.##,#.##
7 Likes

This will be an incredibly useful feature, if they implement it, and the above is an excellent explanation as to why it is needed. From my experience an adjustable scale can make you feel much more grounded in the world, when you get it right, and lead to a much more comfortable experience (I always end up feeling a bit cross-eyed as it is).

Hopefully it isn’t too much work for them to implement it.

12 Likes

+1

maybe it’ll stop making my eyes hurt after a while…

1 Like

This feature is in DCS and it’s very useful

4 Likes

moved this topic in the “bugs and issues” category in order to enable voting.

I submitted a request in Zendesk

Back in the days of “flyinside” and FSX, there was a slider for worldscale to match the size of the cockpits. Might be a solution here?!?

I see this problem only in all GA Aircrafts. The Big ones looks Fine.
So when i Land the cessna 152 on an 150 meters wide Rwy so it looks like an 100 meter wide rwy. Landing on the Same Rwy with an airliner looks fine in my Samsung Odyssey and also in my rift and quest.

Also experiencing this issue on an oculus quest, cockpit and world feels like it’s at 75% scale.

1 Like

I don’t think the big ones are fine. The A320 for example is oversized. I wouldn’t be able to reach the throttle without bending over and I’m 190cm.

4 Likes

Exactly my experience as well.
Though i have found that overlaying oculus meny while in game, and changing the IPD setting changes everything. For the bigger jets i have to choose a much lower IPD than what i usually need. And its the other way around for smaller aircraft. Then i need a much higher IPD to make things the right scale.

Same impression on my part when I checked the A320n.
Looks really awkward. It looks like the chair is pulled back but it is also too big. However the cockpit doesn’t look that big in the back as when I stand I barely fit inside at the cockpit door which seems a bit smaller. Passing through and reaching the access door it becomes clear it’s smaller there as the access door is small than me be a lot definitely not the size I remember and I would need to squeeze in to pass through it.

I think it’s just not modeled correctly. They might have made it so it look good on a flat screen. Might have stretched some things and pulled others together.

1 Like

I feel the same: the cocpit of the a320 oversized.

I believe it would be great if anyone posting “it feels smaller with aircraft X” or “it feels bigger with aircraft Y”, also post the headset+driver he/she is using. It might be highly dependent and could help identifying certain combination of both which would help support offering a solution.

For example, I can see G2 via WMR OpenXR and G2 via SteamVR OXR are not giving the same size impression, both different again than Valve Index on SteamVR (I’ll cross check which is which and post accordingly later)

2 Likes

Listen Cap’n, I love your posts, don’t get me wrong!

It’s just, as a 69 year old, I don’t have a degree in physics or mathematics. So my comprehension is, shall we say, a little lacking.

Keep 'em coming though; we all very much appreciate what you’re doing.

3 Likes

I’m using the Oculus Quest 2 (and Q1) , max IPD on both, and in both steamvr (virtualdesktop) and oculus link the throttle of the TBM appears about the size of a matchbox. It reminds me of that scene in Zoolander and I often catch myself saying “what is this…a throttle for ants?!”

2 Likes

Does this max IPD on your headset is matching your eyes IPD? Otherwise it is certain it won’t feel being rendering any correct size.

Yes, I’ve used various methods to measure including the PlayStation VR setting tool, to make sure I have it set right.:+1:

I also have the issue where the A320 cockpit feels huge.