Description

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)
     {
     }
Steps to Reproduce
  1. open the attached project [Link Removed] with UE4.21
  2. repeat creating a package for windows64bit with package button on the menu bar
  3. see package log

 
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());
	}



 

Have Comments or More Details?

There's no existing public thread on this issue, so head over to AnswerHub just mention UE-89834 in the post.

0
Login to Vote

Fixed
ComponentAnim - Sequencer
Affects Versions4.21
Target Fix4.25
Fix Commit11645171
Main Commit11823621
Release Commit11645171
CreatedMar 2, 2020
ResolvedMar 2, 2020
UpdatedJul 30, 2020