Removed jointIndices transmission experiment

This commit is contained in:
Anthony J. Thibault 2016-05-19 16:46:17 -07:00
parent de1204c42d
commit 13a057513a
2 changed files with 6 additions and 60 deletions

View file

@ -592,16 +592,6 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) {
// joint rotations
int numJoints = *sourceBuffer++;
// do not process any jointData until we've received a valid jointIndices hash from
// an earlier AvatarIdentity packet. Because if we do, we risk applying the joint data
// the wrong bones, resulting in a twisted avatar, An un-animated avatar is preferable to this.
bool skipJoints = false;
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
if (_networkJointIndexMap.empty()) {
skipJoints = true;
}
#endif
int bytesOfValidity = (int)ceil((float)numJoints / (float)BITS_IN_BYTE);
minPossibleSize += bytesOfValidity;
if (minPossibleSize > maxAvailableSize) {
@ -653,13 +643,9 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) {
for (int i = 0; i < numJoints; i++) {
JointData& data = _jointData[i];
if (validRotations[i]) {
if (skipJoints) {
sourceBuffer += COMPRESSED_QUATERNION_SIZE;
} else {
sourceBuffer += unpackOrientationQuatFromSixBytes(sourceBuffer, data.rotation);
_hasNewJointRotations = true;
data.rotationSet = true;
}
sourceBuffer += unpackOrientationQuatFromSixBytes(sourceBuffer, data.rotation);
_hasNewJointRotations = true;
data.rotationSet = true;
}
}
} // numJoints * 6 bytes
@ -705,13 +691,9 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) {
for (int i = 0; i < numJoints; i++) {
JointData& data = _jointData[i];
if (validTranslations[i]) {
if (skipJoints) {
sourceBuffer += COMPRESSED_TRANSLATION_SIZE;
} else {
sourceBuffer += unpackFloatVec3FromSignedTwoByteFixed(sourceBuffer, data.translation, TRANSLATION_COMPRESSION_RADIX);
_hasNewJointTranslations = true;
data.translationSet = true;
}
sourceBuffer += unpackFloatVec3FromSignedTwoByteFixed(sourceBuffer, data.translation, TRANSLATION_COMPRESSION_RADIX);
_hasNewJointTranslations = true;
data.translationSet = true;
}
}
} // numJoints * 6 bytes
@ -971,32 +953,13 @@ void AvatarData::clearJointsData() {
void AvatarData::parseAvatarIdentityPacket(const QByteArray& data, Identity& identityOut) {
QDataStream packetStream(data);
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
packetStream >> identityOut.uuid >> identityOut.skeletonModelURL >> identityOut.attachmentData >> identityOut.displayName >> identityOut.jointIndices;
#else
packetStream >> identityOut.uuid >> identityOut.skeletonModelURL >> identityOut.attachmentData >> identityOut.displayName;
#endif
}
bool AvatarData::processAvatarIdentity(const Identity& identity) {
bool hasIdentityChanged = false;
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
if (!_jointIndices.empty() && _networkJointIndexMap.empty() && !identity.jointIndices.empty()) {
// build networkJointIndexMap from _jointIndices and networkJointIndices.
_networkJointIndexMap.fill(-1, identity.jointIndices.size());
for (auto iter = identity.jointIndices.cbegin(); iter != identity.jointIndices.end(); ++iter) {
int jointIndex = getJointIndex(iter.key());
int networkJointIndex = iter.value();
if (networkJointIndex >= 0 && networkJointIndex < identity.jointIndices.size()) {
_networkJointIndexMap[networkJointIndex - 1] = jointIndex;
}
}
}
#endif
if (_firstSkeletonCheck || (identity.skeletonModelURL != _skeletonModelURL)) {
setSkeletonModelURL(identity.skeletonModelURL);
hasIdentityChanged = true;
@ -1021,12 +984,7 @@ QByteArray AvatarData::identityByteArray() {
QDataStream identityStream(&identityData, QIODevice::Append);
QUrl emptyURL("");
const QUrl& urlToSend = _skeletonModelURL.scheme() == "file" ? emptyURL : _skeletonModelURL;
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
identityStream << getSessionUUID() << urlToSend << _attachmentData << _displayName << _jointIndices;
#else
identityStream << getSessionUUID() << urlToSend << _attachmentData << _displayName;
#endif
return identityData;
}
@ -1205,10 +1163,6 @@ void AvatarData::updateJointMappings() {
_jointIndices.clear();
_jointNames.clear();
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
_networkJointIndexMap.clear();
#endif
if (_skeletonModelURL.fileName().toLower().endsWith(".fst")) {
QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
QNetworkRequest networkRequest = QNetworkRequest(_skeletonModelURL);

View file

@ -128,8 +128,6 @@ enum KeyState {
DELETE_KEY_DOWN
};
#define TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
class QDataStream;
class AttachmentData;
@ -287,9 +285,6 @@ public:
QUrl skeletonModelURL;
QVector<AttachmentData> attachmentData;
QString displayName;
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
QHash<QString, int> jointIndices;
#endif
};
static void parseAvatarIdentityPacket(const QByteArray& data, Identity& identityOut);
@ -382,9 +377,6 @@ protected:
float _displayNameAlpha;
QHash<QString, int> _jointIndices; ///< 1-based, since zero is returned for missing keys
#ifdef TRANSMIT_JOINT_INDICES_IN_IDENTITY_PACKET
QVector<int> _networkJointIndexMap; // maps network joint indices to local model joint indices.
#endif
QStringList _jointNames; ///< in order of depth-first traversal
quint64 _errorLogExpiry; ///< time in future when to log an error