The online racing simulator
Reverb G2 - wrong (impossible) vertical (automatic) FOV of 93deg
I'm having world scale issues in the G2 across multiple sims and I don't know where to start as I don't have any contacts at HP or MS, so maybe you (Scawen) can shed some light onto this. I can help debug it, but I need assistance doing so.

---

I measured the FOV the G2 in ROV 1.2beta again today and it maxes out at 90 vertical and 100 horizontal. The 90/100 deg values are confirmed by this chart: https://risa2000.github.io/hmdgdb/

I looked up the "automatic" FOV setting from Live for Speed - and it gets reported as 93deg vertical (that is derived from what WMR/OpenVR reports I assume?) - which is impossible as it stops rendering past 90deg. If I manually override it and set it to 90deg vertical and world scale seems fine and on par with my other HMDs.

So right now I don't know where to start.
LFSOpenVR Apr 10 2020
ProductName: HP Reverb Virtual Reality Heads
Manufacturer: WindowsMR
LFSVR_QueryHMD
Recommended RT size: 7768 x 3796
Left eye:
GetProjectionRaw___: Left -1.165 Right 0.993 Top -1.056 Bottom 1.059
GetProjectionMatrix: Left -1.165 Right 0.993 Top -1.056 Bottom 1.059
GetEyeToHeadTransform:
1.000 -0.001 0.001 -0.032
0.001 1.000 -0.004 -0.000
-0.001 0.004 1.000 0.000
Right eye:
GetProjectionRaw___: Left -0.992 Right 1.173 Top -1.052 Bottom 1.060
GetProjectionMatrix: Left -0.992 Right 1.173 Top -1.052 Bottom 1.060
GetEyeToHeadTransform:
1.000 0.001 -0.001 0.032
-0.001 1.000 0.004 0.000
0.001 -0.004 1.000 -0.000
IPD: 0.064
LFSVR_AcceptSharedTexture
RT size: 7768 x 3796 / format: DXGI_FORMAT_B8G8R8A8_UNORM
LFSVR_Close

Attached images
Capture.PNG
Just came from more A/B/C testing between Rift CV1, Pimax 8kx and the G2 and world scale definitely feels off in the Reverb G2 on the "Automatic" FOV setting. 90 deg feel fine and natural, 93 feels like toy cars and wrong proportions/scale.
i agree
Hi, I had a look at your log file and I can explain where the 93 value comes from.

See the Top and Bottom values on the GetProjection lines. They are tangent (tan) values. So we can convert them to degrees by using inverse tan (arctan) function.

top: arctan(1.056) = 46.46
bottom: arctan(1.060) = 46.67

46.46 + 46.67 = 93.13 degrees of vertical FOV.

Those values are reported by OpenVR - using either method, GetProjectionRaw or GetProjectionMatrix.

The IPD of 64 mm also comes from the Projection Matrix, from the values -0.032 and 0.032
Thank you Scawen! Might explain why some apps/sims/programs have world scale that's oft while there are others that seem fine (vertical vs horizontal FOV as basis).

With that info in mind I can finally dig deeper into this and maybe get clarification from MS/HP guys if those reported values indeed are correct.

I'll report back here if/when there's progress on this.

Pretty sure it should be around 90.x, at least that's also what ROV HMDtester and the Czech tool that name I forgot get out of the G2. Both cut off rendering at roughly 90.x deg vertical.

Do you account for canted displays (do you even have to account for it?)? The Reverb G2 is canted at 2° I think, but afaik only on the horizontal plane.
LFS does deal with canted displays. This was sorted out in an update for Pimax headsets. So with LFS there should be no need to use parallel projection.

I don't know anything about the HAM so I'll read up about that.

EDIT: If you could disable parallel projection and post a new log that would be good. I think in parallel projection, the headset should report a higher FOV than reality, so that LFS covers the area correctly with the extra large rendering area that is needed to support parallel projection. Maybe that could explain the higher reported FOV.
I just thought about the same. Looks like SteamVR defaults to parallel projection for EVERYTHING and needs to be disabled on a per-executable basis.

I'll look into this tonight and post the logs here.
I don't know if this is relevant or really a problem but I noticed in your logs the supposedly parallel projections don't look quite parallel. I'll post here the EyeToHeadTransforms from an old Vive. You can see the 3x3 area of the matrix is all 1s and 0s. These should be quite different in canted displays with parallel projection switched off but I would expect parallel projection ones to be like this.

Left eye:
GetProjectionRaw___: Left -1.391 Right 1.254 Top -1.473 Bottom 1.466
GetProjectionMatrix: Left -1.391 Right 1.254 Top -1.473 Bottom 1.466
GetEyeToHeadTransform:
1.000 0.000 0.000 -0.032
0.000 1.000 0.000 0.000
0.000 0.000 1.000 0.015
Right eye:
GetProjectionRaw___: Left -1.244 Right 1.402 Top -1.474 Bottom 1.463
GetProjectionMatrix: Left -1.244 Right 1.402 Top -1.474 Bottom 1.463
GetEyeToHeadTransform:
1.000 0.000 0.000 0.032
0.000 1.000 0.000 0.000
0.000 0.000 1.000 0.015
IPD: 0.064

SteamVR 1.16.5
HP Reverb G2 (second unit)
SteamVR OpenXR Runtime: Windows Mixed Reality

"renderCameraMode": "parallel" (default)
LFSOpenVR Apr 10 2020
ProductName: HP Reverb Virtual Reality Heads
Manufacturer: WindowsMR
LFSVR_QueryHMD
Recommended RT size: 6328 x 3096
Left eye:
GetProjectionRaw___: Left -1.165 Right 0.987 Top -1.045 Bottom 1.063
GetProjectionMatrix: Left -1.165 Right 0.987 Top -1.045 Bottom 1.063
GetEyeToHeadTransform:
1.000 0.002 0.003 -0.031
-0.002 1.000 0.002 0.000
-0.003 -0.002 1.000 0.000
Right eye:
GetProjectionRaw___: Left -0.991 Right 1.166 Top -1.048 Bottom 1.059
GetProjectionMatrix: Left -0.991 Right 1.166 Top -1.048 Bottom 1.059
GetEyeToHeadTransform:
1.000 -0.002 -0.003 0.031
0.002 1.000 -0.002 -0.000
0.003 0.002 1.000 -0.000
IPD: 0.063
LFSVR_AcceptSharedTexture
RT size: 6328 x 3096 / format: DXGI_FORMAT_B8G8R8A8_UNORM
LFSVR_Close

"renderCameraMode": "raw" (after SteamVR restart of course)
LFSOpenVR Apr 10 2020
ProductName: HP Reverb Virtual Reality Heads
Manufacturer: WindowsMR
LFSVR_QueryHMD
Recommended RT size: 6328 x 3096
Left eye:
GetProjectionRaw___: Left -1.165 Right 0.987 Top -1.045 Bottom 1.063
GetProjectionMatrix: Left -1.165 Right 0.987 Top -1.045 Bottom 1.063
GetEyeToHeadTransform:
1.000 0.002 0.003 -0.031
-0.002 1.000 0.002 0.000
-0.003 -0.002 1.000 0.000
Right eye:
GetProjectionRaw___: Left -0.991 Right 1.166 Top -1.048 Bottom 1.059
GetProjectionMatrix: Left -0.991 Right 1.166 Top -1.048 Bottom 1.059
GetEyeToHeadTransform:
1.000 -0.002 -0.003 0.031
0.002 1.000 -0.002 -0.000
0.003 0.002 1.000 -0.000
IPD: 0.063
LFSVR_AcceptSharedTexture
RT size: 6328 x 3096 / format: DXGI_FORMAT_B8G8R8A8_UNORM
LFSVR_Close

riftvr.log (ReVive, camera render mode "raw" in SteamVR):

LFSRiftVR Apr 10 2020
ProductName: HP Reverb Virtual Reality Heads
Manufacturer: WindowsMR
LFSVR_QueryHMD
Recommended RT size: 6328 x 3096
Left eye:
UpTan 1.063 DownTan 1.045 LeftTan 1.165 RightTan 0.987
Right eye:
UpTan 1.059 DownTan 1.048 LeftTan 0.991 RightTan 1.166
IPD: 0.063
LFSVR_AcceptSharedTexture
RT size: 6328 x 3096 / format: DXGI_FORMAT_B8G8R8A8_UNORM

Keep in mind, this is my second Reverb G2 unit as I sold off the first one (where the logs from the previous posts come from) and got another one from another batch just a few days ago, so you can't directly compare the values above with these. The effect is the same though.

I don't see a difference between both modes though - shouldn't there be one however..?

I have my steamVR configs added as attachment so I don't spam the thread too much. Keep in mind I changed the camera mode in both the default.vrsettings and the steamvr.vrsettings files to make sure I'll end up in raw or parallel mode respectively. I had to rename the file though.

Another thing to mention (maybe):
Ingame the IPD reports as 62.7, WMR reports it as 63.172 and the OpenVR and Rift logs show 0.063

There is a known (and confirmed by MS) IPD rounding bug in the WMR runtime though. Just thought I'd mention it.
Attached files
default.vrsettings.txt - 7 KB - 212 views
steamvr.vrsettings.txt - 2.6 KB - 194 views
PS: the Reverb and Reverb G2 are supposed to be canted 0.2°, not 2° as mentioned earlier.

Reverb G2 - wrong (impossible) vertical (automatic) FOV of 93deg
(13 posts, started )
FGED GREDG RDFGDR GSFDG