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.
0 |
Component | UE - Anim - Sequencer |
---|---|
Affects Versions | 4.21 |
Target Fix | 4.25 |
Created | Mar 2, 2020 |
---|---|
Resolved | Mar 2, 2020 |
Updated | Jul 30, 2020 |