From dca93ca61f8fe2ef51f6ba0a809a3dd59a7e364a Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 6 Jun 2018 16:44:12 -0700 Subject: [PATCH] fixed setatone16 function to return the correct result for additional flags --- .../avatars-renderer/src/avatars-renderer/Head.cpp | 14 +++++++++++--- libraries/avatars/src/AvatarData.cpp | 11 +++++++++++ libraries/shared/src/SharedUtil.cpp | 4 ++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index 39b50b9255..9b6333a4b5 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -45,6 +45,13 @@ void Head::reset() { void Head::simulate(float deltaTime) { const float NORMAL_HZ = 60.0f; // the update rate the constant values were tuned for + qCDebug(avatars_renderer) << "name " << _owningAvatar->getName(); + if (_owningAvatar->isMyAvatar()) { + qCDebug(avatars_renderer) << "my avatar"; + } else { + qCDebug(avatars_renderer) << "not my avatar " << _owningAvatar->getAudioLoudness(); + } + // grab the audio loudness from the owning avatar, if we have one float audioLoudness = _owningAvatar ? _owningAvatar->getAudioLoudness() : 0.0f; @@ -78,6 +85,7 @@ void Head::simulate(float deltaTime) { _saccade = glm::vec3(); } + const float BLINK_SPEED = 10.0f; const float BLINK_SPEED_VARIABILITY = 1.0f; @@ -85,7 +93,7 @@ void Head::simulate(float deltaTime) { const float FULLY_OPEN = 0.0f; const float FULLY_CLOSED = 1.0f; if (getHasProceduralBlinkFaceMovement()) { - qCDebug(avatars_renderer) << "in the blink code"; + qCDebug(avatars_renderer) << "in the blink code " << _owningAvatar->getName(); // Detect transition from talking to not; force blink after that and a delay bool forceBlink = false; const float TALKING_LOUDNESS = 100.0f; @@ -135,7 +143,7 @@ void Head::simulate(float deltaTime) { // use data to update fake Faceshift blendshape coefficients if (getHasAudioEnabledFaceMovement()) { - qCDebug(avatars_renderer) << "in the audio face code"; + //qCDebug(avatars_renderer) << "in the audio face code"; // Update audio attack data for facial animation (eyebrows and mouth) float audioAttackAveragingRate = (10.0f - deltaTime * NORMAL_HZ) / 10.0f; // --> 0.9 at 60 Hz _audioAttack = audioAttackAveragingRate * _audioAttack + @@ -167,7 +175,7 @@ void Head::simulate(float deltaTime) { _transientBlendshapeCoefficients); if (getHasProceduralEyeFaceMovement()) { - qCDebug(avatars_renderer) << "in the eye face code"; + //qCDebug(avatars_renderer) << "in the eye face code"; applyEyelidOffset(getOrientation()); } diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 7ae9ba1257..43b490719f 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -522,12 +522,17 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent auto faceTrackerInfo = reinterpret_cast(destinationBuffer); const auto& blendshapeCoefficients = _headData->getBlendshapeCoefficients(); + //for (int i = 0; i < blendshapeCoefficients.size(); i++) { + // qCWarning(avatars) << "blend coeff " << i << " " << blendshapeCoefficients[i]; + //} + faceTrackerInfo->leftEyeBlink = _headData->_leftEyeBlink; faceTrackerInfo->rightEyeBlink = _headData->_rightEyeBlink; faceTrackerInfo->averageLoudness = _headData->_averageLoudness; faceTrackerInfo->browAudioLift = _headData->_browAudioLift; faceTrackerInfo->numBlendshapeCoefficients = blendshapeCoefficients.size(); destinationBuffer += sizeof(AvatarDataPacket::FaceTrackerInfo); + qCWarning(avatars) << "face tracker info left eye blink " << faceTrackerInfo->leftEyeBlink; memcpy(destinationBuffer, blendshapeCoefficients.data(), blendshapeCoefficients.size() * sizeof(float)); destinationBuffer += blendshapeCoefficients.size() * sizeof(float); @@ -1009,6 +1014,11 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { auto newHasProceduralEyeFaceMovement = oneAtBit16(bitItems, PROCEDURAL_EYE_FACE_MOVEMENT); auto newHasProceduralBlinkFaceMovement = oneAtBit16(bitItems, PROCEDURAL_BLINK_FACE_MOVEMENT); + if (newHasAudioEnabledFaceMovement) { + qCWarning(avatars) << "name " << getName() << "audio enabled flag is true"; + } else { + qCWarning(avatars) << "name " << getName() << "audio enabled flag is false"; + } bool keyStateChanged = (_keyState != newKeyState); bool handStateChanged = (_handState != newHandState); bool faceStateChanged = (_headData->_isFaceTrackerConnected != newFaceTrackerConnected); @@ -1086,6 +1096,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { PACKET_READ_CHECK(FaceTrackerInfo, sizeof(AvatarDataPacket::FaceTrackerInfo)); auto faceTrackerInfo = reinterpret_cast(sourceBuffer); sourceBuffer += sizeof(AvatarDataPacket::FaceTrackerInfo); + qCWarning(avatars) << "parse data left eye blink " << faceTrackerInfo->leftEyeBlink; _headData->_leftEyeBlink = faceTrackerInfo->leftEyeBlink; _headData->_rightEyeBlink = faceTrackerInfo->rightEyeBlink; diff --git a/libraries/shared/src/SharedUtil.cpp b/libraries/shared/src/SharedUtil.cpp index 35aab3fac1..c0203106c0 100644 --- a/libraries/shared/src/SharedUtil.cpp +++ b/libraries/shared/src/SharedUtil.cpp @@ -298,11 +298,11 @@ void setAtBit(unsigned char& byte, int bitIndex) { } bool oneAtBit16(unsigned short word, int bitIndex) { - return (word >> (7 - bitIndex) & 1); + return (word >> (16 - bitIndex) & 1); } void setAtBit16(unsigned short& word, int bitIndex) { - word |= (1 << (7 - bitIndex)); + word |= (1 << (16 - bitIndex)); }