Merge pull request #1286 from ey6es/master

When Faceshift isn't connected, apply the audio-based blinking and brow/...
This commit is contained in:
Philip Rosedale 2013-11-22 13:49:19 -08:00
commit 184c0a67d1
3 changed files with 21 additions and 0 deletions

View file

@ -231,6 +231,13 @@ void Head::simulate(float deltaTime, bool isMine) {
_rightEyeBlinkVelocity = 0.0f;
}
}
// use data to update fake Faceshift blendshape coefficients
const float BROW_LIFT_SCALE = 500.0f;
const float JAW_OPEN_SCALE = 0.01f;
const float JAW_OPEN_DEAD_ZONE = 0.75f;
faceshift->updateFakeCoefficients(_leftEyeBlink, _rightEyeBlink, min(1.0f, _browAudioLift * BROW_LIFT_SCALE),
glm::clamp(sqrt(_averageLoudness * JAW_OPEN_SCALE) - JAW_OPEN_DEAD_ZONE, 0.0f, 1.0f), _blendshapeCoefficients);
}
// based on the nature of the lookat position, determine if the eyes can look / are looking at it.

View file

@ -92,6 +92,17 @@ void Faceshift::reset() {
_longTermAverageInitialized = false;
}
void Faceshift::updateFakeCoefficients(float leftBlink, float rightBlink, float browUp,
float jawOpen, std::vector<float>& coefficients) const {
coefficients.resize(max((int)coefficients.size(), _jawOpenIndex + 1));
coefficients[_leftBlinkIndex] = leftBlink;
coefficients[_rightBlinkIndex] = rightBlink;
coefficients[_browUpCenterIndex] = browUp;
coefficients[_browUpLeftIndex] = browUp;
coefficients[_browUpRightIndex] = browUp;
coefficients[_jawOpenIndex] = jawOpen;
}
void Faceshift::setTCPEnabled(bool enabled) {
if ((_tcpEnabled = enabled)) {
connectSocket();

View file

@ -62,6 +62,9 @@ public:
void update();
void reset();
void updateFakeCoefficients(float leftBlink, float rightBlink, float browUp,
float jawOpen, std::vector<float>& coefficients) const;
public slots:
void setTCPEnabled(bool enabled);