From 1133e053d1aa2943d4f70ddf862cb06e9700e401 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Fri, 14 Aug 2015 07:33:36 -0700 Subject: [PATCH 1/2] Developer->Avatar->Fix Gaze menu option to not move the eyes around while we're debugging. --- interface/src/Application.cpp | 4 +++- interface/src/Menu.cpp | 1 + interface/src/Menu.h | 1 + interface/src/avatar/Head.cpp | 3 +++ 4 files changed, 8 insertions(+), 1 deletion(-) 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()); From 6b27f854b23b4baa48405922f755769e7a31dc35 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Fri, 14 Aug 2015 07:51:04 -0700 Subject: [PATCH 2/2] Eyelid position is on sender side and should use lookAt spot, not the receiver side. --- interface/src/avatar/Head.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/Head.cpp b/interface/src/avatar/Head.cpp index c7ee4a2e01..cec9079443 100644 --- a/interface/src/avatar/Head.cpp +++ b/interface/src/avatar/Head.cpp @@ -277,7 +277,7 @@ void Head::calculateMouthShapes() { void Head::applyEyelidOffset(glm::quat headOrientation) { // Adjusts the eyelid blendshape coefficients so that the eyelid follows the iris as the head pitches. - glm::quat eyeRotation = rotationBetween(headOrientation * IDENTITY_FRONT, getCorrectedLookAtPosition() - _eyePosition); + glm::quat eyeRotation = rotationBetween(headOrientation * IDENTITY_FRONT, getLookAtPosition() - _eyePosition); eyeRotation = eyeRotation * glm::angleAxis(safeEulerAngles(headOrientation).y, IDENTITY_UP); // Rotation w.r.t. head float eyePitch = safeEulerAngles(eyeRotation).x;