Closed toji closed 8 years ago
Using 0 for sizeX and sizeZ seems reasonable.
If content really means to re-orient and reset position when they call resetPose(), it could immediately after the call read the new pose and treat that as the new neutral orientation.
Perhaps this difference in behavior could be indicated in VRDisplayCapabilities?
The core issue with room scale experiences resetting the user's orientation in resetPose() is due to the sizeX and sizeY representing a axis-aligned bounding box that can not effectively be rotated without changing its size. An alternative would be to represent the stage bounds as a list of coordinates defining an arbitrary (possibly rotated) polygon; however, this seems like it would add too much complexity.
The more I've thought about it the more I agree that sizeX and sizeZ being zero is workable. Seems like a pretty unambiguous indication of the capabilities. I don't think we need to go so far as to start communicating a bounding poly for the room, agree that it's unnecessary complexity.
I wonder if the difference in re-orienting behavior will be natural for users anyway? Sitting space behavior is the same universally, but with room scale you expect the room to always stay "axis aligned". If you're just standing, though, then it makes sense that you can pivot in place and reset "forward." So I guess the real question is, as you pointed out, does this need a Capability flag?
Moved to w3c/webvr#33
There's a rumor that the Oculus 1.0 SDK will include the ability to get coordinates relative to the floor. That's great news if true, but I don't think it will include chaperone-style room bounds. Even if not true this sort of capability is something we should plan for.
It's not clear how this sort of capability should map to our
StageParameters
. I suppose the easy way out is to simply setsizeX
andsizeZ
to 0, but there's also a difference in how it would interact withresetPose()
. With a Vive the transform will always update the pose to be oriented to the room, but with a RiftresetPose()
will still re-orient you.I'd appreciate any thoughts on the matter!