HACK: For some reason Blender likes to create a first frame that doesn't start at time 0
This commit is contained in:
@@ -293,6 +293,10 @@ dd::RawModel::RawModel(std::string fileName)
|
|||||||
Skeleton::Animation::Keyframe animationFrame;
|
Skeleton::Animation::Keyframe animationFrame;
|
||||||
animationFrame.Index = keyframe;
|
animationFrame.Index = keyframe;
|
||||||
animationFrame.Time = frameTimes[keyframe] / animation->mTicksPerSecond;
|
animationFrame.Time = frameTimes[keyframe] / animation->mTicksPerSecond;
|
||||||
|
// HACK: For some reason Blender likes to create a first frame that doesn't start at time 0
|
||||||
|
if (keyframe == 0) {
|
||||||
|
animationFrame.Time = 0;
|
||||||
|
}
|
||||||
for (auto &kv2 : kv.second) {
|
for (auto &kv2 : kv.second) {
|
||||||
int boneID = kv2.first;
|
int boneID = kv2.first;
|
||||||
auto &property = kv2.second;
|
auto &property = kv2.second;
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ int dd::Skeleton::GetKeyframe(const Animation& animation, double time)
|
|||||||
|
|
||||||
for (int keyframe = 0; keyframe < animation.Keyframes.size(); ++keyframe) {
|
for (int keyframe = 0; keyframe < animation.Keyframes.size(); ++keyframe) {
|
||||||
if (animation.Keyframes[keyframe].Time > time)
|
if (animation.Keyframes[keyframe].Time > time)
|
||||||
return glm::max(0, keyframe - 1); // HACK: If the time is less than the first keyframe, don
|
return (keyframe - 1) % animation.Keyframes.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user