The end of the level visibility section places a DeterminismFence. This causes the issue.
The fence clips the frame range and produces a discontinuous frame ranges,
e.g. 23201~24000, then 24001~24800.
[2021.10.28-18.24.27:597][721]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 20800 bOutsideCachedRange:0 Bounds: 20001~ 20801 [2021.10.28-18.24.27:630][722]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 20800 bOutsideCachedRange:0 Bounds: 20800~ 20801 [2021.10.28-18.24.27:664][723]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 22400 bOutsideCachedRange:0 Bounds: 20801~ 22401 [2021.10.28-18.24.27:697][724]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 23200 bOutsideCachedRange:0 Bounds: 22401~ 23201 [2021.10.28-18.24.27:697][724]LogBlueprintUserMessages: [AttachDelay_Director_0] At Frame 29 [2021.10.28-18.24.27:731][725]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 23999 bOutsideCachedRange:0 Bounds: 23201~ 24000 [2021.10.28-18.24.27:764][726]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 24800 bOutsideCachedRange:1 Bounds: 24001~ 24801 [2021.10.28-18.24.27:764][726]LogBlueprintUserMessages: [AttachDelay_Director_0] At Frame 31 [2021.10.28-18.24.27:797][727]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 25600 bOutsideCachedRange:0 Bounds: 24801~ 25601 [2021.10.28-18.24.27:830][728]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 26400 bOutsideCachedRange:0 Bounds: 25601~ 26401 [2021.10.28-18.24.27:864][729]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 27200 bOutsideCachedRange:0 Bounds: 26401~ 27201 [2021.10.28-18.24.27:897][730]LogTemp: FSequenceUpdater_Flat::Update ImportTime: 28000 bOutsideCachedRange:0 Bounds: 27201~ 28001 [
Following work around can fix the issue.
void DissectRange(TArrayView<const FFrameTime> InDissectionTimes, const TRange<FFrameTime>& Bounds, TArray<TRange<FFrameTime>>& OutDissections) { ... TRange<FFrameTime> TailRange(LowerBound, Bounds.GetUpperBound()); // if (!TailRange.IsEmpty() && !TailRange.IsDegenerate()) if (!TailRange.IsEmpty() ) // workaround { OutDissections.Add(TailRange); } }
void FSequenceUpdater_Flat::Update(UMovieSceneEntitySystemLinker* Linker, FInstanceHandle InstanceHandle, IMovieScenePlayer* InPlayer, const FMovieSceneContext& Context) ... FFrameNumber ImportTime = ImportTimeFromContext(Context); const bool bOutsideCachedRange = !CachedEntityRange.Contains(ImportTime); // Log ImportTime and FrameRange UE_LOG(LogTemp, Log, TEXT("FSequenceUpdater_Flat::Update ImportTime:%7d bOutsideCachedRange:%d Bounds:%7d~%7d"), ImportTime.Value, bOutsideCachedRange?1:0, Range.GetLowerBoundValue().Value, Range.GetUpperBoundValue().Value); if (bOutsideCachedRange)
An event that should be executed at frame 30 is not triggered and AttachSection, which should also be executed at frame 30, is delayed by 1 tick.
See attached screen shots.
[Link Removed]
[Link Removed]
[Link Removed]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-133113 in the post.
0 |
Component | UE - Anim - Sequencer |
---|---|
Affects Versions | 4.27, 4.27.1 |
Target Fix | 4.27.2 |
Created | Oct 28, 2021 |
---|---|
Resolved | Nov 1, 2021 |
Updated | Dec 1, 2022 |