Improved eye contact, audio driven mouth and brows, linear audio scope
Showing the changes to interface/src/Application.cpp (1 of 12 files). Show all
Unified · Split
| @@ -1888,13 +1888,12 @@ void Application::shrinkMirrorView() { · 1887 unmodified lines | ||
| 1888 | 1888 | } |
| 1889 | 1889 | } |
| 1890 | 1890 | |
| 1891 | −const float HEAD_SPHERE_RADIUS = 0.07f; | |
| 1891 | +const float HEAD_SPHERE_RADIUS = 0.1f; | |
| 1892 | 1892 | |
| 1893 | 1893 | bool Application::isLookingAtMyAvatar(Avatar* avatar) { |
| 1894 | − glm::vec3 theirLookat = avatar->getHead()->getLookAtPosition(); | |
| 1895 | − glm::vec3 myHeadPosition = _myAvatar->getHead()->getPosition(); | |
| 1896 | − | |
| 1897 | − if (pointInSphere(theirLookat, myHeadPosition, HEAD_SPHERE_RADIUS * _myAvatar->getScale())) { | |
| 1894 | + glm::vec3 theirLookAt = avatar->getHead()->getLookAtPosition(); | |
| 1895 | + glm::vec3 myEyePosition = _myAvatar->getHead()->getEyePosition(); | |
| 1896 | + if (pointInSphere(theirLookAt, myEyePosition, HEAD_SPHERE_RADIUS * _myAvatar->getScale())) { | |
| 1898 | 1897 | return true; |
| 1899 | 1898 | } |
| 1900 | 1899 | return false; |
| @@ -2000,21 +1999,23 @@ void Application::updateMyAvatarLookAtPosition() { · 99 unmodified lines | ||
| 2000 | 1999 | lookAtSpot = _myCamera.getPosition(); |
| 2001 | 2000 | |
| 2002 | 2001 | } else { |
| 2003 | − if (_myAvatar->getLookAtTargetAvatar() && _myAvatar != _myAvatar->getLookAtTargetAvatar()) { | |
| 2002 | + AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().toStrongRef(); | |
| 2003 | + if (lookingAt && _myAvatar != lookingAt.data()) { | |
| 2004 | + | |
| 2004 | 2005 | isLookingAtSomeone = true; |
| 2005 | 2006 | // If I am looking at someone else, look directly at one of their eyes |
| 2006 | 2007 | if (tracker) { |
| 2007 | 2008 | // If tracker active, look at the eye for the side my gaze is biased toward |
| 2008 | 2009 | if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) { |
| 2009 | 2010 | // Look at their right eye |
| 2010 | − lookAtSpot = static_cast<Avatar*>(_myAvatar->getLookAtTargetAvatar())->getHead()->getRightEyePosition(); | |
| 2011 | + lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getRightEyePosition(); | |
| 2011 | 2012 | } else { |
| 2012 | 2013 | // Look at their left eye |
| 2013 | − lookAtSpot = static_cast<Avatar*>(_myAvatar->getLookAtTargetAvatar())->getHead()->getLeftEyePosition(); | |
| 2014 | + lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getLeftEyePosition(); | |
| 2014 | 2015 | } |
| 2015 | 2016 | } else { |
| 2016 | 2017 | // Need to add randomly looking back and forth between left and right eye for case with no tracker |
| 2017 | − lookAtSpot = static_cast<Avatar*>(_myAvatar->getLookAtTargetAvatar())->getHead()->getEyePosition(); | |
| 2018 | + lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getEyePosition(); | |
| 2018 | 2019 | } |
| 2019 | 2020 | } else { |
| 2020 | 2021 | // I am not looking at anyone else, so just look forward |