Hi, I’ve been trying to grab a FQuat instead of an FRotator from the device-agnostic Motion Controller interface, but I can’t get at it. I’m using a Vive, and I ran into floating-point errors with the traditional FRotator representation while trying to make a world-repositioning functionality, also Quats are more intuitive for handling this kind of thing.
In the engine, it appears that for some ungodly reason each headset’s (Oculus and Vive’s) rotation information gets downconverted from an FQuat to a FRotator inside the plumbing from the headset’s plugin out into the device-agnostic interface! Why would this even seem like a good idea? This results in a loss of information along the pipeline! Anyway I’ve tried to remedy it by attempting to access the value directly from the plugin:
bool RetVal = false;
int32 ControllerIndex = 0;
EControllerHand DeviceHand = EControllerHand::Left;
FVector OutPosition;
FQuat DeviceOrientation = FQuat::Identity;
FSteamVRHMD* SteamVRHMD = GetSteamVRHMD();
if (SteamVRHMD)
{
RetVal = SteamVRHMD->GetControllerHandPositionAndOrientation(ControllerIndex, DeviceHand, OutPosition, DeviceOrientation);
}
But then I need to:
#include "SteamVRHMD.h"
Which just doesn’t ever want to include, no matter how I specify the file path to it in the #include. I always get some variation on:
fatal error C1083: Cannot open include file: 'SteamVRHMD.h': No such file or directory
Some help or a bugfix request put in would be absolutely appreciated, this is turning into a huge showstopper in my game.