From f770bcd38978bd6fee94661dfbf054c9cac14c50 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 29 Jun 2018 17:15:03 -0700 Subject: [PATCH] Better eyePitch computation --- libraries/avatars-renderer/src/avatars-renderer/Head.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index b76e401761..bdee6d9147 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -231,10 +231,9 @@ void Head::applyEyelidOffset(glm::quat headOrientation) { const float OPEN_DOWN_MULTIPLIER = 0.3f; const float BROW_UP_MULTIPLIER = 0.5f; - glm::quat eyeRotation = rotationBetween(headOrientation * IDENTITY_FORWARD, getLookAtPosition() - _eyePosition); - auto worldUpDirection = _owningAvatar->getWorldOrientation() * Vectors::UNIT_Y; - eyeRotation = eyeRotation * glm::angleAxis(safeEulerAngles(headOrientation).y, worldUpDirection); // Rotation w.r.t. head - float eyePitch = safeEulerAngles(eyeRotation).x; + glm::vec3 lookAt = glm::normalize(getLookAtPosition() - _eyePosition); + glm::vec3 headUp = headOrientation * Vectors::UNIT_Y; + float eyePitch = (PI / 2.0f) - acos(glm::dot(lookAt, headUp)); float eyelidOffset = glm::clamp(abs(eyePitch * EYE_PITCH_TO_COEFFICIENT), 0.0f, MAX_EYELID_OFFSET); float blinkUpCoefficient = -eyelidOffset;