Perspective viewport camera rotation bug in UE 5.8

Summary

In UE 5.8, perspective viewport camera rotation (RMB free-look) is non-linear/jerky on
some systems: with the new gizmos enabled, the look speed appears to oscillate (~half
speed for ~0.25s, then ~double speed) instead of being smooth. Enabling Legacy Gizmos
works around it, but that disables the new gizmos. Smooth in 5.7 on the same hardware.

What Type of Bug are you experiencing?

Editor

Steps to Reproduce

  1. Clean UE 5.8 install, new C++/Blueprint project, default perspective viewport.
  2. Make sure the new (non-legacy) transform gizmos are active.
  3. Hold RMB and move the mouse to look around (“turn the head”) in the viewport.
  4. Notice the rotation speed is non-linear: small movements feel very fast, and slight
    acceleration produces disproportionate over-acceleration.
  5. Editor Preferences → enable Legacy Gizmos → the rotation becomes smooth again.

Expected Result

Linear, smooth camera rotation (as in 5.7), independent of the gizmo system.

Observed Result

Unstable/non-linear rotation speed when the new gizmos are active.

Affects Versions

5.8

Platform(s)

Windows

Additional Notes

Root cause appears to be that 5.8 routes the new ITF viewport camera navigation through
the “unbounded cursor” mouse delta:

  • UViewportDragInteraction() calls ClickDragBehavior->SetUsesUnboundedCursor(true)
    (ViewportDragInteraction.cpp).
  • UnboundedMouseDelta2D is computed in
    UModeManagerInteractiveToolsContext::CapturedMouseMove() (EdModeInteractiveToolsContext.cpp,
    the “Unbound cursor” block) as a raw difference of FViewport::GetUnboundedMousePos()
    between captured-move events, rather than the engine’s processed high-precision-capture
    delta. During captured free-look (cursor hidden + re-centered) this raw delta is
    mis-sampled, producing the non-linear feel.

Suggested fix: feed the processed capture delta into the camera interactions instead of
the raw unbounded delta (or do not enable unbounded cursor for the camera-navigation
drag interactions specifically).

A community editor-plugin workaround that keeps the new gizmos:

Related forum thread: