I need your help. I tried lots of things now already and either something is wrong in my setup or broken or I don't understand a concept. I am on Unity 2019.3.b10, VRTK 3.3, Oculus Quest using Oculus SDK.
I wrote a debug tool that will print out the current values for headset, playarea and more. The calls I use to get the information is the following (put into Update() to make sure I also catch late initializations):
string text = "Headset: " + VRTK_DeviceFinder.HeadsetTransform().position + " rot " + VRTK_DeviceFinder.HeadsetTransform().rotation;
text += "\nPlay Area: " + VRTK_DeviceFinder.PlayAreaTransform().position + " rot " + VRTK_DeviceFinder.PlayAreaTransform().rotation;
OVRManager ovrManager = VRTK_SharedMethods.FindEvenInactiveComponent<OVRManager>(true);
if (ovrManager != null) text += "\nOVRManager: " + ovrManager.transform.position + " rot " + ovrManager.transform.rotation;
Vector3 points = new OVRBoundary().GetGeometry(OVRBoundary.BoundaryType.PlayArea);
text += "\nGeometry: " + points + " -> " + points + " -> " + points + " -> " + points;
text += "\nDistance to (0,0,0): " + points;
text += "\nAngle to (0,0,0): " + Vector3.Angle(Vector3.zero - points, points - points);
The effect is: the play area is always at near 0,0,0. The blue rectangle shows the dimensions returned (correct), drawn from the playarea transform. The purple rectangle shows the actual boundary returned by Oculus that fits to my room. If I recenter the Quest, the purple area stays stable (only the values change), but the playarea still is at 0,0,0 shifting the whole game to a different position. That I do not want. It should always remain stable in the purple area. How do I achieve that?
I would have expected the playarea transform to be moved and rotated automatically so that it fits into that purple area. Is that a correct assumption? Or do I need to calculate this now myself somehow? Any help would be highly appreciated!