Per-object motion blur gives some very clean results, especially when subtle. Unreal's implementation is very solid with a few settings dialled in, namely the target frame rate of the motion blur on platforms with unlocked framerates and blur on camera rotation.
Frame Rate Matching
The former is a quick fix and can be set in one of many places. I'll leave the exact place up to the reader, but in general, earlier is preferrable so it's simpler to modify later.
My general go-to is to set this in Device Profiles with a default of zero. Platforms can override this setting on a per-platform basis using the same system. This system also provides a clean way to group settings for scalability.
Removing Rotational Blur
Removing the blur on camera rotation is slightly more involved, and requires a source build of Unreal versions prior to 5.3, or any build of Unreal at or beyond 5.3. This is because the variable that controls this setting was made accessible in 5.3, so we can easily get to it in a ViewportClient.
To begin, create a subclass of
UGameViewportClient. If you wish to use CommonUI, the parent should be
UCommonGameViewportClient instead. Since we only need to set a variable on the SceneViews, we only need to override
The definition of this method is also pretty short. I will leave it as an exercise for the reader to be smarter about setting the MotionBlur state on all views. A check for Value being a nullptr in the example below may also be worthwhile.
Setting the Viewport Client
The last step is to set the viewport client. You need to do this for CommonUI as well, if you use it. The setting is under General Settings in Project Settings, and it's easiest to find it by searching for 'viewport' in the search. In the example below, I've shown the setting for
CommonGameViewportClient, but this should read your custom class name.