Hand tracking joint rotations


I’m seeing this image attributed to OpenXR but I can’t find it in their docs. I’m wondering if there’s any standardization of joint rotations among implementations of OpenXR. In this graphic +Z points to the parent joint, but in Unity for example +Z points to the child joint. Does the OpenXR specification have opinions about this?

The image comes from here:
https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#convention-of-hand-joints

Unity uses a left-handed coordinate system, while OpenXR uses a right-handed one. Their plugin has to flip one axis to be able to use the coordinates it receives from OpenXR.

The spec only deals with how an application interfaces with an OpenXR runtime. If you are programming against the Unity XR framework, you are using a proprietary API that is entirely controlled by Unity. It has nothing to do with the OpenXR spec itself.

1 Like