motion blur

hairness's icon

hello,

i just want to move some huge picture around
if it moves to a different spot i would like to have some typically Aftereffekts motion blur on it.

has anyone ever written a script for that ... or idea how i can realize that ?!

thanks

Brecht's icon

this is a way to do it http://www.autofasurer.net/wp/?p=11
I don't know whether it's the best or easiest way, but it works ;)

On 05 May 2008, at 13:39, hans wrote:

>
> hello,
>
> i just want to move some huge picture around
> if it moves to a different spot i would like to have some typically
> Aftereffekts motion blur on it.
>
> has anyone ever written a script for that ... or idea how i can
> realize that ?!
>
> thanks

Eli's icon

jit.wake and jit.fastblur do a blur effect.

bart at max (previously BITter)'s icon

Because of the not so blurry blur externals like [jit.fastblur] i use [jit.gl.imageunit] - only MacOS X tiger and later :( - with effect 39 Gaussian Blur when i need blur.

When you put these togheter with [jit.slide] i think you can get a nice movie motion blur. I will make a test later.

[jit.qt.movie]
> [jit.slide]
> [jit.gl.imageunit]
> [jit.gl.videoplane]

Wesley Smith's icon

The best blur I've found is cascaded gaussian filters

[jit.gl.slab @file cf.gaussian.2p.jxs]
|
[jit.gl.slab @file cf.gaussian.2p.jxs]
|
[jit.gl.slab @file cf.gaussian.2p.jxs]
|
[jit.gl.slab @file cf.gaussian.2p.jxs]

With this setup you alternate X, Y in the width of the blur. Set the
first 2 to a smaller radius and the last 2 to a larger radius.
wes

On Mon, May 5, 2008 at 8:25 AM, bart wrote:
>
> Because of the not so blurry blur externals like [jit.fastblur] i use [jit.gl.imageunit] - only MacOS X tiger and later :( - with effect 39 Gaussian Blur when i need blur.
>
>
> When you put these togheter with [jit.slide] i think you can get a nice movie motion blur. I will make a test later.
>
>
> [jit.qt.movie]
> > [jit.slide]
> > [jit.gl.imageunit]
> > [jit.gl.videoplane]
>
>
>

DonK's icon

I don't know if OpenGL could do anything like motion vector based motion blurs, but that would be awesome.

Here's what I mean.

The only programs I know that create motion vectors are Mental Ray and Nuke. Unfortunately, it might be too slow for anything realtime.

Wesley Smith's icon

It's certainly possible in real-time. The big trick though it getting
that vector data. When you draw geometry, this information isn't
available. Somehow you have to make it available. Once you have it,
doing the blur should not be terribly difficult.

wes

On Mon, May 5, 2008 at 11:06 PM, Don K wrote:
>
> I don't know if OpenGL could do anything like motion vector based motion blurs, but that would be awesome.
>
> Here's what I mean.
>
> http://www.alamaison.fr/3d/lm_2DMV/lm_2DMV_ref.htm
>
> The only programs I know that create motion vectors are Mental Ray and Nuke. Unfortunately, it might be too slow for anything realtime.
> --
> -DonK
>
>
>

BobTheDog's icon
DonK's icon

I don't know a whole lot about OpenGL shading, but is this possible to implement in a shader? It seems like it would be, afterall, it would only really need red and green to hold the XY data since Z isn't used in screenspace stuff.

I knew I should have paid attention in my math and programming classes...

Quote: wesley.hoke@gmail.com wrote on Mon, 05 May 2008 23:17
----------------------------------------------------
> It's certainly possible in real-time. The big trick though it getting
> that vector data. When you draw geometry, this information isn't
> available. Somehow you have to make it available. Once you have it,
> doing the blur should not be terribly difficult.
>

Thijs Koerselman's icon

On Tue, May 6, 2008 at 11:14 PM, Don K wrote:

>
> I don't know a whole lot about OpenGL shading, but is this possible to
> implement in a shader? It seems like it would be, afterall, it would only
> really need red and green to hold the XY data since Z isn't used in
> screenspace stuff.
>
>
I've been reading up on motion blur lately, because I wanted to implement a
high quality object based motion blur, but I haven't found the time to start
on it. Afaik there are 2 different approaches using shaders.

One using plain vertex and fragment programs to do geometry and shading
distortion:
ati.amd.com/developer/*Shader*X2_*Motion**Blur*
UsingGeometryAndShadingDistortion.pdf

The other one involving geometry shaders.

I plan to look at the second, because from what I understand the first
approach wouldn't work for rotating objects. This is a problem for some
other motion blur techniques as well, since there would be multiple motion
directions within the same object.

Recently I tried to use the accumulation buffer for doing motion blur. Its
not supported by Jitter atm but you could work around it with RTT. It's
really easy to implement but also really expensive to compute since you
would have to render each frame about 16x to get a somewhat decent result.

The main problem with using Gaussian blur as a post processing effect, is
that the moving object doesn't become transparent, and thus having its
complete motion trail obscure whatever is behind it. Correct me if I'm
wrong.

Cheers,
Thijs

hairness's icon

Thnak you for so many replies!

Seems that this is quite an interesting topic..

Im kinda fresh with Max so i dont really get along with some of the stuff youre talking bout ..

anyhow ... what i need is just a motion blur on the X-Axis

ive some picture and wanna move it just on the x-Axis
when it moves to another spot of the image there is suppose to be some motion blur

i dont know, perhaps that is somehow easier to realize

any ideas, or suggestions how to get startet

thanks

Thijs Koerselman's icon

On Wed, May 7, 2008 at 1:37 PM, hans wrote:

>
>
>
> any ideas, or suggestions how to get startet
>
>
In that case, you have to choose if you want to go the GPU way. If you're
dealing with large images and you don't need to do matrix processing
afterwards its probably the best idea (reading back from GPU to jitter
matrix is expensive) . Go for the setup Wes described. Brecht posted a nice
example of this technique.

If you want to stay in the CPU side just cascade some jit.fastblur with
@mode 0 (making it horizontal). I think instead of jit.fastblur you can use
jit.convolve with the blur kernels described in the link Andrew posted.
Using a kernel of 1 row will result in blurring in the x direction only.

Good luck.

Thijs

Mattijs's icon

Quote: hairness wrote on Wed, 07 May 2008 14:37
----------------------------------------------------
>
> any ideas, or suggestions how to get startet
>

I'd say the easiest way is to render one jit.gl.videoplane (as shown in the help file) and send the "erase_color 1. 1. 1. 0.2" message to the render object.

Mattijs

seejayjames's icon

just posted something similar, when moving the image (you're changing srcdim right? or you can use jit.rota offset X Y too), then for the blur, try jit.xfade with feedback:

hth, CJ