From a6dd08fea89d4d06ac9b1b9ecd84c18bea64369c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 6 May 2015 11:38:14 -0700 Subject: [PATCH] Calculate average coefficient values --- interface/src/devices/DdeFaceTracker.cpp | 17 +++++++++++++++-- interface/src/devices/DdeFaceTracker.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/interface/src/devices/DdeFaceTracker.cpp b/interface/src/devices/DdeFaceTracker.cpp index 5736717419..3bb6a3530a 100644 --- a/interface/src/devices/DdeFaceTracker.cpp +++ b/interface/src/devices/DdeFaceTracker.cpp @@ -138,7 +138,7 @@ struct Packet { static const float STARTING_DDE_MESSAGE_TIME = 0.033f; -static const quint64 CALIBRATION_SAMPLES = 150; +static const int CALIBRATION_SAMPLES = 150; #ifdef WIN32 // warning C4351: new behavior: elements of array 'DdeFaceTracker::_lastEyeBlinks' will be default initialized @@ -183,14 +183,15 @@ DdeFaceTracker::DdeFaceTracker(const QHostAddress& host, quint16 serverPort, qui _filteredEyeBlinks(), _lastEyeCoefficients(), _isCalibrating(false), + _calibrationValues(), _calibrationCount(0), _calibrationBillboard(NULL), _calibrationBillboardID(0), _calibrationMessage(QString()) { _coefficients.resize(NUM_FACESHIFT_BLENDSHAPES); - _blendshapeCoefficients.resize(NUM_FACESHIFT_BLENDSHAPES); + _calibrationValues.resize(NUM_FACESHIFT_BLENDSHAPES); _eyeStates[0] = EYE_OPEN; _eyeStates[1] = EYE_OPEN; @@ -558,6 +559,9 @@ void DdeFaceTracker::calibrate() { _calibrationBillboard->setHeight(CALIBRATION_BILLBOARD_HEIGHT); _calibrationBillboardID = qApp->getOverlays().addOverlay(_calibrationBillboard); + for (int i = 0; i < NUM_FACESHIFT_BLENDSHAPES; i++) { + _calibrationValues[i] += 0.0f; + } } } @@ -573,6 +577,10 @@ void DdeFaceTracker::addCalibrationDatum() { _calibrationBillboard->setText(_calibrationMessage); } + for (int i = 0; i < NUM_FACESHIFT_BLENDSHAPES; i++) { + _calibrationValues[i] += _coefficients[i]; + } + _calibrationCount += 1; } @@ -587,5 +595,10 @@ void DdeFaceTracker::finishCalibration() { qApp->getOverlays().deleteOverlay(_calibrationBillboardID); _calibrationBillboard = NULL; _isCalibrating = false; + + for (int i = 0; i < NUM_FACESHIFT_BLENDSHAPES; i++) { + _calibrationValues[i] = _calibrationValues[i] / (float)CALIBRATION_SAMPLES; + } + qCDebug(interfaceapp) << "DDE Face Tracker: Calibration finished"; } diff --git a/interface/src/devices/DdeFaceTracker.h b/interface/src/devices/DdeFaceTracker.h index 0078cbcd61..342ef1c3ec 100644 --- a/interface/src/devices/DdeFaceTracker.h +++ b/interface/src/devices/DdeFaceTracker.h @@ -125,6 +125,7 @@ private: bool _isCalibrating; int _calibrationCount; + QVector _calibrationValues; TextOverlay* _calibrationBillboard; int _calibrationBillboardID; QString _calibrationMessage;