Starting on Visage integration.

This commit is contained in:
Andrzej Kapolka 2014-02-11 16:44:25 -08:00
parent 9851d01411
commit 25066f8b4f
6 changed files with 131 additions and 3 deletions

View file

@ -0,0 +1,44 @@
# Try to find the Visage controller library
#
# You must provide a VISAGE_ROOT_DIR which contains lib and include directories
#
# Once done this will define
#
# VISAGE_FOUND - system found Visage
# VISAGE_INCLUDE_DIRS - the Visage include directory
# VISAGE_LIBRARIES - Link this to use Visage
#
# Created on 2/11/2014 by Andrzej Kapolka
# Copyright (c) 2014 High Fidelity
#
if (VISAGE_LIBRARIES AND VISAGE_INCLUDE_DIRS)
# in cache already
set(VISAGE_FOUND TRUE)
else (VISAGE_LIBRARIES AND VISAGE_INCLUDE_DIRS)
find_path(VISAGE_INCLUDE_DIRS VisageTracker2.h ${VISAGE_ROOT_DIR}/include)
if (APPLE)
find_library(VISAGE_LIBRARIES libvscore.a ${VISAGE_ROOT_DIR}/lib)
elseif (WIN32)
find_library(VISAGE_LIBRARIES vscore.dll ${VISAGE_ROOT_DIR}/lib)
endif ()
if (VISAGE_INCLUDE_DIRS AND VISAGE_LIBRARIES)
set(VISAGE_FOUND TRUE)
endif (VISAGE_INCLUDE_DIRS AND VISAGE_LIBRARIES)
if (VISAGE_FOUND)
if (NOT VISAGE_FIND_QUIETLY)
message(STATUS "Found Visage: ${VISAGE_LIBRARIES}")
endif (NOT VISAGE_FIND_QUIETLY)
else (VISAGE_FOUND)
if (VISAGE_FIND_REQUIRED)
message(FATAL_ERROR "Could not find Visage")
endif (VISAGE_FIND_REQUIRED)
endif (VISAGE_FOUND)
# show the VISAGE_INCLUDE_DIRS and VISAGE_LIBRARIES variables only in the advanced view
mark_as_advanced(VISAGE_INCLUDE_DIRS VISAGE_LIBRARIES)
endif (VISAGE_LIBRARIES AND VISAGE_INCLUDE_DIRS)

View file

@ -11,6 +11,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake
set(FACESHIFT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/faceshift)
set(LIBOVR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/LibOVR)
set(SIXENSE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/Sixense)
set(VISAGE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/visage)
if (DEFINED ENV{JOB_ID})
set(BUILD_SEQ $ENV{JOB_ID})
@ -132,9 +133,10 @@ find_package(Faceshift)
find_package(GLM REQUIRED)
find_package(LibOVR)
find_package(Sixense)
find_package(Visage)
find_package(ZLIB)
# likewise with Sixense library for Razer Hydra
# include the Sixense library for Razer Hydra if available
if (SIXENSE_FOUND AND NOT DISABLE_SIXENSE)
add_definitions(-DHAVE_SIXENSE)
include_directories(SYSTEM ${SIXENSE_INCLUDE_DIRS})
@ -144,6 +146,16 @@ if (SIXENSE_FOUND AND NOT DISABLE_SIXENSE)
target_link_libraries(${TARGET_NAME} ${SIXENSE_LIBRARIES})
endif (SIXENSE_FOUND AND NOT DISABLE_SIXENSE)
# likewise with Visage library for webcam feature tracking
if (VISAGE_FOUND AND NOT DISABLE_VISAGE)
add_definitions(-DHAVE_VISAGE)
include_directories(SYSTEM ${VISAGE_INCLUDE_DIRS})
if (APPLE OR UNIX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${VISAGE_INCLUDE_DIRS}")
endif (APPLE OR UNIX)
target_link_libraries(${TARGET_NAME} ${VISAGE_LIBRARIES})
endif (VISAGE_FOUND AND NOT DISABLE_VISAGE)
# and with LibOVR for Oculus Rift
if (LIBOVR_FOUND AND NOT DISABLE_LIBOVR)
add_definitions(-DHAVE_LIBOVR)

View file

@ -2,7 +2,13 @@
Instructions for adding the Visage driver to Interface
Andrzej Kapolka, February 11, 2014
1. Copy the Visage sdk folders (lib, include) into the interface/external/visage folder. This readme.txt should be there as well.
1. Copy the Visage sdk folders (lib, include) into the interface/external/visage folder.
This readme.txt should be there as well.
2. Delete your build directory, run cmake and build, and you should be all set.
2. Copy the Visage configuration data folder (visageSDK-MacOS/Samples/MacOSX/data/) to interface/resources/visage
(i.e., so that interface/resources/visage/candide3.wfm is accessible)
3. Copy the Visage license file to interface/resources/visage/license.vlc.
4. Delete your build directory, run cmake and build, and you should be all set.

View file

@ -55,6 +55,7 @@
#include "avatar/Profile.h"
#include "devices/Faceshift.h"
#include "devices/SixenseManager.h"
#include "devices/Visage.h"
#include "renderer/AmbientOcclusionEffect.h"
#include "renderer/GeometryCache.h"
#include "renderer/GlowEffect.h"
@ -378,6 +379,7 @@ private:
Profile _profile; // The data-server linked profile for this user
Faceshift _faceshift;
Visage _visage;
SixenseManager _sixenseManager;
QStringList _activeScripts;

View file

@ -0,0 +1,36 @@
//
// Visage.cpp
// interface
//
// Created by Andrzej Kapolka on 2/11/14.
// Copyright (c) 2014 High Fidelity, Inc. All rights reserved.
//
#ifdef HAVE_VISAGE
#include <VisageTracker2.h>
#endif
#include <SharedUtil.h>
#include "Visage.h"
namespace VisageSDK {
void initializeLicenseManager(char* licenseKeyFileName);
}
using namespace VisageSDK;
Visage::Visage() {
#ifdef HAVE_VISAGE
switchToResourcesParentIfRequired();
initializeLicenseManager("resources/visage/license.vlc");
_tracker = new VisageTracker2("resources/visage/Facial Features Tracker - Asymmetric.cfg");
_tracker->trackFromCam();
#endif
}
Visage::~Visage() {
#ifdef HAVE_VISAGE
delete _tracker;
#endif
}

View file

@ -0,0 +1,28 @@
//
// Visage.h
// interface
//
// Created by Andrzej Kapolka on 2/11/14.
// Copyright (c) 2014 High Fidelity, Inc. All rights reserved.
//
#ifndef __interface__Visage__
#define __interface__Visage__
namespace VisageSDK {
class VisageTracker2;
}
/// Handles input from the Visage webcam feature tracking software.
class Visage {
public:
Visage();
~Visage();
private:
VisageSDK::VisageTracker2* _tracker;
};
#endif /* defined(__interface__Visage__) */