Fix off by one error which omitted final frame of animations

This commit is contained in:
Matt Penny 2024-03-16 00:04:26 -04:00
parent 35e9d433a4
commit 2b09deb1fe
2 changed files with 8 additions and 2 deletions

View file

@ -154,7 +154,10 @@ local function build_armature_pose(armature, node_pose, result)
end
local function build_animation(armature, animation)
local n_frames = math.ceil(animation.duration * sk_input.settings.ticks_per_second / animation.ticks_per_second)
-- Don't stop at the last frame, include it
local ticks_to_include = animation.duration + 1
local n_frames = math.ceil(ticks_to_include * sk_input.settings.ticks_per_second / animation.ticks_per_second)
local node_pose = {}

View file

@ -156,7 +156,10 @@ aiQuaternion evaluateQuaternionAt(const aiQuatKey* keys, unsigned keyCount, doub
}
std::string generateanimationV2(const aiAnimation& animation, int index, BoneHierarchy& bones, CFileDefinition& fileDef, const DisplayListSettings& settings) {
int nFrames = ceil(animation.mDuration * settings.mTicksPerSecond / animation.mTicksPerSecond) + 1;
// Don't stop at the last frame, include it
int ticksToInclude = animation.mDuration + 1;
int nFrames = ceil(ticksToInclude * settings.mTicksPerSecond / animation.mTicksPerSecond);
std::vector<std::vector<FrameData>> allFrameData(nFrames);