If a camera track has only additive transform track, some functions return uninitialized F3DTransformTrackToken made by default constructor.
It causes a rare assertion.
Please take a look at
F3DTransformTrackToken::F3DTransformTrackToken(),
FComponentTransformActuator::RetrieveCurrentValue(...) and
FSimulatedComponentTransformActuator::RetrieveCurrentValue(...)
The initialization code below can fix this issue.
// code placeholder
struct F3DTransformTrackToken
{
F3DTransformTrackToken()
:Translation(FVector::ZeroVector),
Rotation(FRotator::ZeroRotator),
Scale(FVector::OneVector)
{
}
Following code is useful to see this behavior
// code placeholder at FComponentTransformActuator::Actuate virtual void Actuate(FMovieSceneInterrogationData& InterrogationData, const F3DTransformTrackToken& InValue, const TBlendableTokenStack<F3DTransformTrackToken>& OriginalStack, const FMovieSceneContext& Context) const override { #if !UE_GAME if( IsRunningCommandlet() ) { UE_LOG(LogMovieSceneDebug, Display, TEXT("Rotation %s Translation %s"), *InValue.Rotation.ToString(), *InValue.Translation.ToString() ); } #endif InterrogationData.Add(FTransform(InValue.Rotation.Quaternion(), InValue.Translation, InValue.Scale), UMovieScene3DTransformTrack::GetInterrogationKey()); }
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-89834 in the post.