Motion blur on static objects

I’m trying to apply a motion blur effect on non-moving objects. Let me explain this contradiction :slight_smile:

There are some objects in my scene that move according to their physics. The player can freeze time, temporarily stopping all moving objects. Now I was thinking about an effect that would indicate to the player which objects are frozen but would actually move (and in which direction).

One idea I had is an exaggerated motion blur effect applied to these objects. I’ve been trying to come up with a way to do this, but nothing worked so far. This is about what I’m aiming for (mind that the green cube would not actually be moving in my case, just have a saved velocity vector for when the player unfreezes the game):

The regular motion blur effect affects the entire scene. I can’t seem to mask it to only specific objects in the scene. But even if I could, my frozen objects are obviously not moving, so there would be no motion to blur there.

I could probably create a material that would blur according to some parameters, but as far as I understand this wouldn’t allow a good looking soft edge and would only blur the texture on the object.

I was trying to implement a custom post processing material, but I’m not sure if this is even possible with the available options. Somehow I need to know where to blur and in which direction. I could mask the frozen objects using the custom depth buffer, but that still wouldn’t give me a blur direction.

Any suggestions? Thanks!


did you figured out how to do this?

I’m on the search for exactly the same effect but did not figur out how to do it, but I found your thread :slight_smile:

Thx so far.

Unfortunately I have no solution.

I think the motion blur effext is a post one. So it does actually not exist in the game. Only at the end of the render on your screen.
So its impossible to freeze it. I dont if its possible todo it, but definitly not in post.

I have an idea… but it’s pretty insane.

What you ‘could’ do, is when the player enters slow-motion you could create a screen-space mask of all the objects that want to be blurry, soften the mask a little bit, then use it to mask out some kind of Gaussian blur effect in a post-process material. This might look a little funky and it also might have screen-space artifacts at the edge of the screen, but you could add a border to the mask to stop it blurring pixels at the edges.

In order to create the mask, you could force the objects to render in Custom Depth channel at that time, and use the CD as the mask.

Both a scene blur and a mask blur in one material might get a little costly too… but honestly can’t think of another way to do it.

EDIT: Just released this is basically what you posted… lol. In terms of translating the blur direction (once you work out how to do a directional blur) - you could make the velocity vector unit-length - convert the start and end points into screen space then calculate the direction vector between them on-screen. That should give you the blur direction.