From 0d593c4a3f09e07c7eddc72f793553f0bcf888da Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Wed, 4 Sep 2013 10:46:11 -0700 Subject: [PATCH] When Faceshift is active, use its eye directions rather than the mouse ray. --- interface/src/Application.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3f0d418fd3..80e4995c61 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1518,7 +1518,17 @@ void Application::update(float deltaTime) { // Set where I am looking based on my mouse ray (so that other people can see) glm::vec3 lookAtSpot; - _isLookingAtOtherAvatar = isLookingAtOtherAvatar(mouseRayOrigin, mouseRayDirection, lookAtSpot); + // if we have faceshift, use that to compute the lookat direction + glm::vec3 lookAtRayOrigin = mouseRayOrigin, lookAtRayDirection = mouseRayDirection; + if (_faceshift.isActive()) { + lookAtRayOrigin = _myAvatar.getHead().calculateAverageEyePosition(); + float averagePitch = (_faceshift.getEyeGazeLeftPitch() + _faceshift.getEyeGazeRightPitch()) / 2.0f; + float averageYaw = (_faceshift.getEyeGazeLeftYaw() + _faceshift.getEyeGazeRightYaw()) / 2.0f; + lookAtRayDirection = _myAvatar.getHead().getOrientation() * + glm::quat(glm::vec3(averagePitch, averageYaw, 0.0f)) * glm::vec3(0.0f, 0.0f, -1.0f); + } + + _isLookingAtOtherAvatar = isLookingAtOtherAvatar(lookAtRayOrigin, lookAtRayDirection, lookAtSpot); if (_isLookingAtOtherAvatar) { // If the mouse is over another avatar's head... _myAvatar.getHead().setLookAtPosition(lookAtSpot);