From UDN:
When using the Combined Translate and Rotate Mode we run into an issue where the rotation arrow moves twice as fast as the coordinate frame. The object itself rotates correctly, but if we release the mouse button and then click on the arrow again the rotation quickly snaps to the double rotated value. This only occurs when using local space instead of global space. The fix is pretty easy and goes into: Engine/Source/Editor/UnrealEd/Private/UnrealWidgetRender.cpp in the functionFWidget::Render_TranslateRotateZ() // The offending lines: FVector XAxis = CustomCoordSystem.TransformPosition( FVector(1,0,0).RotateAngleAxis( (EditorModeTools ? EditorModeTools->TranslateRotateXAxisAngle : 0 ), FVector(0,0,1)) ); FVector YAxis = CustomCoordSystem.TransformPosition( FVector(0,1,0).RotateAngleAxis( (EditorModeTools ? EditorModeTools->TranslateRotateXAxisAngle : 0 ), FVector(0,0,1)) ); // Replace them with these lines: FVector XAxis, YAxis; if(Space.bIsLocalSpace) { // Coordinate frame applied alone XAxis = CustomCoordSystem.TransformPosition(FVector(1,0,0)); YAxis = CustomCoordSystem.TransformPosition(FVector(0,1,0)); } else { // Original application of coordinate frame and the local rotation XAxis = CustomCoordSystem.TransformPosition(FVector(1,0,0).RotateAngleAxis((EditorModeTools ? EditorModeTools->TranslateRotateXAxisAngle :0),FVector(0,0,1))); YAxis = CustomCoordSystem.TransformPosition(FVector(0,1,0).RotateAngleAxis((EditorModeTools ? EditorModeTools->TranslateRotateXAxisAngle :0),FVector(0,0,1))); } What we are doing is locking the rotation arrow to the X-axis when we are in local space. The frame rotates to match the local transform and the big arrow rotates in lock step with it. In global space the frame is not rotated so we need to apply the local frame and the current rotation.
1. Tick the Editor Setting "Enable Combined Translate/Rotate Widget"
2. Select any already-rotated actor in the level
3. Activate the translate/rotate mode (next to translate, before rotate in the viewport toolbar)
4. Change the gizmo coordinate system to local
5. Drag the blue arrow on the yellow rotation circle to rotate the object
BEFORE THE FIX: The arrow will spin around at twice the speed it should - it's essentially double rotated
AFTER FIX: The arrow should "stick" to the cursor, in the same way it does in world space
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-203295 in the post.
1 |
Component | UE - Editor - Workflow Systems |
---|---|
Affects Versions | 5.3 |
Target Fix | 5.5 |
Fix Commit | 33960903 |
---|
Created | Dec 22, 2023 |
---|---|
Resolved | May 29, 2024 |
Updated | Oct 1, 2024 |