Expression for handheld camera movement

Hey Logik. I have a 5 minute comp where I am animating a camera in z. I would love to add a little handheld movement with an expression to avoid key framing this 5 minute animation. Something I can dial up and down.

Does anyone have some pointers? Many thanks!


Hey @jamesjohnston,

How’s Berlin?

I could write an expression if you gave me time but check out crok_cam_shaker. It probably has all the bells and whistles you’ll need.


Hey James! This might work. on camera interest x and y: eval(noise(frame)*{link to controlAxisSlider}, frame/{link to another controlAxisSlider}). For a bit more, do something similar at a smaller scale on camera position x and y.
I like to track some real handheld and cycle or revcycle it, but that won’t give you much control.
Haven’t tried using crok_camshaker in action, but might work.

Hi James. In addition to these great suggestions, I would also suggest something that isn’t driven by a mathematical expression, which tends to feel mathematically expressed. Try taking your phone and try to center it on something. Take those curves and manipulate. It will always look more real than any laborious expressions.



I adapted this from an FXPHD. Anyway I wrote it down in my Flame tips and tricks page and refer to it when I need a camera shake expression. Very handy :+1:

Use the noise expression and has controls so that you can dial it up and down.


Use a noise generating expression and a control axis to add random movement to an image in action. The x and y values of the control axis ( ctl ) adjust the magnitude and the z value controls the frequency.


The noise axis is called noyse to prevent confusion with the expression noise3

noise3(frame/ ctl.position.z) * 5


( noyse.position.x ) * (-1 * ctl.position.x)

( noyse.position.y ) * (-1 * ctl.position.y)



There is also an expression which can dial this up or down.

1 Like

I can’t recall the details, but when Ivar made the cam shake MX for me I managed to also use it on a 3D camera in action. Probably just linked expressions to the MX.

Another option – 2D Transform (2DT) has a built-in “camera shake” mode with variables to tune the effect.

When using 2DT’s camera shake function, use the axis tab to scale the input to remove black bars. If the camera’s motion is relatively smooth, another way to go is to set the node’s Texture menu to Mirror Repeat.

1 Like

I usually use expressions similar to above w noise3.
To adjust scale, I use the scale XYZ on a CTL axis. Multiply by (Scale.x/100) as example. The. It’s easy to adjust and ramp strength w keyframes.

Also I tend to use position X and Y on that same CTL axis to adjust frequency and amplitude on the base noise.

I never really liked the expressions or any camera shake and prefer to draw my own draw motion curve since I can get more amplitude and frequency changes much faster and then just go into the animation curve and adjust X and Y to modify to taste. Just right click in action select draw motion curve and you randomize it as much as you want start slow make it more extreme etc then paste that into any channel


+1 for this or just tracking an existing shots motion