This post is a follow up to my original post on the subject (All the different FOVs of Pimax 5k+), which should be probably rather renamed to All the native FOVs of Pimax 5k+ as all it addressed were the FOVs, when parallel projection (PP) was turned off, but I leave it as it is.
I did not really expect that PP on would change the FOV(s), it would change the actual view geometry, but should not change the overall FOV (both one eye and stereo). However inspired by @VTS post (Parallel projections option renders too big vertical FOV and 25% performance is lost) I decided to redo the analysis with PP on, just to make sure.
Here is the necessary disclaimer. I run the tests on:
- Pimax 5k+
- PiTool v1.0.1.91 (HMD Firmware v181)
- Parallel projection ON
Nowadays, it is a pretty old FW and PiTool, but I still do not feel confident enough to upgrade, besides it makes the results directly comparable to the previous values.
Note: If for some reason Pimax decides to change the headset characteristics, these results become obsolete. They also may differ for Pimax 8k.
I am not going to repeat the technical details about the OpenVR implementation (read my original post for that), just to repeat the original note:
It is important to keep in mind that these are theoretical values, i.e. something the headset expects from the application to be able to display the image correctly. It does not however mean that the user will be able to enjoy the full view (as defined by the headset) as some parts of the view get masked, some get so distorted that will not be visible anymore.
Small FOV
HMD driver recommended render target resolution: 2787x3291 (PP off has 2638x2633)
Left eye
tan_left=-1.742203, tan_right=0.945419, tan_bottom=-1.586718, tan_top=1.586718
atan_left=-60.14°, atan_right=43.39°, atan_bottom=-57.78°, atan_top=57.78°
horizontal=2.69, vertical=3.17, aspect=0.85
Right eye
tan_left=-0.945419, tan_right=1.742203, tan_bottom=-1.586718, tan_top=1.586718
atan_left=-43.39°, atan_right=60.14°, atan_bottom=-57.78°, atan_top=57.78°
horizontal=2.69, vertical=3.17, aspect=0.85
Total single eye FOV:
horizontal_FOV=103.53°, vertical_FOV=115.56°
We see the same horizontal FOV as for PP off, even though the left and right parts are split differently, because there is a 10° difference in the view axis angle (single eye) between the native and parallel view. This is basically expected.
What might not be expected is the change of vertical FOV reported by the headset, which now seems to be 115,56°
, while with PP off the vertical FOV was 103,56°
. This is a big difference, which does not have any justification in the headset as the geometry of the lenses, or their positions do not change.
To make sure it is a consistent behavior, I run the same query on remaining FOVs.
Normal FOV
HMD driver recommended render target resolution: 3852x3291 (PP off has 3202x2633)
Left eye
tan_left=-2.769231, tan_right=0.945419, tan_bottom=-1.586718, tan_top=1.586718
atan_left=-70.14°, atan_right=43.39°, atan_bottom=-57.78°, atan_top=57.78°
horizontal=3.71, vertical=3.17, aspect=1.17
Right eye
tan_left=-0.945419, tan_right=2.769231, tan_bottom=-1.586718, tan_top=1.586718
atan_left=-43.39°, atan_right=70.14°, atan_bottom=-57.78°, atan_top=57.78°
horizontal=3.71, vertical=3.17, aspect=1.17
Total single eye FOV:
horizontal_FOV=113.53°, vertical_FOV=115.56°
Large FOV
HMD driver recommended render target resolution: 6949x3291 (PP off has 4267x2633)
Left eye
tan_left=-5.756303, tan_right=0.945419, tan_bottom=-1.586718, tan_top=1.586718
atan_left=-80.14°, atan_right=43.39°, atan_bottom=-57.78°, atan_top=57.78°
horizontal=6.70, vertical=3.17, aspect=2.11
Right eye
tan_left=-0.945419, tan_right=5.756303, tan_bottom=-1.586718, tan_top=1.586718
atan_left=-43.39°, atan_right=80.14°, atan_bottom=-57.78°, atan_top=57.78°
horizontal=6.70, vertical=3.17, aspect=2.11
Total single eye FOV:
horizontal_FOV=123.53°, vertical_FOV=115.56°
It is clear that the horizontal FOV does not change. Even though the view axes are now oriented differently (they are parallel when PP is on) the FOV “distribution” over the whole stereo view is the same as when PP is off.
What is however interesting is the change in the value of the vertical FOV, which was (constant) in all FOVs with PP off with the value of 103,56°
and which has a different (constant) value of 115.56°
with PP on.
The reason why the vertical FOV with PP on is bigger (than with PP off) is the need for “parallel projection reprojection”. In other words, while the application “believes” that the vertical FOV is bigger (and renders a image with larger vertical resolution) the image is later reduced by the Pimax compositor, when it “reprojects” the parallel views to the angled views of the headset, by resampling and cutting out the part of the (abundant) vertical resolution (FOV) in the process.
So in the end, the user does only see the 103,56°
vertical FOV, while some of the vertical FOV gets lost during the “unparalleling” of the views. The increase in vertical FOV is also the reason for the increased performance requirements when PP is on.
Total horizontal FOV and the stereo overlap
Assuming that the eyes (views) are looking in the parallel directions (when PP is on), we can calculate the total horizontal FOV by simply adding the left FOV of the left eye and right FOV of the right eye. Analogically, the stereo overlap is the total angle of the “inner” FOVs of the each eye, i.e. the sum of the right FOV of the left eye and the left FOV of the right eye.
Small FOV
Total horizontal FOV = atan_left(left eye) + atan_right(right eye)
= 60.14° + 60.14° = 120.28°
Stereo overlap = atan_right(left eye) + atan_left(right eye)
= 43.39° + 43.39° = 86.78°
Normal FOV
Total horizontal FOV = 70.14° + 70.14° = 140.28°
Stereo overlap = 43.39° + 43.39° = 86.78°
Large FOV
Total horizontal FOV = 80.14° + 80.14° = 160.28°
Stereo overlap = 43.39° + 43.39° = 86.78°