From c446e72226ba71519b46b815b1a6e884218a6907 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 18 Feb 2015 12:39:51 -0800 Subject: [PATCH] Add Face Tracking menu item to select the face tracker to use Includes new DDE Face Regression option. --- interface/src/Application.cpp | 10 ++++++++++ interface/src/Application.h | 2 ++ interface/src/Menu.cpp | 34 ++++++++++++++++++++++++-------- interface/src/Menu.h | 10 ++++++---- interface/src/devices/Visage.cpp | 3 ++- 5 files changed, 46 insertions(+), 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ce33b04777..4f771ccbf0 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1601,6 +1601,16 @@ FaceTracker* Application::getActiveFaceTracker() { (visage->isActive() ? static_cast(visage.data()) : NULL))); } +void Application::setActiveFaceTracker() { +#ifdef HAVE_FACESHIFT + DependencyManager::get()->setTCPEnabled(Menu::getInstance()->isOptionChecked(MenuOption::Faceshift)); +#endif + DependencyManager::get()->setEnabled(Menu::getInstance()->isOptionChecked(MenuOption::DDEFaceRegression)); +#ifdef HAVE_VISAGE + DependencyManager::get()->updateEnabled(); +#endif +} + bool Application::exportEntities(const QString& filename, float x, float y, float z, float scale) { QVector entities; _entities.getTree()->findEntities(AACube(glm::vec3(x / (float)TREE_SCALE, diff --git a/interface/src/Application.h b/interface/src/Application.h index da29920ef9..2db120aa27 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -366,6 +366,8 @@ public slots: void notifyPacketVersionMismatch(); + void setActiveFaceTracker(); + private slots: void clearDomainOctreeDetails(); void timer(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 46b6141ba9..1478a6d3d6 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -27,6 +27,7 @@ #include "audio/AudioIOStatsRenderer.h" #include "audio/AudioScope.h" #include "avatar/AvatarManager.h" +#include "devices/DDEFaceTracker.h" #include "devices/Faceshift.h" #include "devices/RealSense.h" #include "devices/SixenseManager.h" @@ -357,18 +358,35 @@ Menu::Menu() { dialogsManager.data(), SLOT(lodTools())); QMenu* avatarDebugMenu = developerMenu->addMenu("Avatar"); + + QMenu* faceTrackingMenu = avatarDebugMenu->addMenu("Face Tracking"); + { + QActionGroup* faceTrackerGroup = new QActionGroup(avatarDebugMenu); + + QAction* noFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking, + 0, true, + qApp, SLOT(setActiveFaceTracker())); + faceTrackerGroup->addAction(noFaceTracker); + #ifdef HAVE_FACESHIFT - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, - MenuOption::Faceshift, - 0, - true, - DependencyManager::get().data(), - SLOT(setTCPEnabled(bool))); + QAction* faceshiftFaceTracker = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::Faceshift, + 0, true, + qApp, SLOT(setActiveFaceTracker())); + faceTrackerGroup->addAction(faceshiftFaceTracker); #endif + + QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::DDEFaceRegression, + 0, false, + qApp, SLOT(setActiveFaceTracker())); + faceTrackerGroup->addAction(ddeFaceTracker); + #ifdef HAVE_VISAGE - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::Visage, 0, false, - DependencyManager::get().data(), SLOT(updateEnabled())); + QAction* visageFaceTracker = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::Visage, + 0, false, + qApp, SLOT(setActiveFaceTracker())); + faceTrackerGroup->addAction(visageFaceTracker); #endif + } addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderSkeletonCollisionShapes); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderHeadCollisionShapes); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 19e51ad044..6dbc841a42 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -133,13 +133,12 @@ namespace MenuOption { const QString CollideWithEnvironment = "Collide With World Boundaries"; const QString Collisions = "Collisions"; const QString Console = "Console..."; + const QString ControlWithSpeech = "Control With Speech"; const QString CopyAddress = "Copy Address to Clipboard"; const QString CopyPath = "Copy Path to Clipboard"; - const QString ControlWithSpeech = "Control With Speech"; - const QString DeleteBookmark = "Delete Bookmark..."; - const QString DontRenderEntitiesAsScene = "Don't Render Entities as Scene"; - const QString DontDoPrecisionPicking = "Don't Do Precision Picking"; + const QString DDEFaceRegression = "DDE Face Regression"; const QString DecreaseAvatarSize = "Decrease Avatar Size"; + const QString DeleteBookmark = "Delete Bookmark..."; const QString DisableActivityLogger = "Disable Activity Logger"; const QString DisableAutoAdjustLOD = "Disable Automatically Adjusting LOD"; const QString DisableLightEntities = "Disable Light Entities"; @@ -152,7 +151,9 @@ namespace MenuOption { const QString DisplayModelElementChildProxies = "Display Model Element Children"; const QString DisplayModelElementProxy = "Display Model Element Bounds"; const QString DisplayTimingDetails = "Display Timing Details"; + const QString DontDoPrecisionPicking = "Don't Do Precision Picking"; const QString DontFadeOnOctreeServerChanges = "Don't Fade In/Out on Octree Server Changes"; + const QString DontRenderEntitiesAsScene = "Don't Render Entities as Scene"; const QString EchoLocalAudio = "Echo Local Audio"; const QString EchoServerAudio = "Echo Server Audio"; const QString EditEntitiesHelp = "Edit Entities Help..."; @@ -192,6 +193,7 @@ namespace MenuOption { const QString MuteEnvironment = "Mute Environment"; const QString NetworkSimulator = "Network Simulator..."; const QString NewVoxelCullingMode = "New Voxel Culling Mode"; + const QString NoFaceTracking = "None"; const QString ObeyEnvironmentalGravity = "Obey Environmental Gravity"; const QString OctreeStats = "Voxel and Entity Statistics"; const QString OffAxisProjection = "Off-Axis Projection"; diff --git a/interface/src/devices/Visage.cpp b/interface/src/devices/Visage.cpp index bdb33cc092..39bda83e61 100644 --- a/interface/src/devices/Visage.cpp +++ b/interface/src/devices/Visage.cpp @@ -174,7 +174,8 @@ void Visage::reset() { void Visage::updateEnabled() { setEnabled(Menu::getInstance()->isOptionChecked(MenuOption::Visage) && !(Menu::getInstance()->isOptionChecked(MenuOption::Faceshift) && - DependencyManager::get()->isConnectedOrConnecting())); + DependencyManager::get()->isConnectedOrConnecting()) && + !Menu::getInstance()->isOptionChecked(MenuOption::DDEFaceRegression)); } void Visage::setEnabled(bool enabled) {