diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d8dad73d82..2f6b038e40 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2397,7 +2397,9 @@ void Application::updateMyAvatarLookAtPosition() { if (faceAngle < MAXIMUM_FACE_ANGLE) { // Randomly look back and forth between look targets - switch (_myAvatar->getEyeContactTarget()) { + eyeContactTarget target = Menu::getInstance()->isOptionChecked(MenuOption::FixGaze) ? + LEFT_EYE : _myAvatar->getEyeContactTarget(); + switch (target) { case LEFT_EYE: lookAtSpot = lookingAtHead->getLeftEyePosition(); break; diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 6ff479778b..a31353fa4c 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -453,6 +453,7 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtTargets, 0, false); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderFocusIndicator, 0, false); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowWhosLookingAtMe, 0, false); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::FixGaze, 0, false); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::Connexion, 0, false, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 2231ddbe9a..789fccecd8 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -193,6 +193,7 @@ namespace MenuOption { const QString Faceshift = "Faceshift"; const QString FirstPerson = "First Person"; const QString FivePointCalibration = "5 Point Calibration"; + const QString FixGaze = "Fix Gaze (no saccade)"; const QString Forward = "Forward"; const QString FrameTimer = "Show Timer"; const QString FullscreenMirror = "Fullscreen Mirror"; diff --git a/interface/src/avatar/Head.cpp b/interface/src/avatar/Head.cpp index 2cd87588d8..c7ee4a2e01 100644 --- a/interface/src/avatar/Head.cpp +++ b/interface/src/avatar/Head.cpp @@ -229,6 +229,9 @@ void Head::simulate(float deltaTime, bool isMine, bool billboard) { } else { _saccade = glm::vec3(); } + if (Menu::getInstance()->isOptionChecked(MenuOption::FixGaze)) { // if debug menu turns off, use no saccade + _saccade = glm::vec3(); + } if (!isMine) { _faceModel.setLODDistance(static_cast(_owningAvatar)->getLODDistance());