From 6a5a443eff7dc2edf4c8a55e134f7afce331a199 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 24 Mar 2016 18:03:51 -0700 Subject: [PATCH] Avatar: Eye-tracking works again This replaces the calculation of the Head left and right eye positions used for eye tracking. Which was inadvertently removed in this commit 7483b8546b8e5003f87ea814a90fce144edafad9 --- interface/src/avatar/Head.cpp | 7 +++++++ interface/src/avatar/MyAvatar.cpp | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/Head.cpp b/interface/src/avatar/Head.cpp index 620c35c832..5587096ce3 100644 --- a/interface/src/avatar/Head.cpp +++ b/interface/src/avatar/Head.cpp @@ -231,6 +231,13 @@ void Head::simulate(float deltaTime, bool isMine, bool billboard) { _leftEyePosition = _rightEyePosition = getPosition(); _eyePosition = calculateAverageEyePosition(); + + if (!billboard && _owningAvatar) { + auto skeletonModel = static_cast(_owningAvatar)->getSkeletonModel(); + if (skeletonModel) { + skeletonModel->getEyePositions(_leftEyePosition, _rightEyePosition); + } + } } void Head::calculateMouthShapes() { diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 8f11c635e9..210e6feb5b 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -897,7 +897,9 @@ void MyAvatar::updateLookAtTargetAvatar() { // Scale by proportional differences between avatar and human. float humanEyeSeparationInModelSpace = glm::length(humanLeftEye - humanRightEye) * ipdScale; float avatarEyeSeparation = glm::length(avatarLeftEye - avatarRightEye); - gazeOffset = gazeOffset * humanEyeSeparationInModelSpace / avatarEyeSeparation; + if (avatarEyeSeparation > 0.0f) { + gazeOffset = gazeOffset * humanEyeSeparationInModelSpace / avatarEyeSeparation; + } } // And now we can finally add that offset to the camera.