Instead of looking at one or other eye depending on look direction.
Showing the changes to interface/src/Application.cpp (1 of 1 file). Show all
Unified · Split
| @@ -2284,36 +2284,26 @@ void Application::updateMyAvatarLookAtPosition() { · 2283 unmodified lines | |||
| 2284 | } else { | 2284 | } else { |
| 2285 | AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().lock(); | 2285 | AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().lock(); |
| 2286 | if (lookingAt && _myAvatar != lookingAt.get()) { | 2286 | if (lookingAt && _myAvatar != lookingAt.get()) { |
| 2287 | // If I am looking at someone else, look directly at one of their eyes | ||
| 2287 | isLookingAtSomeone = true; | 2288 | isLookingAtSomeone = true; |
| 2288 | Head* lookingAtHead = static_cast<Avatar*>(lookingAt.get())->getHead(); | 2289 | Head* lookingAtHead = static_cast<Avatar*>(lookingAt.get())->getHead(); |
| 2289 | 2290 | ||
| 2290 | // If I am looking at someone else, look directly at one of their eyes | 2291 | const float MAXIMUM_FACE_ANGLE = 65.0f * RADIANS_PER_DEGREE; |
| 2291 | if (tracker && !tracker->isMuted()) { | 2292 | glm::vec3 lookingAtFaceOrientation = lookingAtHead->getFinalOrientationInWorldFrame() * IDENTITY_FRONT; |
| 2292 | // If a face tracker is active, look at the eye for the side my gaze is biased toward | 2293 | glm::vec3 fromLookingAtToMe = glm::normalize(_myAvatar->getHead()->getEyePosition() |
| 2293 | if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) { | 2294 | - lookingAtHead->getEyePosition()); |
| 2294 | lookAtSpot = lookingAtHead->getRightEyePosition(); | 2295 | float faceAngle = glm::angle(lookingAtFaceOrientation, fromLookingAtToMe); |
| 2295 | } else { | ||
| 2296 | lookAtSpot = lookingAtHead->getLeftEyePosition(); | ||
| 2297 | } | ||
| 2298 | } else { | ||
| 2299 | 2296 | ||
| 2300 | const float MAXIMUM_FACE_ANGLE = 65.0f * RADIANS_PER_DEGREE; | 2297 | if (faceAngle < MAXIMUM_FACE_ANGLE) { |
| 2301 | glm::vec3 lookingAtFaceOrientation = lookingAtHead->getFinalOrientationInWorldFrame() * IDENTITY_FRONT; | 2298 | // Randomly look back and forth between left and right eyes |
| 2302 | glm::vec3 fromLookingAtToMe = glm::normalize(_myAvatar->getHead()->getEyePosition() | 2299 | if (_myAvatar->isLookingAtLeftEye()) { |
| 2303 | - lookingAtHead->getEyePosition()); | 2300 | lookAtSpot = lookingAtHead->getLeftEyePosition(); |
| 2304 | float faceAngle = glm::angle(lookingAtFaceOrientation, fromLookingAtToMe); | ||
| 2305 | |||
| 2306 | if (faceAngle < MAXIMUM_FACE_ANGLE) { | ||
| 2307 | // Randomly look back and forth between left and right eyes | ||
| 2308 | if (_myAvatar->isLookingAtLeftEye()) { | ||
| 2309 | lookAtSpot = lookingAtHead->getLeftEyePosition(); | ||
| 2310 | } else { | ||
| 2311 | lookAtSpot = lookingAtHead->getRightEyePosition(); | ||
| 2312 | } | ||
| 2313 | } else { | 2301 | } else { |
| 2314 | // Just look at their head (mid point between eyes) | 2302 | lookAtSpot = lookingAtHead->getRightEyePosition(); |
| 2315 | lookAtSpot = lookingAtHead->getEyePosition(); | ||
| 2316 | } | 2303 | } |
| 2304 | } else { | ||
| 2305 | // Just look at their head (mid point between eyes) | ||
| 2306 | lookAtSpot = lookingAtHead->getEyePosition(); | ||
| 2317 | } | 2307 | } |
| 2318 | } else { | 2308 | } else { |
| 2319 | // I am not looking at anyone else, so just look forward | 2309 | // I am not looking at anyone else, so just look forward |