All the parallel FOVs of Pimax 5k+

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°
9 Likes

I think it is more interesting on the Horizontal FoV values. Are you extracting these values from logs or pokes?

The values seem low compared to what was said they should be around.

Large horizontal Total =123.53 vs 160 to 170.

123.53 degree is for one eye, for both is 160 degree (86 degree is stereo fov and 37 degree is mono FOV for each eye). One eye FOV is 86+37=123, both eye is 37+86+37=160.

3 Likes

The direct calculation of the full (stereo) FOV is different. Assuming that the eyes are looking straight ahead, it is enough just to add left FOV of the left eye and the right FOV of the right eye, e.g. for the Large FOV

Left eye: atan_left=-80.14°
Right eye: atan_right=80.14°
-> stereo FOV = 80.14° + 80.14° = 160.28°
2 Likes

Cool otherwise that would be quite the drop.

1 Like

Hey @risa2000 I don’t know if you’ve seen it but I actually applied the same calculations to a lot of HMDs here:

One minor but interesting thing I noticed is that the 8k seems to have ~2° more vertical FoV both in PP and non-PP modes.

3 Likes

The values are almost identical to those I observed, which I also think were in line with those of @VoodooDE.

1 Like

They also seem to make sense in comparison to the other HMDs. E.g. even “small” FoV is noticeably larger than anything else currently out in the consumer space, which matches my in-game experience.

1 Like

That should be in line with the 5k+ display panels supposedly being slightly physically smaller than those in other models.

1 Like

Yep if memory serves 5k+ 5.5" & 8k 5.7" panel. This was verified in teardowns.