From 6eb421d564c72ac07c4d6bd00df9acd6b188c269 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 25 Jun 2013 16:51:22 -0700 Subject: [PATCH 1/7] Blink less when talking (and never when brows are raised); force a blink after we stop talking. --- interface/src/Head.cpp | 23 ++++++++++++++++++----- interface/src/Head.h | 1 + 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index 61b4ca96b9..5b1d7bdd5f 100644 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -76,7 +76,8 @@ Head::Head(Avatar* owningAvatar) : _leftEyeBlink(0.0f), _rightEyeBlink(0.0f), _leftEyeBlinkVelocity(0.0f), - _rightEyeBlinkVelocity(0.0f) + _rightEyeBlinkVelocity(0.0f), + _timeWithoutTalking(0.0f) { if (USING_PHYSICAL_MOHAWK) { resetHairPhysics(); @@ -147,12 +148,22 @@ void Head::simulate(float deltaTime, bool isMine) { _saccadeTarget = SACCADE_MAGNITUDE * randVector(); } _saccade += (_saccadeTarget - _saccade) * 0.50f; - + // Update audio trailing average for rendering facial animations const float AUDIO_AVERAGING_SECS = 0.05; _averageLoudness = (1.f - deltaTime / AUDIO_AVERAGING_SECS) * _averageLoudness + (deltaTime / AUDIO_AVERAGING_SECS) * _audioLoudness; - + + // Detect transition from talking to not; force blink after that and a delay + bool forceBlink = false; + const float TALKING_LOUDNESS = 100.0f; + const float BLINK_AFTER_TALKING = 0.25f; + if (_averageLoudness > TALKING_LOUDNESS) { + _timeWithoutTalking = 0.0f; + + } else if (_timeWithoutTalking < BLINK_AFTER_TALKING && (_timeWithoutTalking += deltaTime) >= BLINK_AFTER_TALKING) { + forceBlink = true; + } // Update audio attack data for facial animation (eyebrows and mouth) _audioAttack = 0.9 * _audioAttack + 0.1 * fabs(_audioLoudness - _lastLoudness); @@ -172,8 +183,10 @@ void Head::simulate(float deltaTime, bool isMine) { const float FULLY_OPEN = 0.0f; const float FULLY_CLOSED = 1.0f; if (_leftEyeBlinkVelocity == 0.0f && _rightEyeBlinkVelocity == 0.0f) { - const float BLINK_INTERVAL = 4.0f; - if (shouldDo(BLINK_INTERVAL, deltaTime)) { + // no blinking when brows are raised; blink less with increasing loudness + const float ROOT_LOUDNESS_TO_BLINK_INTERVAL = 0.75f; + if (forceBlink || _browAudioLift < EPSILON && shouldDo( + sqrtf(_averageLoudness) * ROOT_LOUDNESS_TO_BLINK_INTERVAL, deltaTime)) { _leftEyeBlinkVelocity = BLINK_SPEED; _rightEyeBlinkVelocity = BLINK_SPEED; } diff --git a/interface/src/Head.h b/interface/src/Head.h index a41b836eda..2cc5c9df00 100644 --- a/interface/src/Head.h +++ b/interface/src/Head.h @@ -110,6 +110,7 @@ private: float _rightEyeBlink; float _leftEyeBlinkVelocity; float _rightEyeBlinkVelocity; + float _timeWithoutTalking; static ProgramObject* _irisProgram; static GLuint _irisTextureID; From f2f29d2e604ff47d9744246168b33114bb6b278a Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 25 Jun 2013 16:58:31 -0700 Subject: [PATCH 2/7] Well, I guess OS X doesn't like || and && without parentheses. --- interface/src/Head.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index 5b1d7bdd5f..48a0caab5e 100644 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -185,8 +185,8 @@ void Head::simulate(float deltaTime, bool isMine) { if (_leftEyeBlinkVelocity == 0.0f && _rightEyeBlinkVelocity == 0.0f) { // no blinking when brows are raised; blink less with increasing loudness const float ROOT_LOUDNESS_TO_BLINK_INTERVAL = 0.75f; - if (forceBlink || _browAudioLift < EPSILON && shouldDo( - sqrtf(_averageLoudness) * ROOT_LOUDNESS_TO_BLINK_INTERVAL, deltaTime)) { + if (forceBlink || (_browAudioLift < EPSILON && shouldDo( + sqrtf(_averageLoudness) * ROOT_LOUDNESS_TO_BLINK_INTERVAL, deltaTime))) { _leftEyeBlinkVelocity = BLINK_SPEED; _rightEyeBlinkVelocity = BLINK_SPEED; } From 1f1e520ec84f51846a8d99c0d25ca8ca7091c459 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:10:04 -0700 Subject: [PATCH 3/7] fix cURL parameters for branch deploy job --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 45f2b19477..dfe930a548 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d 'action=deploy&role=highfidelity-live&revision=${targetName}' https://${ARTIFACT_DESTINATION}" + script "curl -d action=deploy role=highfidelity-live revision=${targetName} https://${ARTIFACT_DESTINATION}" } } } From 8a7897d326a8ee277884a467b1c19df2bdd6193b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:12:04 -0700 Subject: [PATCH 4/7] use deploy-dev, add missing d options --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index dfe930a548..3a1a2ee990 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy role=highfidelity-live revision=${targetName} https://${ARTIFACT_DESTINATION}" + script "curl -d action=deploy-dev -d role=highfidelity-live -d revision=${targetName} https://${ARTIFACT_DESTINATION}" } } } From 8e078153228491db362e8355184bfda5bfb60f03 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:34:26 -0700 Subject: [PATCH 5/7] use double quotes for env interpolation, change role --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 3a1a2ee990..c5991e3879 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy-dev -d role=highfidelity-live -d revision=${targetName} https://${ARTIFACT_DESTINATION}" + script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" } } } From 815283d6d5e7ceef2becc05412918754b02ca881 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:35:09 -0700 Subject: [PATCH 6/7] clean up double quote usage --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index c5991e3879..0d31cc1aa1 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" + script 'curl -d action=deploy-dev -d role=highfidelity_dev-grid -d "revision=${targetName}" https://${ARTIFACT_DESTINATION}' } } } From ac9f4d4c30b64d976039007a0fc3ba40ae978fc0 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:56:55 -0700 Subject: [PATCH 7/7] double double quotes needed for correct interpolation --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 0d31cc1aa1..c5991e3879 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script 'curl -d action=deploy-dev -d role=highfidelity_dev-grid -d "revision=${targetName}" https://${ARTIFACT_DESTINATION}' + script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" } } }