Thanks for replying! I see now that I’m not the only one with this issue. I got an email from Epic today, saying that this issue already existed (UE-46172): Unreal Engine Issues and Bug Tracker (UE-46172)
Please upvote the issue! Hopefully, it won’t stay in their backlog for too long, since this is a pretty major issue that affects any game with slow motion. I’ve been playing Final Fantasy VII Remake lately, and I’m pretty sure that game would have been affected by this when you press X to select commands in slow motion.
The weird thing is that the issue was created in 2017, even though it only affects 4.25. I’m guessing this bug already existed in a previous version, but it only now became this easy to reproduce.
I was taking a look at the engine code, and I suspect the key to fixing this issue is in the PostProcessMotionBlur::GetMotionBlurParameters function. There is a ViewState->MotionBlurTimeScale there (just like in the linked issue, but in a different line of code), which serves as a velocity multiplier. I think I’m gonna debug that function later and see if there’s something wrong with that variable. It would be extra helpful if someone from Epic could shed some light on the situation, though.
For now, I’ve come up with a workaround using Blueprints. Every time I change the global dilation, I set my camera’s PostProcessSetting Motion Blur Amount to TimeDilation * BaseMotionBlurIntensity (0.5, in my case).
A nice way of doing this is by having a SetGlobalTimeDilation function in your GameMode, which sets the global time dilation and then calls a GlobalTimeDilationChanged event dispatcher. Then, create a MotionBlurStabilizer ActorComponent, with a Stabilize function bound to your GameMode’s GlobalTimeDilationChanged event. In the Stabilize function, you can do this:
(Ignore the “Parent: Stabilize” call. I used this because I have a parent TimeDilationStabilizer class)
Add this MotionBlurStabilizer to whichever actor contains your camera component, and don’t forget to set its camera variable to your Actor’s camera.
I hope this workaround helps some of you while we wait for this to be fixed.