History

Alternative look-at gaze left/right with face trackers too

Instead of looking at one or other eye depending on look direction.

David Rowe committed 11 years ago

Commit 26cbb141 parent fada70f1 file · +14 −24Browse files

Showing the changes to interface/src/Application.cpp (1 of 1 file). Show all

Unified · Split

interface/src/Application.cpp+14−24
@@ -2284,36 +2284,26 @@ void Application::updateMyAvatarLookAtPosition() { · 2283 unmodified lines
22842284 } else {
22852285 AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().lock();
22862286 if (lookingAt && _myAvatar != lookingAt.get()) {
2287+ // If I am looking at someone else, look directly at one of their eyes
22872288 isLookingAtSomeone = true;
22882289 Head* lookingAtHead = static_cast<Avatar*>(lookingAt.get())->getHead();
22892290
2290− // If I am looking at someone else, look directly at one of their eyes
2291− if (tracker && !tracker->isMuted()) {
2292− // If a face tracker is active, look at the eye for the side my gaze is biased toward
2293− if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) {
2294− lookAtSpot = lookingAtHead->getRightEyePosition();
2295− } else {
2296− lookAtSpot = lookingAtHead->getLeftEyePosition();
2297− }
2298− } else {
2291+ const float MAXIMUM_FACE_ANGLE = 65.0f * RADIANS_PER_DEGREE;
2292+ glm::vec3 lookingAtFaceOrientation = lookingAtHead->getFinalOrientationInWorldFrame() * IDENTITY_FRONT;
2293+ glm::vec3 fromLookingAtToMe = glm::normalize(_myAvatar->getHead()->getEyePosition()
2294+ - lookingAtHead->getEyePosition());
2295+ float faceAngle = glm::angle(lookingAtFaceOrientation, fromLookingAtToMe);
22992296
2300− const float MAXIMUM_FACE_ANGLE = 65.0f * RADIANS_PER_DEGREE;
2301− glm::vec3 lookingAtFaceOrientation = lookingAtHead->getFinalOrientationInWorldFrame() * IDENTITY_FRONT;
2302− glm::vec3 fromLookingAtToMe = glm::normalize(_myAvatar->getHead()->getEyePosition()
2303− - lookingAtHead->getEyePosition());
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− }
2297+ if (faceAngle < MAXIMUM_FACE_ANGLE) {
2298+ // Randomly look back and forth between left and right eyes
2299+ if (_myAvatar->isLookingAtLeftEye()) {
2300+ lookAtSpot = lookingAtHead->getLeftEyePosition();
23132301 } else {
2314− // Just look at their head (mid point between eyes)
2315− lookAtSpot = lookingAtHead->getEyePosition();
2302+ lookAtSpot = lookingAtHead->getRightEyePosition();
23162303 }
2304+ } else {
2305+ // Just look at their head (mid point between eyes)
2306+ lookAtSpot = lookingAtHead->getEyePosition();
23172307 }
23182308 } else {
23192309 // I am not looking at anyone else, so just look forward