The most common of which is probably the wiggle() function, which uses a thing called Perlin noise to give its results.

Perlin noise is a “gradient noise” (that’s as technical as it’s going to get here) developed by Ken Perlin for the movie Tron, to generate more natural textures in computer graphics.

We can access Perlin noise in After Effects expressions using the noise() function. This example shows how the noise() function is used to give seemingly random movement without the need for keyframes, you can see how the animation ‘flows’ compared to random() values.

This movement could be created simply enough using the wiggle() function, but by using noise() instead, we have more control over the animation.

In this example, the circle’s Y position is linked to a noise() function on the line. As the circle’s animation repeats, so does the line’s.

Because Perlin noise is a gradient, its values don’t change unless the variables we pass into it change.

If you think of a line with a coloured gradient on it, and you pick a point along the line, you will see one colour. If you move further along, then you see a different colour. The gradient isn’t changing, but the result we see varies depending on where we look.

By passing a different number into the noise() function, we can move along the line and it will return different values.

What really makes Perlin noise so useful is that the gradient is multi-dimensional, so instead of just moving along a one dimensional line, you can move through three-dimensional space.

In this example the noise() function uses the X and Y coordinates of each circle to determine its Z coordinate.

It is in this three dimensional space where Perlin noise really shines. You could use it to simulate wind – by adjusting the velocity of an object based on the result of passing its x, y & z coordinates into the noise() function.

But that’s veering way too far into technical space for me, so I’ll just leave you to play.