From 46b48171550455ef465f7d471f529fbe02bf19eb Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 29 Jul 2015 20:08:58 -0700 Subject: [PATCH] Add DDE option to couple eyelids Use the most "open" value for both. --- interface/src/Application.cpp | 1 + interface/src/Menu.cpp | 2 ++ interface/src/Menu.h | 1 + interface/src/devices/DdeFaceTracker.cpp | 7 +++++++ 4 files changed, 11 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3696d5c9c4..8c8cbafafd 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2004,6 +2004,7 @@ void Application::setActiveFaceTracker() { #ifdef HAVE_DDE bool isUsingDDE = Menu::getInstance()->isOptionChecked(MenuOption::UseCamera); Menu::getInstance()->getActionForOption(MenuOption::BinaryEyelidControl)->setVisible(isUsingDDE); + Menu::getInstance()->getActionForOption(MenuOption::CoupleEyelids)->setVisible(isUsingDDE); Menu::getInstance()->getActionForOption(MenuOption::UseAudioForMouth)->setVisible(isUsingDDE); Menu::getInstance()->getActionForOption(MenuOption::VelocityFilter)->setVisible(isUsingDDE); Menu::getInstance()->getActionForOption(MenuOption::CalibrateCamera)->setVisible(isUsingDDE); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 1cbe127857..2d4fafe605 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -421,6 +421,8 @@ Menu::Menu() { faceTrackingMenu->addSeparator(); QAction* binaryEyelidControl = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true); binaryEyelidControl->setVisible(true); // DDE face tracking is on by default + QAction* coupleEyelids = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CoupleEyelids, 0, true); + coupleEyelids->setVisible(true); // DDE face tracking is on by default QAction* useAudioForMouth = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseAudioForMouth, 0, true); useAudioForMouth->setVisible(true); // DDE face tracking is on by default QAction* ddeFiltering = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::VelocityFilter, 0, true); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 62a1ae3b0f..bd6c982d70 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -165,6 +165,7 @@ namespace MenuOption { const QString ControlWithSpeech = "Control With Speech"; const QString CopyAddress = "Copy Address to Clipboard"; const QString CopyPath = "Copy Path to Clipboard"; + const QString CoupleEyelids = "Couple Eyelids"; const QString DebugAmbientOcclusion = "Debug Ambient Occlusion"; const QString DecreaseAvatarSize = "Decrease Avatar Size"; const QString DeleteBookmark = "Delete Bookmark..."; diff --git a/interface/src/devices/DdeFaceTracker.cpp b/interface/src/devices/DdeFaceTracker.cpp index c9170bd413..396539c3cf 100644 --- a/interface/src/devices/DdeFaceTracker.cpp +++ b/interface/src/devices/DdeFaceTracker.cpp @@ -564,6 +564,13 @@ void DdeFaceTracker::decodePacket(const QByteArray& buffer) { eyeCoefficients[1] = _filteredEyeBlinks[1]; } + // Couple eyelid values if configured - use the most "open" value for both + if (Menu::getInstance()->isOptionChecked(MenuOption::CoupleEyelids)) { + float eyeCoefficient = std::min(eyeCoefficients[0], eyeCoefficients[1]); + eyeCoefficients[0] = eyeCoefficient; + eyeCoefficients[1] = eyeCoefficient; + } + // Use EyeBlink values to control both EyeBlink and EyeOpen if (eyeCoefficients[0] > 0) { _coefficients[_leftBlinkIndex] = eyeCoefficients[0];