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.
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.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-84407 in the post.
1 |
Component | UE - Gameplay - Components |
---|---|
Affects Versions | 4.23.1 |
Created | Nov 14, 2019 |
---|---|
Resolved | Aug 27, 2021 |
Updated | Aug 27, 2021 |