Feature Request: Wiggle Compositing Node

I was watching some After Effects video tutorials on videocopilot.net, and I think it would be incredibly useful if the Blender compositor had a node that worked the same way as AE’s wiggle expression.

For those who don’t know, the wiggle expression basically allows you to add camera shake to a shot as a post-pro effect. What it does is translate your layer a certain number of pixels that you set in a random direction. The direction changes however many times per second you specify.

So a node would need magnitude and rate controls at a minimum, and a separate set of rotation controls. (Rotation magnitude would be in degrees of course, rotational wiggle should still have its own rate control.) The final element needed would be a scaling value so that you don’t end up seeing beyond the edges of your composition.

Perhaps this might be better as a VSE effect, I don’t know. I think the VSE and compositing system should be merged together somehow anyway… At any rate, I’d appreciate your thoughts.

wouldnt moving a render image give you little black edges :frowning: how would you work around that

That’s why I mentioned a scaling control, you’d have to scale your image up a bit to compensate for that. Check out how it works in AE with this video.

Or simply render a bigger field and do the wiggle effect so the minimum and maximum wiggle room comprises of the space not shown in the actual render which normally would not be shown.

|<-wiggle room->|-Visible space before effect-|<----------->|

I think that’s basically what the title safe frame for the camera is supposed to help with.

Why not map your footage to a plane and just wiggle that?
You can wiggle in the sequence editor also. Add a transforms strip and animate that.
… other than that, I guess what your talking about is the ability to animate properties in the node editor. There is already at least one script to generate wiggle in an IPO and what you’re after is the ability to plug that IPO into a translate node.
Just having a “wiggle” node is single use. Having the ability to animate any property in the node editor would be much more useful.

It would be trivial to make a sequence plugin to do that. There’s probably already one if we look around hard enough.


I’m sorry, but I have to point out: for coders - yes. For artists - no. Not everyone has coding skills.

It would be awesome if there was such a plugin, though.

Okay, obviously my post wasn’t clear enough or I’m on your ignore list or something.

Sorry to yell…

No need to yell, I simply didn’t understand that you were saying that it’s already possible. I’m guessing it would be pretty hard to hand keyframe random motion, too much work just to add a simple camera shake. Do you know of any specific scripts that do this? (Note: Before you yell again, I am searching for myself. I’m just checking to see if you already know of any.)

Apologies for my mood. I’m having a crap day. I should probably avoid the forums when I’m having a crap day.

Sorry I can’t remember where the random script was.
Hand animating random IPOs is really not that hard. You can lay down a bunch of frames, then cut and paste and mix them up randomly, then loop it. Really, noone will be able to tell any different. Also, if you generate that random IPO once, you never have to do it again, just import it into the next job you need it.

Haha. That’s funny. I was just watching VideoCoPilot earlier today. Those are some
pretty dope tutorials.

I don’t know if you found this out yet, but in After Effects, there is also a feature that
takes care of the black edges. It’s called something like Repeat Edge Pixels. There
is also another solution I’ve seen in a different tutorial used during the wiggler and it
mirrored everything past the edge. When everything is shaking around you don’t
really notice anything looking mirrored. It’s more a continuation of th colors that
you already see on the screen. Eye tricks.

Here’s a quick node setup to get a similar effect. It’s not quick and easy to get good results, but with some tweaking, you can do it. You still need to scale the image by the number of pixels that it could move so you get any border pixels showing.


Thanks. I haven’t tried it yet, but at first glance that setup looks pretty good! You can even control what frames it works on by setting the fac IPO to 0 until it is needed, and you could easily use a similar setup for rotational wiggle. The only bad thing I see is that the only way to change the rate is to add/remove keyframes from the fac IPO and space them out evenly by hand.

I still think one node to do the job would be useful enough to add to the system, though.

hey lord , you know how i did it , recording the mouse movement , i just shake the mouse as much as i want and i have it ,then you can scale it up , down , or smooth it , if you scale n the x axis the movement will be faster .

I respectfully disagree. I think the concept of the node system is to have small, easy to understand, simple units of operation that are hooked together like Bob has shown to accomplish great things. It is the same argument in hardware for IC chips versus monolithics, and in software for huge programs versus objects. The direction is for small, simple, bug-free, configurable units of functionality that are hooked together to do great things.

This came up in the bug tracker as someone who wanted the Time node to be bloated to include the multiply node, and I also disagreed with that. We need more nodes that do more things, not bloating the ones we have, especially when it comes to just duplicating functionality that is already available. I mean, why bother? what developer wants to re-code what has already been written?

@TK: That works fine for shaking the actual camera, but I’m talking about adding it as a post-pro effect.

@PapaSmurf: Ok, but with the same reasoning - why have a subsurf modifier when you can just tweak vertices manually? I believe someone else here said something along the lines of “Take jahka’s new particle system. I’m sure you can get the exact same results with the old system, but not without 10x more work and effort.”

I agree with what you’re saying in principle about keeping nodes simple, I just think this particular functionality is common enough to merit its own node.

Because it would be impossible to edit a low level edit cage then.

You can always make a node group, add it in a library and append it later if you want.

You could say that, but it would be incorrect.


Cheers theeth - we can always count on you!

Yes there is a seq plugin to do this, it’s called jitter. The version in the plugin repository is old & broken though… I updated it and hacked it a bit in this thread recently if you’re interested - I could post a linux version for you but if you are on windows or mac you would have to either compile it yourself or convince someone to do it for you. The biggest drawback is that it either leaves a black border or wraps from the opposite side. There is no rotation either…