Don't optimize.

This commit is contained in:
K. S. Ernest (iFire) Lee 2021-06-06 19:33:43 -07:00
parent 0d05af2861
commit f9670e4964
1 changed files with 5 additions and 41 deletions

View File

@ -755,7 +755,6 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o
eMode = FbxTime::eFrames60; eMode = FbxTime::eFrames60;
break; break;
} }
const double epsilon = 1e-5f;
const int animationCount = pScene->GetSrcObjectCount<FbxAnimStack>(); const int animationCount = pScene->GetSrcObjectCount<FbxAnimStack>();
for (size_t animIx = 0; animIx < animationCount; animIx++) { for (size_t animIx = 0; animIx < animationCount; animIx++) {
@ -832,10 +831,6 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o
const FbxVector4 baseTranslation = baseTransform.GetT(); const FbxVector4 baseTranslation = baseTransform.GetT();
const FbxQuaternion baseRotation = baseTransform.GetQ(); const FbxQuaternion baseRotation = baseTransform.GetQ();
const FbxVector4 baseScaling = computeLocalScale(pNode); const FbxVector4 baseScaling = computeLocalScale(pNode);
bool hasTranslation = false;
bool hasRotation = false;
bool hasScale = false;
bool hasMorphs = false;
RawChannel channel; RawChannel channel;
channel.nodeIndex = raw.GetNodeById(pNode->GetUniqueID()); channel.nodeIndex = raw.GetNodeById(pNode->GetUniqueID());
@ -849,20 +844,6 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o
const FbxQuaternion localRotation = localTransform.GetQ(); const FbxQuaternion localRotation = localTransform.GetQ();
const FbxVector4 localScale = computeLocalScale(pNode, pTime); const FbxVector4 localScale = computeLocalScale(pNode, pTime);
hasTranslation |=
(fabs(localTranslation[0] - baseTranslation[0]) > epsilon ||
fabs(localTranslation[1] - baseTranslation[1]) > epsilon ||
fabs(localTranslation[2] - baseTranslation[2]) > epsilon);
hasRotation |=
(fabs(localRotation[0] - baseRotation[0]) > epsilon ||
fabs(localRotation[1] - baseRotation[1]) > epsilon ||
fabs(localRotation[2] - baseRotation[2]) > epsilon ||
fabs(localRotation[3] - baseRotation[3]) > epsilon);
hasScale |=
(fabs(localScale[0] - baseScaling[0]) > epsilon ||
fabs(localScale[1] - baseScaling[1]) > epsilon ||
fabs(localScale[2] - baseScaling[2]) > epsilon);
channel.translations.push_back(toVec3f(localTranslation) * scaleFactor); channel.translations.push_back(toVec3f(localTranslation) * scaleFactor);
channel.rotations.push_back(toQuatf(localRotation)); channel.rotations.push_back(toQuatf(localRotation));
channel.scales.push_back(toVec3f(localScale)); channel.scales.push_back(toVec3f(localScale));
@ -916,7 +897,6 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o
if (!std::isnan(result)) { if (!std::isnan(result)) {
// we're transitioning into targetIx // we're transitioning into targetIx
channel.weights.push_back(result); channel.weights.push_back(result);
hasMorphs = true;
continue; continue;
} }
if (targetIx != targetCount - 1) { if (targetIx != targetCount - 1) {
@ -924,7 +904,6 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o
if (!std::isnan(result)) { if (!std::isnan(result)) {
// we're transitioning AWAY from targetIx // we're transitioning AWAY from targetIx
channel.weights.push_back(1.0f - result); channel.weights.push_back(1.0f - result);
hasMorphs = true;
continue; continue;
} }
} }
@ -938,27 +917,12 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o
} }
} }
if (hasTranslation || hasRotation || hasScale || hasMorphs) { animation.channels.emplace_back(channel);
if (!hasTranslation) {
channel.translations.clear();
}
if (!hasRotation) {
channel.rotations.clear();
}
if (!hasScale) {
channel.scales.clear();
}
if (!hasMorphs) {
channel.weights.clear();
}
animation.channels.emplace_back(channel); totalSizeInBytes += channel.translations.size() * sizeof(channel.translations[0]) +
channel.rotations.size() * sizeof(channel.rotations[0]) +
totalSizeInBytes += channel.translations.size() * sizeof(channel.translations[0]) + channel.scales.size() * sizeof(channel.scales[0]) +
channel.rotations.size() * sizeof(channel.rotations[0]) + channel.weights.size() * sizeof(channel.weights[0]);
channel.scales.size() * sizeof(channel.scales[0]) +
channel.weights.size() * sizeof(channel.weights[0]);
}
if (verboseOutput) { if (verboseOutput) {
fmt::printf( fmt::printf(