diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 1c7da32ea4..0cc762cf6c 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -253,6 +253,9 @@ void MyAvatar::updateFromTrackers(float deltaTime) { return; } + FaceTracker* tracker = Application::getInstance()->getActiveFaceTracker(); + bool inFacetracker = tracker && !tracker->isMuted(); + if (inHmd) { estimatedPosition = qApp->getHeadPosition(); estimatedPosition.x *= -1.0f; @@ -260,12 +263,17 @@ void MyAvatar::updateFromTrackers(float deltaTime) { const float OCULUS_LEAN_SCALE = 0.05f; estimatedPosition /= OCULUS_LEAN_SCALE; - } else { - FaceTracker* tracker = Application::getInstance()->getActiveFaceTracker(); - if (tracker && !tracker->isMuted()) { - estimatedPosition = tracker->getHeadTranslation(); - _trackedHeadPosition = estimatedPosition; - estimatedRotation = glm::degrees(safeEulerAngles(tracker->getHeadRotation())); + } else if (inFacetracker) { + estimatedPosition = tracker->getHeadTranslation(); + _trackedHeadPosition = estimatedPosition; + estimatedRotation = glm::degrees(safeEulerAngles(tracker->getHeadRotation())); + if (Application::getInstance()->getCamera()->getMode() == CAMERA_MODE_MIRROR) { + // Invert yaw and roll when in mirror mode + // NOTE: this is kinda a hack, it's the same hack we use to make the head tilt. But it's not really a mirror + // it just makes you feel like you're looking in a mirror because the body movements of the avatar appear to + // match your body movements. + YAW(estimatedRotation) *= -1.0f; + ROLL(estimatedRotation) *= -1.0f; } } @@ -312,7 +320,7 @@ void MyAvatar::updateFromTrackers(float deltaTime) { // NOTE: this is kinda a hack, it's the same hack we use to make the head tilt. But it's not really a mirror // it just makes you feel like you're looking in a mirror because the body movements of the avatar appear to // match your body movements. - if (inHmd && Application::getInstance()->getCamera()->getMode() == CAMERA_MODE_MIRROR) { + if ((inHmd || inFacetracker) && Application::getInstance()->getCamera()->getMode() == CAMERA_MODE_MIRROR) { relativePosition.x = -relativePosition.x; }