Merge pull request #2244 from bubba/gltf2-anim-duration

Calculate the mMaxDuration property based off of keyframes for GLTF2
pull/2218/head^2
Kim Kulling 2018-12-01 18:40:45 +01:00 committed by GitHub
commit da0d49f751
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 0 deletions

View File

@ -1022,6 +1022,26 @@ void glTF2Importer::ImportAnimations(glTF2::Asset& r)
++j;
}
}
// Use the latest keyframe for the duration of the animation
unsigned int maxDuration = 0;
for (unsigned int j = 0; j < ai_anim->mNumChannels; ++j) {
auto chan = ai_anim->mChannels[j];
if (chan->mNumPositionKeys) {
auto lastPosKey = chan->mPositionKeys[chan->mNumPositionKeys - 1];
if (lastPosKey.mTime > maxDuration) maxDuration = lastPosKey.mTime;
}
if (chan->mNumRotationKeys) {
auto lastRotKey = chan->mRotationKeys[chan->mNumRotationKeys - 1];
if (lastRotKey.mTime > maxDuration) maxDuration = lastRotKey.mTime;
}
if (chan->mNumScalingKeys) {
auto lastScaleKey = chan->mScalingKeys[chan->mNumScalingKeys - 1];
if (lastScaleKey.mTime > maxDuration) maxDuration = lastScaleKey.mTime;
}
}
ai_anim->mDuration = maxDuration;
mScene->mAnimations[i] = ai_anim;
}
}