From 69d96ef189f7316a25d98599ccf69485fb928661 Mon Sep 17 00:00:00 2001
From: Jens Koenen <koenen@vr.rwth-aachen.de>
Date: Wed, 28 Sep 2022 10:23:56 +0200
Subject: [PATCH] Fixed incorrect Transformation in OpenXR Headset.

---
 src/headset/openxr_headset.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/headset/openxr_headset.cpp b/src/headset/openxr_headset.cpp
index 4d298260..b79ebbb5 100644
--- a/src/headset/openxr_headset.cpp
+++ b/src/headset/openxr_headset.cpp
@@ -760,8 +760,7 @@ bool OpenXRHeadset::update_views()
         XrQuaternionf quaternion = view.pose.orientation;
         XrVector3f position = view.pose.position;
 
-        glm::mat4 pose_transform = (glm::mat4)glm::inverse(glm::quat(quaternion.w, quaternion.x, quaternion.y, quaternion.z));
-        pose_transform[3] = glm::vec4(-position.x, -position.y, -position.z, 1.0f);
+        glm::mat4 pose_transform = (glm::mat4) glm::inverse(glm::quat(quaternion.w, quaternion.x, quaternion.y, quaternion.z)) * glm::translate(glm::mat4(1.0f), glm::vec3(-position.x, -position.y, -position.z));
         
         this->head_to_eye_matrices[index] = glm::diagonal4x4(glm::vec4(1.0f, -1.0f, 1.0f, 1.0f)) * pose_transform;
 
-- 
GitLab