The online racing simulator
HTC Vive Pro 2 - OpenVR Image Skew Issue
Hi there, I upgraded my headset about 18 months ago from my original HTC Vive to my current HTC Vive Pro 2 and noticed a slight image skewing issue when rolling my head left and right.

I run LFS in OpenVR of course, and what I think could be causing my issue is an incorrect resoultion or aspect ratio being forced onto my Vive Pro 2's panel. My previous headset worked flawlessly, everything felt 1 to 1. I notice that the resolution of the original Vive is 1080x1200 (per-eye), an aspect ratio of 0.9:1, wheras the newer HTC Vive Pro 2 has a resolution of 2448x2448 (per-eye), a 1:1 aspect ratio. Could this be the cause of my issues? Could the game be identifying my Vive Pro 2 headset as an original Vive and forcing an incorrect aspect ratio? Am I able to force a certain resolution or aspect ratio in VR?

Apart from the skewing, LFS still has the best VR implementation imo, the true 3d mirrors are second to none. I really wanna jump back into some LFS as it's been a few years but this issue is bugging me as I don't think I can fix it.

Cheers
The aspect ratio and all other relevant info should be obtained through the interface. Maybe you could post the contents of openvr.log and we'll see if there are any clues in there?

Could you give a more detailed explanation of the skewing issue? Is it only apparent when your head is doing the roll, or does it remain visible while you hold your head in a rolled position?
It seems the aspect ratio is correct as per openvr.log, not sure why I never even considered to look for files in relation to openvr during my own investigation haha but you're right, the aspect ratio is not the issue.

Quote from openvr.log :LFSOpenVR Apr 10 2020
ProductName: VIVE Pro 2
Manufacturer: HTC
LFSVR_QueryHMD
Recommended RT size: 4920 x 2460
Left eye:
GetProjectionRaw___: Left -1.635 Right 0.833 Top -1.118 Bottom 1.122
GetProjectionMatrix: Left -1.635 Right 0.833 Top -1.118 Bottom 1.122
GetEyeToHeadTransform:
1.000 0.000 0.000 -0.030
0.000 1.000 0.000 0.000
0.000 0.000 1.000 0.015
Right eye:
GetProjectionRaw___: Left -0.835 Right 1.630 Top -1.125 Bottom 1.123
GetProjectionMatrix: Left -0.835 Right 1.630 Top -1.125 Bottom 1.123
GetEyeToHeadTransform:
1.000 0.000 0.000 0.030
0.000 1.000 0.000 0.000
0.000 0.000 1.000 0.015
IPD: 0.061
LFSVR_AcceptSharedTexture
RT size: 4920 x 2460 / format: DXGI_FORMAT_B8G8R8A8_UNORM
LFSVR_Close

I can never get the resolution of the headset bang on 2048x2048 as I get a random number each time steam vr opens and performs it's brief hardware check upon intialization, during this session it was running at 2460x2460 per-eye.

I'm in the process of capturing footage through the headset using my phone camera however it's difficult to stablize the footage in order to fully portray the issue I'm seeing. The skewing does not seem to appear within the LFS window on my desktop or Steam's VR Display feature D:

The roll-skewing is present everywhere, but especially noticable at the main menu where the rectangle UI contrasts against the black background whenever I roll my head to the right or left. If I had to describe it, the image skews horizontally and vertically into a sort of parallelogram in relation to the amount of roll inside the headset, even as little as 5-10 deg of roll. No percivable warping or skewing is present with pitch and yaw movements as well as movement forwards, backwards, left and right, it just seems like it's the roll axis doing something funky.

It looks like a cobination of this type of skew whenever I roll my head with horizontal skew being the more noticable one of the two.


Thank you for getting back to me, I'm glad we could clear up that it's not a resolution/aspect ratio issue Smile

The skew persists whilever any roll is present. I could hold any amount of roll and the rectangle-shaped UI looks like a parallelogram I just can't wrap my head around it haha

-

Edit: I found this thread that describes a very similar issue I'm having but on another game, the screenshots are helpful as they portray almost the exact same issue I'm having here in LFS
Thanks. Based on your description and the log file and the thread you linked to, I think I can see what's going wrong.

As you say, the screen resolution is 1:1 but the strange thing on your headset is this is not matched by the projection.

E.g. for left eye: GetProjectionMatrix: Left -1.635 Right 0.833 Top -1.118 Bottom 1.122

This gives X/Y of (1.635 + 0.833) / (1.118 + 1.122) = 2.468 / 2.24 = 1.102

Those values are tangents of FOV in each direction so can be safely added before the division. The problem is the result is 1.102, not 1.


For comparison with my Vive DVT, I get this result:
Resolution per eye: 1512 x 1680 giving aspect ratio 0.9

Left eye: GetProjectionMatrix: Left -1.391 Right 1.254 Top -1.473 Bottom 1.466

This gives X/Y of (1.391 + 1.254) / (1.473 + 1.466) = 2.645 / 2.939 = 0.89997

So that is basically a perfect match for the resolution aspect ratio.


So I suppose at this point that the Vive Pro 2 either has non-square pixels or uses anamorphic lenses.


I'm not sure of the solution yet, it seems that LFS will need to scale the image vertically or horizontally. I'll need to look into the code and see how it is worked out and where to insert the correction.

I'm guessing that it wouldn't be anamorphic lenses, more likely non-square pixels but it's a long time since I have encountered that. I'm thinking of Mode 13h from MS-DOS days in late 80s / early 90s. Big grin

FGED GREDG RDFGDR GSFDG