Use correct multiplication order for eye transform. Also fix displayDevice not set bug.

This commit is contained in:
James Urquhart 2016-05-08 18:18:04 +01:00
parent 9e5eda9a08
commit 9f49a7844e
2 changed files with 7 additions and 2 deletions

View file

@ -343,7 +343,7 @@ OpenVRProvider::OpenVRProvider() :
INPUTMGR->registerDevice(this);
dMemset(&mLUID, '\0', sizeof(mLUID));
mTrackingSpace = vr::TrackingUniverseSeated;
mTrackingSpace = vr::TrackingUniverseStanding;
}
OpenVRProvider::~OpenVRProvider()
@ -586,7 +586,7 @@ void OpenVRProvider::getFrameEyePose(IDevicePose *pose, U32 eye) const
{
AssertFatal(eye >= 0 && eye < 2, "Out of bounds eye");
MatrixF mat = mHMDRenderState.mHMDPose * mHMDRenderState.mEyePose[eye];
MatrixF mat = mHMDRenderState.mEyePose[eye] * mHMDRenderState.mHMDPose; // same order as in the openvr example
OpenVRTransformToRotPos(mat, pose->orientation, pose->position);
pose->velocity = Point3F(0);
@ -603,6 +603,9 @@ void OpenVRProvider::getEyeOffsets(Point3F *dest) const
{
dest[0] = mHMDRenderState.mEyePose[0].getPosition();
dest[1] = mHMDRenderState.mEyePose[1].getPosition();
dest[0] = Point3F(-dest[0].x, dest[0].y, dest[0].z); // convert from vr-space
dest[1] = Point3F(-dest[1].x, dest[1].y, dest[1].z);
}
bool OpenVRProvider::providesFovPorts() const