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.
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.
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.
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 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.