Bart Kevelham Posted January 17 Share Posted January 17 We have a Unity VR OpenXR application running on a PC, which we stream over WiFi using VBS to a Vive Focus 3 (5.0.999.918). The headset is set up in LBE mode, with a recorded shared map, and the headset has been set up to run VBS in Kiosk mode. When the application starts for the first time, and no user is wearing the headset at the time (i.e. there is no user present), once the user puts on the headset the user's headset location in the VR environment is offset from its actual position within the physically mapped space. The offset is not consistent and appears to be random. There is no offset that appears anywhere in the hierarchy above the camera, so it really seems that the positions as they come via the TrackedPoseDriver are incorrect. If we tell the user to keep the headset on and we close the Unity application, the SteamVR environment which shows up (concentric circles on the floor) does show up in the correct place. Its center is at the origin of the space, and its orientation corresponds perfectly to what has been set up during LBE map recording. If at this point we restart our Unity application, all is well and the virtual space aligns correctly with the physical one. Given that we're creating an unattended VR application, we need the process to work flawlessly, but we're somewhat at a loss as to where to look or what might explain this behaviour. Any insight would be welcome. Link to comment Share on other sites More sharing options...
CREWvzw Posted January 17 Share Posted January 17 To confirm, you are not using LBEHybrid mode, correct? In that mode, you first start in VO mode and it does not use the shared map. I did notice that when working in the default Vive Focus 3 environment outside PCVR, the headset likes to offset its origin to where you are currently standing when you turn on the headset or wake it from sleep. This is to facilitate menu access. While the offset seems to be inconsistent, does the user start in the same virtual location everytime? Link to comment Share on other sites More sharing options...
Bart Kevelham Posted January 18 Author Share Posted January 18 18 hours ago, CREWvzw said: To confirm, you are not using LBEHybrid mode, correct? In that mode, you first start in VO mode and it does not use the shared map. I did notice that when working in the default Vive Focus 3 environment outside PCVR, the headset likes to offset its origin to where you are currently standing when you turn on the headset or wake it from sleep. This is to facilitate menu access. While the offset seems to be inconsistent, does the user start in the same virtual location everytime? Indeed, we are in LBE mode, not LBEHybrid. The users do start in more or less the same physical spot. However, their virtual location in the space that should be aligned with our physical environment is off. From what I can tell the offset we had was not of the kind where you'd say "ah, the origin is where the user mounted the headset for the first time". As said, keeping the headset on and restarting the Unity app resolves the issue. But that's not really a workable solution. Link to comment Share on other sites More sharing options...
Bart Kevelham Posted February 8 Author Share Posted February 8 On 1/18/2024 at 10:33 AM, Bart Kevelham said: As said, keeping the headset on and restarting the Unity app resolves the issue. But that's not really a workable solution. Unfortunately, that is what we have had to resort to. After a first start-up, we have on-site staff mount the headset. When we detect it's the first time the headset has been mounted, we quit the app and relaunch. This is less than ideal, but reliable. Link to comment Share on other sites More sharing options...
Ben Woodford Posted April 2 Share Posted April 2 (edited) Unity's PCVR OpenXR implementation defaults to Floor rather than Stage mode now, I've already moaned at them for the sudden change as everyone expects PCVR to be in Stage mode like how SteamVR does it so this change is a massive whiplash. I think it's this you need? OpenXRSettings.SetAllowRecentering(false); Edited April 2 by Ben Woodford 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now