From 213a8fcd639ef6955dcbb17a0032ad6fc03a53ba Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 3 Sep 2013 11:52:32 -0700 Subject: [PATCH] Working on Faceshift integration. --- cmake/modules/FindFaceshift.cmake | 44 +++++++++++++++++++++++++++++++ interface/CMakeLists.txt | 2 +- interface/src/Application.h | 4 +++ interface/src/Menu.cpp | 7 +++++ interface/src/Menu.h | 1 + 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 cmake/modules/FindFaceshift.cmake diff --git a/cmake/modules/FindFaceshift.cmake b/cmake/modules/FindFaceshift.cmake new file mode 100644 index 0000000000..64151e6b1b --- /dev/null +++ b/cmake/modules/FindFaceshift.cmake @@ -0,0 +1,44 @@ +# Try to find the Faceshift networking library +# +# You must provide a FACESHIFT_ROOT_DIR which contains lib and include directories +# +# Once done this will define +# +# FACESHIFT_FOUND - system found Faceshift +# FACESHIFT_INCLUDE_DIRS - the Faceshift include directory +# FACESHIFT_LIBRARIES - Link this to use Faceshift +# +# Created on 8/30/2013 by Andrzej Kapolka +# Copyright (c) 2013 High Fidelity +# + +if (FACESHIFT_LIBRARIES AND FACESHIFT_INCLUDE_DIRS) + # in cache already + set(FACESHIFT_FOUND TRUE) +else (FACESHIFT_LIBRARIES AND FACESHIFT_INCLUDE_DIRS) + find_path(FACESHIFT_INCLUDE_DIRS fsbinarystream.h ${FACESHIFT_ROOT_DIR}/include) + + if (APPLE) + find_library(FACESHIFT_LIBRARIES libfaceshift.a ${FACESHIFT_ROOT_DIR}/lib/MacOS/) + elseif (UNIX) + find_library(FACESHIFT_LIBRARIES libfaceshift.a ${FACESHIFT_ROOT_DIR}/lib/UNIX/) + endif () + + if (FACESHIFT_INCLUDE_DIRS AND FACESHIFT_LIBRARIES) + set(FACESHIFT_FOUND TRUE) + endif (FACESHIFT_INCLUDE_DIRS AND FACESHIFT_LIBRARIES) + + if (FACESHIFT_FOUND) + if (NOT FACESHIFT_FIND_QUIETLY) + message(STATUS "Found Faceshift: ${FACESHIFT_LIBRARIES}") + endif (NOT FACESHIFT_FIND_QUIETLY) + else (FACESHIFT_FOUND) + if (FACESHIFT_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Faceshift") + endif (FACESHIFT_FIND_REQUIRED) + endif (FACESHIFT_FOUND) + + # show the FACESHIFT_INCLUDE_DIRS and FACESHIFT_LIBRARIES variables only in the advanced view + mark_as_advanced(FACESHIFT_INCLUDE_DIRS FACESHIFT_LIBRARIES) + +endif (FACESHIFT_LIBRARIES AND FACESHIFT_INCLUDE_DIRS) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 12ee274053..d849114dd7 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -38,7 +38,7 @@ configure_file(InterfaceConfig.h.in ${PROJECT_BINARY_DIR}/includes/InterfaceConf # grab the implementation and header files from src dirs file(GLOB INTERFACE_SRCS src/*.cpp src/*.h) -foreach(SUBDIR avatar ui renderer) +foreach(SUBDIR avatar devices renderer ui) file(GLOB SUBDIR_SRCS src/${SUBDIR}/*.cpp src/${SUBDIR}/*.h) set(INTERFACE_SRCS ${INTERFACE_SRCS} ${SUBDIR_SRCS}) endforeach(SUBDIR) diff --git a/interface/src/Application.h b/interface/src/Application.h index dfb6079e81..01d2104438 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -47,6 +47,7 @@ #include "avatar/Avatar.h" #include "avatar/MyAvatar.h" #include "avatar/HandControl.h" +#include "devices/Faceshift.h" #include "renderer/AmbientOcclusionEffect.h" #include "renderer/GeometryCache.h" #include "renderer/GlowEffect.h" @@ -117,6 +118,7 @@ public: Environment* getEnvironment() { return &_environment; } SerialInterface* getSerialHeadSensor() { return &_serialHeadSensor; } Webcam* getWebcam() { return &_webcam; } + Faceshift* getFaceshift() { return &_faceshift; } BandwidthMeter* getBandwidthMeter() { return &_bandwidthMeter; } QSettings* getSettings() { return _settings; } Swatch* getSwatch() { return &_swatch; } @@ -259,6 +261,8 @@ private: Webcam _webcam; // The webcam interface + Faceshift _faceshift; + Camera _myCamera; // My view onto the world Camera _viewFrustumOffsetCamera; // The camera we use to sometimes show the view frustum from an offset mode diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index b48357218c..c3882bdcd9 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -360,6 +360,13 @@ Menu::Menu() : appInstance->getWebcam()->getGrabber(), SLOT(setDepthOnly(bool))); + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::Faceshift, + 0, + false, + appInstance->getFaceshift(), + SLOT(setEnabled(bool))); + QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools"); addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoAudio); addActionToQMenuAndActionHash(audioDebugMenu, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index d76cf0909b..f93101de87 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -133,6 +133,7 @@ namespace MenuOption { const QString ExportVoxels = "Export Voxels"; const QString HeadMouse = "Head Mouse"; const QString FaceMode = "Cycle Face Mode"; + const QString Faceshift = "Faceshift"; const QString FalseColorByDistance = "FALSE Color By Distance"; const QString FalseColorBySource = "FALSE Color By Source"; const QString FalseColorEveryOtherVoxel = "FALSE Color Every Other Randomly";