This is essentially an opinion question.
We have OpenXR working in our application, running on Oculus Rifts and Microsoft HoloLenses, so this is not a question about how to get and use head poses from OpenXR.
Our application is very modular, with an open-ended collection of optional subsystems that may need to share pose information for the head, hands, gamepad, and so on, and we don’t want to propagate OpenXR code dependencies throughout those subsystems.
We maintain our own database of named transforms, and for the most part we use the OpenXR specified semantic path strings as the names. But it seems that there is no specified semantic path string for the head pose, which might come from a head-mounted display like the Rift or HoloLens, or a Vicon, Polhemus, or other mocap system, or even a Microsoft Kinect. (Our application also supports “VR cave” environments, and I’m specifically working on a Vicon subsystems for tracking and reporting the positions of the shutter glasses and gamepad to the rendering and manipulation subsystems.) We can use any string we want, of course, but I like to conform to standards as much as possible, since the string may appear in disparate places.
We’ve been using “/user/head/pose”
Looking at some BlenderXR source code on GitHub, I see that we’re not the only ones pondering this. I see:
xrStringToPath(m_instance, "/user/head/input/pose" /*"/user/head/pose"*/, &headPosePath);
The author evidently started with “/user/head/pose” as we have, but then commented that out and replaced it with “/user/head/input/pose”. But that still isn’t strictly conformant, since there should be an <identifier>
between “input” and “pose”, and none of the standard identifiers apply.
Thoughts? Opinions? Thanks for your time.