Focus 3 - Version 3.1

Hi everyone !

After testing the new release (3.1) on Focus 3, I have an eye misplacement problem.
I didn’t make any changes in the source code, this is the raw code from the zip file.

In the picture below, we can clearly see that there is a misalignment between right and left eye.
The two red lines are parallels, and the steamvr grids behind AND the IPD adjustment are not aligned (and of course the HMD was on a table, flat, horizontal).
Of course also, it’s not the IPD itself (I’ve tried all the settings)

Is there a way to fix this ? Human eyes get used after a while, but when you remove the headsets you have a strange feeling :-) :-)

Thanks for the help !

We’re reviewing internally, will post as we know more.

We have observed that the error is not happening in the sample created by HTC here GitHub - ViveSoftware/Wave-CloudXR-Sample
The codebased is structured differently but it does exactly the same thing that the sample provided in Nvidia CloudXR SDK 3.1
The only difference that explains the issue is the way the projection is set.
You see this in the HTC sample
for (int i=0; i<2; ++i) {
WVR_GetClippingPlaneBoundary((WVR_Eye)i, &l, &r, &t, &b);
if(l < 0) l *= -1;
if(r < 0) r *= -1;
if(t < 0) t *= -1;
if(b < 0) b *= -1;
mDeviceDesc.proj[i][0] = -l;
mDeviceDesc.proj[i][1] = r;
mDeviceDesc.proj[i][2] = -b;
mDeviceDesc.proj[i][3] = t;
the sign check is the one that resolves the issue.
I would guess top and bottom are inverted, and on some (but not all models) Vive Focus they are different.
Let us know if this works for you
Best regards,
Alexis Vartanian - TechViz CTO

Will review this change for an upcoming release. Seems awfully strange their own call is returning data that has to be conditionally flipped around, when they could just do that internally. Must be some secondary issue.

Hi, thanks, indeed with the previous build it works !
So it means that depending of the Vive Focus 3 S/N, the behaviour is not the same ?

so to clarify, is the ‘working’ case the 3.0 sample (which I think used older code for setup), or the HTC-customized sample )(we’d want to emulate what they are doing…)

To summarize
HTC-customized sample OK
CloudXR 3.1 WaveVR SDK sample KO
CloudXR 3.1 WaveVR SDK sample + sign check/flip OK

However, best would be that you reproduce the issue on your side.

Best regards,

Unfortunately, the HMD that did not show the issue has been delivered to a customer so we have no chance to find out why. My hypothesis is that the FOV is not symmetrical horizontally on some devices. We are adding a live display of the FOV values in our software to test that in case this happen again.
Anyway, we believe the WaveVR API is strange and the code fix should be used.
Best regards,

Thanks for the feedback. We’ll continue to investigate for a future release.

Confirmed, copying that code block in fixed this for us too

When I try to use the HTC v1.0 sample client with the CloudXR server from the 3.1.1 download I experience the following:

  • After SteamVR is restarted for whatever reason it does not recognize the client… nothing is displayed in the headset other than a blue screen and the CXR headset and controller icons do not appear in the SteamVR window.
  • If I try to connect with a roll-my-own WaveVR client Steam detects the headset and controllers but I only get a green screen display in the headset. However - if I then try to connect from the v1.0 sample client before restarting SteamVR I get SteamVR to display in the headset but the eyes are slightly offset (double-vision).

Has anyone else experienced this?