Description

According to the licensee report,

 

UnrealMath.cpp (588)
const float SINGULARITY_THRESHOLD = 0.4999995f;

It seems that this can be avoided by changing the above value.

 

However, changing SINGULARITY_THRESHOLD value is risky,
Workarounds have been proposed to change the following functions and add small values.

Engine \ Source \ Editor \ DetailCustomizations \ Private \ ComponentTransformDetails.cpp (1310)
     
         void FComponentTransformDetails :: OnSetTransformAxis (float NewValue, ETextCommit :: Type CommitInfo, ETransformField :: Type TransformField, EAxisList :: Type Axis, bool bCommitted)
         {
      
  + #if WITH_EDITOR
  + if (NewValue == 180.f)
  + {
  + NewValue-= 0.00001f;
  +}
  + else if (NewValue == -180.f)
  + {
  + NewValue + = 0.00001f;
  +}
  + #endif
     
             FVector NewVector = GetAxisFilteredVector (Axis, FVector (NewValue), FVector :: ZeroVector);
             OnSetTransform (TransformField, Axis, NewVector, false, bCommitted);
         }

I want to know if there is a better way to deal with it.

Steps to Reproduce

1. Open 1.umap of the attached project.
2. Set Rotation.Z of ParentActor to 180.
3. When saving, the value of “Rotation of SM_Pole_16” changes.

Have Comments or More Details?

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

1
Login to Vote

Backlogged
ComponentGameplay - Components
Affects Versions4.23.1
CreatedNov 14, 2019
UpdatedNov 21, 2019