diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 931cdc47ab..27858533b5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2367,7 +2367,7 @@ void Application::updateMyAvatarLookAtPosition() { const float GAZE_DEFLECTION_REDUCTION_DURING_EYE_CONTACT = 0.1f; glm::vec3 origin = _myAvatar->getHead()->getEyePosition(); float pitchSign = (_myCamera.getMode() == CAMERA_MODE_MIRROR) ? -1.0f : 1.0f; - float deflection = DependencyManager::get()->getEyeDeflection(); + float deflection = tracker->getEyeDeflection(); if (isLookingAtSomeone) { deflection *= GAZE_DEFLECTION_REDUCTION_DURING_EYE_CONTACT; } diff --git a/interface/src/devices/FaceTracker.cpp b/interface/src/devices/FaceTracker.cpp index 25a76ff2b1..76a4534952 100644 --- a/interface/src/devices/FaceTracker.cpp +++ b/interface/src/devices/FaceTracker.cpp @@ -20,6 +20,9 @@ const int FPS_TIMER_DELAY = 2000; // ms const int FPS_TIMER_DURATION = 2000; // ms +const float DEFAULT_EYE_DEFLECTION = 0.25f; +Setting::Handle FaceTracker::_eyeDeflection("faceshiftEyeDeflection", DEFAULT_EYE_DEFLECTION); + void FaceTracker::init() { _isMuted = Menu::getInstance()->isOptionChecked(MenuOption::MuteFaceTracking); _isInitialized = true; // FaceTracker can be used now @@ -106,3 +109,7 @@ void FaceTracker::toggleMute() { _isMuted = !_isMuted; emit muteToggled(); } + +void FaceTracker::setEyeDeflection(float eyeDeflection) { + _eyeDeflection.set(eyeDeflection); +} diff --git a/interface/src/devices/FaceTracker.h b/interface/src/devices/FaceTracker.h index 2a0c4438a4..193262d121 100644 --- a/interface/src/devices/FaceTracker.h +++ b/interface/src/devices/FaceTracker.h @@ -18,6 +18,8 @@ #include #include +#include + /// Base class for face trackers (Faceshift, DDE). class FaceTracker : public QObject { Q_OBJECT @@ -47,6 +49,9 @@ public: void setIsMuted(bool isMuted) { _isMuted = isMuted; } void toggleMute(); + static float getEyeDeflection() { return _eyeDeflection.get(); } + static void setEyeDeflection(float eyeDeflection); + signals: void muteToggled(); @@ -77,6 +82,8 @@ private slots: private: bool _isCalculatingFPS = false; int _frameCount = 0; + + static Setting::Handle _eyeDeflection; }; #endif // hifi_FaceTracker_h diff --git a/interface/src/devices/Faceshift.cpp b/interface/src/devices/Faceshift.cpp index b517f9d67b..9e7357af67 100644 --- a/interface/src/devices/Faceshift.cpp +++ b/interface/src/devices/Faceshift.cpp @@ -28,10 +28,8 @@ using namespace std; const QString DEFAULT_FACESHIFT_HOSTNAME = "localhost"; const quint16 FACESHIFT_PORT = 33433; -const float DEFAULT_FACESHIFT_EYE_DEFLECTION = 0.25f; Faceshift::Faceshift() : - _eyeDeflection("faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION), _hostname("faceshiftHostname", DEFAULT_FACESHIFT_HOSTNAME) { #ifdef HAVE_FACESHIFT @@ -306,10 +304,6 @@ void Faceshift::receive(const QByteArray& buffer) { FaceTracker::countFrame(); } -void Faceshift::setEyeDeflection(float faceshiftEyeDeflection) { - _eyeDeflection.set(faceshiftEyeDeflection); -} - void Faceshift::setHostname(const QString& hostname) { _hostname.set(hostname); } diff --git a/interface/src/devices/Faceshift.h b/interface/src/devices/Faceshift.h index 9be1766170..4cb7557410 100644 --- a/interface/src/devices/Faceshift.h +++ b/interface/src/devices/Faceshift.h @@ -68,9 +68,6 @@ public: float getMouthSmileLeft() const { return getBlendshapeCoefficient(_mouthSmileLeftIndex); } float getMouthSmileRight() const { return getBlendshapeCoefficient(_mouthSmileRightIndex); } - float getEyeDeflection() { return _eyeDeflection.get(); } - void setEyeDeflection(float faceshiftEyeDeflection); - QString getHostname() { return _hostname.get(); } void setHostname(const QString& hostname); @@ -134,7 +131,6 @@ private: float _longTermAverageEyeYaw = 0.0f; bool _longTermAverageInitialized = false; - Setting::Handle _eyeDeflection; Setting::Handle _hostname; // see http://support.faceshift.com/support/articles/35129-export-of-blendshapes diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 35a049db3c..121b7d611c 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -142,10 +142,10 @@ void PreferencesDialog::loadPreferences() { ui.ddeEyeClosingThresholdSlider->setValue(dde->getEyeClosingThreshold() * ui.ddeEyeClosingThresholdSlider->maximum()); - auto faceshift = DependencyManager::get(); - ui.faceshiftEyeDeflectionSider->setValue(faceshift->getEyeDeflection() * - ui.faceshiftEyeDeflectionSider->maximum()); + ui.faceTrackerEyeDeflectionSider->setValue(FaceTracker::getEyeDeflection() * + ui.faceTrackerEyeDeflectionSider->maximum()); + auto faceshift = DependencyManager::get(); ui.faceshiftHostnameEdit->setText(faceshift->getHostname()); auto audio = DependencyManager::get(); @@ -233,10 +233,10 @@ void PreferencesDialog::savePreferences() { dde->setEyeClosingThreshold(ui.ddeEyeClosingThresholdSlider->value() / (float)ui.ddeEyeClosingThresholdSlider->maximum()); - auto faceshift = DependencyManager::get(); - faceshift->setEyeDeflection(ui.faceshiftEyeDeflectionSider->value() / - (float)ui.faceshiftEyeDeflectionSider->maximum()); + FaceTracker::setEyeDeflection(ui.faceTrackerEyeDeflectionSider->value() / + (float)ui.faceTrackerEyeDeflectionSider->maximum()); + auto faceshift = DependencyManager::get(); faceshift->setHostname(ui.faceshiftHostnameEdit->text()); qApp->setMaxOctreePacketsPerSecond(ui.maxOctreePPSSpin->value()); diff --git a/interface/ui/preferencesDialog.ui b/interface/ui/preferencesDialog.ui index 78f9f5bf09..df6d28c07b 100644 --- a/interface/ui/preferencesDialog.ui +++ b/interface/ui/preferencesDialog.ui @@ -1468,13 +1468,13 @@ - Faceshift eye deflection + Face tracker eye deflection 0 - faceshiftEyeDeflectionSider + faceTrackerEyeDeflectionSider @@ -1497,7 +1497,7 @@ - + 0