Strange values for HMD rotation

So, I'm busy integrating NoloVR into my SteamVR driver and I've come up with some strangeness that maybe someone knows something about:

When I use the rotation quaternion supplied by the Nolo runtime I have to do a bit of manipulation to it before I can use it as a rotation quaternion for SteamVR.

To make it easier to understand and experiment with I convert the quaternion to euler (roll, yaw & pitch), then I perform the following:

        roll = M_PI_2 - roll;
        yaw = M_PI - yaw;
        pitch = M_PI - pitch;

before converting it back to quaternion and passing it to SteamVR. If I don't do this, up is down, left is right and tilt is fine. Anyone know why this is? This is using the values supplied by 0.60 and 0.70 drivers.

The "Visualizer" demo in both drivers messes up the axes of rotation and position so it doesn't work very well at all...


  • Continuing discussion with engineers at:
  • @hettylool There's definitely something funny going on here. Sometimes I must adjust the roll value by M_PI_2, other times I must adjust it by M_PI. I've even had the situation where 1 controller needed to be adjusted by M_PI and the other M_PI_2.

    Obviously there's something going wrong in the runtime, but I haven't found a way to reproduce the issue yet. If I shut down the Nolo app, unplug and switch everything off, then plug it back in and switch it all on again before re-starting the Nolo app it goes back to "normal", where everything must have its roll value adjusted by M_PI_2.

    I'm not happy to ship a version of my driver (which is now complete apart from this) without this issue resolved, as it will cause support issues for me.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!