It's possible for blendspaces to end up with an invalid delta time record because of how UBlendSpace::TickAssetPlayer modifies the time record. This only seems to happen with specific settings:
It seems that the issue is this code that seems to attempt to scale the playback when the sample point is outside of the blendspace grid:
FVector ClampedInput = GetClampedBlendInput(FilteredBlendInput); if (!ClampedInput.Equals(FilteredBlendInput)) { // apply speed change if you want, if (AxisToScale == BSA_X && !BlendParameters[0].bWrapInput) { if (ClampedInput.X != 0.f) { FilterMultiplier *= FilteredBlendInput.X / ClampedInput.X; } } else if (AxisToScale == BSA_Y) { if (ClampedInput.Y != 0.f && !BlendParameters[1].bWrapInput) { FilterMultiplier *= FilteredBlendInput.Y / ClampedInput.Y; } } }
While this deals with the possibility that ClampedInput.X or Y can be zero, it doesn't deal with FilteredBlendInput.X or Y being zero.
This issue doesn't break the generation of root motion from the blendspace. But it does break anything that relies on the delta time record from the blendspace node - ie. the fix for [Link Removed]
Instance.DeltaTimeRecord->Delta *= FilterMultiplier;
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-212746 in the post.
0 |
Component | UE - Anim - Runtime |
---|---|
Target Fix | 5.5 |
Fix Commit | 36442132 |
---|
Created | Apr 19, 2024 |
---|---|
Resolved | Sep 20, 2024 |
Updated | Oct 15, 2024 |