From fb502a7fede162834a1c7e495b805efb6f1a02ac Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 3 May 2017 00:37:35 +0100 Subject: [PATCH] add offset function --- plugins/openvr/src/ViveControllerManager.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 73cb26410c..29d036fd31 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -54,8 +54,9 @@ const char* ViveControllerManager::NAME { "OpenVR" }; glm::mat4 computeOffset(glm::mat4 defaultRefrence, glm::mat4 defaultJointMat, controller::Pose puckPose) { qDebug() << "-------------> computing offset <-------------"; - glm::mat4 puckMat = create - return mat4(); + glm::mat4 poseMat = createMatFromQuatAndPos(puckPose.rotation, puckPose.translation); + glm::mat4 refrenceJointMat = defaultRefrence * defaultJointMat; + return glm::inverse(poseMat) * refrenceJointMat; } bool sortPucksYPosition(std::pair firstPuck, std::pair secondPuck) { controller::Pose firstPose = firstPuck.second; @@ -221,10 +222,11 @@ void ViveControllerManager::InputDevice::calibrate(const controller::InputCalibr if (!_calibrated) { glm::mat4 controllerToAvatar = glm::inverse(inputCalibration.avatarMat) * inputCalibration.sensorToWorldMat; glm::mat4 currentHead = inputCalibration.hmdSensorMat * controllerToAvatar; + glm::mat4 defaultHeadOffset = glm::inverse(inputCalibration.defaultCenterEyeMat) * inputCalibration.defaultHeadMat; glm::quat canceledRollAndPitch = cancelOutRollAndPitch(glmExtractRotation(currentHead)); glm::vec3 currentHeadPosition = extractTranslation(currentHead); currentHead = createMatFromQuatAndPos(canceledRollAndPitch, currentHeadPosition); - glm::mat4 defaultRefrenceXform = currentHead * glm::inverse(inputCalibration.defaultHeadMat); + glm::mat4 defaultRefrenceXform = currentHead * defaultHeadOffset; auto puckCount = _validTrackedObjects.size(); if (puckCount == 2) { qDebug() << "-------------< configure feet <-------------";