From 09240dba271f7cc5446e7c4844adb993ba81334b Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 25 Oct 2013 10:55:08 -0700 Subject: [PATCH] Limit the eye rotation to 22.5 degrees. --- interface/src/avatar/FaceModel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/FaceModel.cpp b/interface/src/avatar/FaceModel.cpp index dcc7b82f9d..fa3de1a52e 100644 --- a/interface/src/avatar/FaceModel.cpp +++ b/interface/src/avatar/FaceModel.cpp @@ -62,5 +62,8 @@ void FaceModel::maybeUpdateEyeRotation(const JointState& parentState, const FBXJ glm::vec3 front = glm::vec3(inverse * glm::vec4(_owningHead->getOrientation() * IDENTITY_FRONT, 0.0f)); glm::vec3 lookAt = glm::vec3(inverse * glm::vec4(_owningHead->getLookAtPosition() + _owningHead->getSaccade(), 1.0f)); - state.rotation = rotationBetween(front, lookAt) * joint.rotation; + glm::quat between = rotationBetween(front, lookAt); + const float MAX_ANGLE = 22.5f; + state.rotation = glm::angleAxis(glm::clamp(glm::angle(between), -MAX_ANGLE, MAX_ANGLE), glm::axis(between)) * + joint.rotation; }