From 7aeb4bca87d3625f46f2babd829e903187cba6c4 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 11 Apr 2019 14:05:15 -0700 Subject: [PATCH] Include head rotation in getEyeModelPositions --- .../src/avatars-renderer/SkeletonModel.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index 6276b049a1..295a0e9f52 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -271,12 +271,18 @@ bool SkeletonModel::getEyeModelPositions(glm::vec3& firstEyePosition, glm::vec3& return true; } + int headJointIndex = _rig.indexOfJoint("Head"); glm::vec3 headPosition; - if (getJointPosition(_rig.indexOfJoint("Head"), headPosition)) { + if (getJointPosition(headJointIndex, headPosition)) { + + // get head joint rotation. + glm::quat headRotation; + getJointRotation(headJointIndex, headRotation); + float heightRatio = _rig.getUnscaledEyeHeight() / DEFAULT_AVATAR_EYE_HEIGHT; glm::vec3 ipdOffset = glm::vec3(DEFAULT_AVATAR_IPD / 2.0f, 0.0f, 0.0f); - firstEyePosition = headPosition + heightRatio * (DEFAULT_AVATAR_HEAD_TO_MIDDLE_EYE_OFFSET + ipdOffset); - secondEyePosition = headPosition + heightRatio * (DEFAULT_AVATAR_HEAD_TO_MIDDLE_EYE_OFFSET - ipdOffset); + firstEyePosition = headPosition + headRotation * heightRatio * (DEFAULT_AVATAR_HEAD_TO_MIDDLE_EYE_OFFSET + ipdOffset); + secondEyePosition = headPosition + headRotation * heightRatio * (DEFAULT_AVATAR_HEAD_TO_MIDDLE_EYE_OFFSET - ipdOffset); return true; } return false;