From 59b785a33bbfcc818a8597b262dec15749b83847 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 15 Jun 2016 16:55:34 -0700 Subject: [PATCH] trying to debug --- libraries/animation/src/Rig.cpp | 4 +--- libraries/avatars/src/AvatarData.cpp | 27 ++++++++++++++++++--------- libraries/avatars/src/AvatarData.h | 2 +- libraries/render-utils/src/Model.cpp | 3 +++ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index b21f5a0e84..8f0bd3fd87 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -163,7 +163,6 @@ void Rig::destroyAnimGraph() { } void Rig::initJointStates(const FBXGeometry& geometry, const glm::mat4& modelOffset) { - _geometryOffset = AnimPose(geometry.offset); _invGeometryOffset = _geometryOffset.inverse(); setModelOffset(modelOffset); @@ -1224,8 +1223,7 @@ void Rig::copyJointsIntoJointData(QVector& jointDataVec) const { } void Rig::copyJointsFromJointData(const QVector& jointDataVec) { - - if (_animSkeleton) { + if (_animSkeleton && jointDataVec.size() == _internalPoseSet._overrideFlags.size()) { // transform all the default poses into rig space. const AnimPose geometryToRigPose(_geometryToRigTransform); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 26bf0fb2a2..0ae58ca1de 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -261,7 +261,7 @@ QByteArray AvatarData::toByteArray(bool cullSmallChanges, bool sendAll) { unsigned char validity = 0; int validityBit = 0; - #ifdef WANT_DEBUG + #if 1 int rotationSentCount = 0; unsigned char* beforeRotations = destinationBuffer; #endif @@ -276,7 +276,7 @@ QByteArray AvatarData::toByteArray(bool cullSmallChanges, bool sendAll) { fabsf(glm::dot(data.rotation, _lastSentJointData[i].rotation)) <= AVATAR_MIN_ROTATION_DOT) { if (data.rotationSet) { validity |= (1 << validityBit); - #ifdef WANT_DEBUG + #if 1 rotationSentCount++; #endif } @@ -310,7 +310,7 @@ QByteArray AvatarData::toByteArray(bool cullSmallChanges, bool sendAll) { validity = 0; validityBit = 0; - #ifdef WANT_DEBUG + #if 1 int translationSentCount = 0; unsigned char* beforeTranslations = destinationBuffer; #endif @@ -324,7 +324,7 @@ QByteArray AvatarData::toByteArray(bool cullSmallChanges, bool sendAll) { glm::distance(data.translation, _lastSentJointData[i].translation) > AVATAR_MIN_TRANSLATION) { if (data.translationSet) { validity |= (1 << validityBit); - #ifdef WANT_DEBUG + #if 1 translationSentCount++; #endif maxTranslationDimension = glm::max(fabsf(data.translation.x), maxTranslationDimension); @@ -359,7 +359,7 @@ QByteArray AvatarData::toByteArray(bool cullSmallChanges, bool sendAll) { } } - #ifdef WANT_DEBUG + #if 1 if (sendAll) { qDebug() << "AvatarData::toByteArray" << cullSmallChanges << sendAll << "rotations:" << rotationSentCount << "translations:" << translationSentCount @@ -584,6 +584,9 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { sourceBuffer += unpackOrientationQuatFromSixBytes(sourceBuffer, data.rotation); _hasNewJointRotations = true; data.rotationSet = true; + } else if (numValidJointRotations == numJoints) { + _hasNewJointRotations = true; + data.rotationSet = false; } } @@ -620,10 +623,13 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { sourceBuffer += unpackFloatVec3FromSignedTwoByteFixed(sourceBuffer, data.translation, TRANSLATION_COMPRESSION_RADIX); _hasNewJointTranslations = true; data.translationSet = true; + } else if (numValidJointRotations == numJoints) { + _hasNewJointTranslations = true; + data.translationSet = false; } } - #ifdef WANT_DEBUG + #if 1 if (numValidJointRotations > 15) { qDebug() << "RECEIVING -- rotations:" << numValidJointRotations << "translations:" << numValidJointTranslations @@ -1052,17 +1058,20 @@ void AvatarData::setJointMappingsFromNetworkReply() { _jointIndices.insert(_jointNames.at(i), i + 1); } - sendIdentityPacket(); + //sendIdentityPacket(); + //sendAvatarDataPacket(true); + qDebug() << "set joint mapping froms network reply, num joints: " << _jointIndices.size(); networkReply->deleteLater(); } -void AvatarData::sendAvatarDataPacket() { +void AvatarData::sendAvatarDataPacket(bool sendFull) { auto nodeList = DependencyManager::get(); // about 2% of the time, we send a full update (meaning, we transmit all the joint data), even if nothing has changed. // this is to guard against a joint moving once, the packet getting lost, and the joint never moving again. - bool sendFullUpdate = randFloat() < AVATAR_SEND_FULL_UPDATE_RATIO; + bool sendFullUpdate = sendFull || (randFloat() < AVATAR_SEND_FULL_UPDATE_RATIO); + if (sendFullUpdate) qDebug() << sendFullUpdate; QByteArray avatarByteArray = toByteArray(true, sendFullUpdate); doneEncoding(true); diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 61ee649273..7fe339c2b9 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -352,7 +352,7 @@ public: AvatarEntityIDs getAndClearRecentlyDetachedIDs(); public slots: - void sendAvatarDataPacket(); + void sendAvatarDataPacket(bool sendFull = false); void sendIdentityPacket(); void setJointMappingsFromNetworkReply(); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index ded1184c24..2112e64a39 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -254,6 +254,7 @@ bool Model::updateGeometry() { _needsReload = false; if (_rig->jointStatesEmpty() && getFBXGeometry().joints.size() > 0) { + qDebug() << "initJointStates, num joints: " << getFBXGeometry().joints.size(); initJointStates(); const FBXGeometry& fbxGeometry = getFBXGeometry(); @@ -817,7 +818,9 @@ void Model::setURL(const QUrl& url) { invalidCalculatedMeshBoxes(); deleteGeometry(); + if (_geometry && _geometry->getGeometry()) qDebug() << "geometry1: " << _geometry->getGeometry()->getGeometry().joints.size(); _geometry = DependencyManager::get()->getGeometry(url); + if (_geometry && _geometry->getGeometry()) qDebug() << "geometry2: " << _geometry->getGeometry()->getGeometry().joints.size(); onInvalidate(); }