Fractal Noise is the most verstaile plugin that comes with After Effects – at least that’s what I wrote fifteen years ago, in 2006. The Fractal Noise plugin was originally a 3rd party product that came in a pack called “Cult FX”. It was written by Jens Enqvist and Nils Schneider at Cycore, the same company that had created the “Final Effects” plugins a few years earlier.
Adobe bought the plugins in 2001, but way back then After Effects came in two different versions – the cheaper “Standard Edition”, and the more expensive “Production Bundle”. Initially, many plugins were only included with the “Production Bundle”, including the keying and matte plugins, all of the CC effects – and Fractal Noise. But in 2006, when Adobe released After Effects version 7, they decided to include all plugins with the Standard Edition, and not limit them to the Production Bundle. With the launch of After Effects CS 3 Adobe scrapped the two-tier system altogether, and ever since then After Effects has just been “After Effects”. But still, in 2006 it was pretty exciting news for After Effects users with the Standard Edition. Suddenly they had a whole new range of toys to play with – including Fractal Noise.
On a personal note, fractals had always fascinated me, and I was intrigued by the way that the fractal noise plugin could be used to create such a wide range of images. How could the same algorithm be used to generate realistic landscapes, clouds, water and fire effects? To celebrate the release of After Effects version 7, I decided to deep-dive into the fractal noise effect, and published an article on the Creative Cow website, where I’d been posting tutorials since 2002.
However, fifteen years later, it looks like all of my old articles and tutorials have been removed as part of an overhaul and re-design of the Creative Cow site. While some of my older tutorials have undoubtedly dated, the fractal noise plugin hasn’t changed. So, fifteen years after the fractal noise plugin became available to all After Effects users, let’s re-visit this incredibly useful tool.
What is it good for?
Fractal noise, as an algorithm or technique, is not unique to After Effects. The concept was developed for Hollywood in the early 80s by a remarkable guy called Ken Perlin. In many fields of computer graphics fractal noise is called “Perlin Noise”, and a quick Google search will reveal lots of information on the principle, and how it has been implemented in everything from blockbuster films to computer games. A famous early use of fractal noise was in the terraforming scenes in “Star Trek II”, and Ken Perlin eventually won an Oscar recognising his efforts in 1997. There are a number of websites dedicated to the history of computer graphics, and the landscapes generated with fractal noise for Star Trek II are among the earliest uses of CGI in Hollywood films. Many years later, I’d spend hours generating fractal landscapes using “Vista Pro” on my Amiga.
What makes fractal noise so useful is that it’s a tool for generating images, which provides the user with two key benefits over using existing images or footage. Firstly, the user has a great deal of control over the image being generated, including resolution, tileability, loopability, animation speed and so on. Secondly, the settings to generate an image are much smaller than the image file itself. Images and video files can easily be megabytes, if not hundreds of megabytes (or gigabytes!) in size – but by using fractal noise, the same result can be generated with only a few key parameters. For this reason, many effects in games are created using fractal noise – it’s faster to generate the image than it is to load it from a file, and the code takes up a fraction of the storage space and memory than a pre-rendered asset would. For After Effects users, the fractal noise plugin makes it possible to create and share After Effects projects that generate complex images without any external footage files.
A few months after publishing the original article on the Creative Cow, I published a follow-up tutorial demonstrating how to make old-paper textures using the fractal noise plugin. This tutorial had stemmed from a real-world project. I needed over 20 individual images of old paper, that all looked similar but distinct. While I could have searched image libraries and purchased stock footage, I couldn’t find 20 images that were exactly what I needed. By using fractal noise, I could create the paper textures myself, and get exactly the right resolution, colour and look, and generate as many unique pages as I needed.
Fractal noise is especially good at generating natural textures such as marble, fire, clouds, woodgrain, water, fabric and more. However it can also be used to generate displacement maps, bump maps and gradient wipes for advanced effects, and the range of textures, patterns and effects you can create is practically endless.
While “Fractal Noise” is the main plugin that we’re looking at here, many other After Effects plugins also use the same algorithm. Once you understand the basic principles of fractal noise, you’ll recognise the parameters in a whole range of other plugins including “Advanced Lightning”, “Turbulent Displace” and “Roughen Edges”. Even the “wiggle” function is fractal noise, just applying the algorithm to a keyframable property instead of rendering it as an image.
Many of the Trapcode plugins utilise fractal noise, and in 2007 Peder Norby – Trapcode’s founder – presented Ken Perlin with an award for excellence in recognition of his contribution to computer graphics. Anyone using Trapcode products such as Form, Particular, Mir and Tao will recognise the same underlying controls and parameters, even if they have slightly different names.
So even though this article is primarily focused on the “Fractal Noise” plugin, it also serves as a good basis for understanding the way that other plugins use the same algorithm.
An overview of what Fractal Noise is
After Effects includes two distantly related cousins to “Fractal Noise” – the “Fractal” and the “Noise” plug-ins. The “Fractal Noise” plugin is definitely different to the “Fractal” and the “Noise” plugins, but by looking at what they do we can get a better understanding of how fractal noise works.
Fractal
“Fractal” is a word used to describe certain types of shapes, the same way you might use words like “spiky” or “smooth”. The term was first used by the famous mathematician Benoit Mandelbrot, who continued to tweak and expand the definition over time. The exact definition of “fractal” is somewhat flexible, but generally a fractal shape looks similar no matter how much you zoom in. More correctly, a fractal has the same shape repeating itself at different levels of scale. Perhaps the simplest demonstration of a fractal is the Sierpinski triangle, which is a shape made up of an infinite number of triangles. No matter how far you zoom in, there’s always more triangles.
The famous Mandelbrot Set can also be zoomed into forever, revealing the same shapes and patterns without ever repeating. This fractal characteristic is the same for many natural shapes such as coastlines, water and clouds. The “Fractal” plug-in that comes with After Effects renders two famous families of fractals including the original “Mandelbrot Set”. Because these shapes are generated mathematically, in theory you can keep zooming in forever- but in practise you’re limited by the precision of the software and in After Effects you eventually run out of decimal points.
Noise
Noise is a lot easier to define than “fractal”. The “Noise” plug-in adds noise to an image, and noise is really just a bunch of random numbers. The Noise plug-in generates a random value for every pixel in the image. If your image layer is 1920 pixels wide, then every one of those 1920 pixels has a different random number calculated for it. For a standard HD frame – 1920 x 1080 – a total of 2,073,600 random numbers are generated every frame, one for each pixel. The plugin allows us control over how much randomness is added to each pixel, and the more noise we add, the more the image resembles a screen full of random pixels. If we apply the noise effect to a 50% grey solid and crank the settings to full, we end up with an image that’s pure noise – pure randomness.
Putting them together.
So knowing that a “fractal” is a shape that repeats the same pattern at different scales, and “noise” is a bunch of random pixels, we can guess that “Fractal Noise” is a bunch of random pixels with a pattern that repeats itself at different scales. And that’s pretty much what Fractal Noise is.
Although the “Noise” plug-in and the “Fractal Noise” plugin are both essentially random number generators, the fractal noise plugin does a few things differently to the noise plugin.
The noise plugin calculates a random value for each individual pixel in an image. But fractal noise works differently – it also calculates random noise values, but it spaces them out on an invisible grid. The size of the grid is something the user can control, but as an example there might only be one random number generated for every 64 pixels. All of the values between those two random numbers are interpolated.
Secondly, Fractal Noise generates several different “layers” of noise with different amounts of detail, and combines them into a final result. The more layers we use, the more detailed the end result is. It’s this layering of different levels of detail which gives the “fractal” qualities to “Fractal Noise”. The term “layer” works intuitively when we’re referring to a rendered image, as After Effects works with layers of images, however in other applications the term “octaves” is sometimes used instead. Octaves, a musical term, is a useful analogy for the process that makes fractal noise “fractal”.
By spacing out random numbers and interpolating the values between them, the numbers are longer random noise, but a random wave. Just like a sound wave, we can take this random wave and scale it up and down – the musical equivalent of pitching a sound higher or lower. By combining the scaled version of the wave with the original wave, we introduce more detail – this would be the musical equivalent of playing two notes at the same time. We can continue to do this with more and more scaled versions of the wave – adding additional detail each time. Because we’re adding the same random wave, but at different levels of scale, the end result is a fractal. Our noise values have become fractal noise.
One final difference worth noting is that the noise plug-in generates completely new random values for every frame of your composition – in other words it automatically animates. The Fractal Noise plug-in does not animate unless you specify keyframes for the “Evolution” parameter. So by default, Fractal Noise produces a static image, and if you want to animate it then you can control the speed of animation – and even loop it seamlessly.
The Fractal Noise Plugin – picking it apart
In After Effects, the Fractal Noise plug-in is usually applied to a solid. The default settings present you with a cloudy looking image, which uses 6 different “layers” of noise combined to get the end result.
Although this cloudy image looks quite complicated, by changing the default settings we can unravel the mysteries of the plug-in and see how the settings work together to produce the image we see on screen.
Firstly, the setting called “Complexity” refers to how many layers of noise are combined to produce the final output. By reducing this from six to one, we are looking at the original noise values, without any additional layers of detail. The random numbers that are being generated are spread out on an invisible grid, and the values between each random number are being interpolated. The “noise type” determines how the interpolation is done, which is basically the same as how After Effects can interpolate between keyframes in the timeline. The “block” setting is the equivalent of “hold keyframes” and effectively turns off interpolation. Changing the “noise type” to “block” greatly simplifies the image, and reveals the original grid of random numbers. If we look at the screen and count carefully, we’ll discover that the plugin is generating a new random value every 64 pixels, along both the X and Y axis.
The range of the random values can be controlled with the “Contrast” and “Brightness” settings. Higher contrast will increase the range between black and white, and the “Overflow” options determine what happens when a pixel has a value that is outside black or white. The “invert” control reverses the image.
We can create a more complex image by changing the way the plug-in displays the pixels between each random value. The “Block” setting keeps every pixel the same value as the last randomly generated value, until it reaches the next value, just like a “Hold” keyframe. So, as illustrated in the example above, the 64-pixel blocks on the screen are made up of one random value that is repeated 63 times until we get to the next random value.
However, in the same way that After Effects has different types of interpolation for keyframes, the real magic of Fractal Noise happens when we interpolate values between our grid of random numbers. The different interpolation algorithms are selected from the “Noise Type” dropdown menu, with four options: Block, Linear, Soft Linear and Spline. If we change our Noise Type from “Block” to “Linear”, we instantly get a very different looking image in our composition window – this is still with our complexity set to 1.
This interpolation happens in both the X and Y directions, but it’s easier to visualise what’s happening if we plot the random numbers on a graph.
With the “Linear” setting, instead of repeating each pixel 63 times the values are being interpolated between each randomly generated point. The random numbers used to generate the image haven’t changed, nor has their position, only the way the pixels between each random number are calculated. If the first random number was 1, and the next random number was 64, then the pixels in between those random numbers would smoothly increase in value, going 1,2,3,4,5, etc up to 64.
We can see why this “Noise Type” is called “Linear” – when we plot the values of the pixels on a graph we get a bunch of lines. The Fractal Noise plug-in also has two other settings – “soft linear” and “spline” – which interpolate between the random values in a smoother manner. The “spline” setting takes the same random points but smooths out the transition between them, resulting in a natural looking wave. But even though the outputs look different, in all cases the same initial random numbers are used, and they’re still “spaced out” every 64 pixels on the same invisible grid.
By using the “Block” type of noise, we’ve seen quite clearly how Fractal Noise is built up from a base layer of random values, and that we can add more layers on top of the base which are scaled, positioned and rotated relative to the base layer. To get the impressive real-world results that make the Fractal Noise plug-in so stunning, the other interpolation methods are more useful. Setting the “Noise Type” to “Linear” returns us to a familiar cloudy-looking image. The “Soft Linear” and “Spline” options give us more options and a softer look, at the cost of an increase in rendering times. Jens Enqvist, who co-wrote the plugin with Nils Schneider at Cycore, suggests that the “soft linear” setting is up to 16x faster than the true “spline” setting.
At the moment we’re only using one layer of noise (the “Complexity” is 1), but the real magic of Fractal Noise comes when we begin to add more.
To keep things clear, and to help us see exactly what’s going on, we’ll change the “Noise Type” back to “Block”. As we add more layers, the original 64-pixel blocks will remain and the additional layers will build up more detail. After Effects refers to additional layers as “Subs”.
When we increase the complexity to 2 the screen fills up with a new range of block shapes- you can instantly see the influence of our second layer. It might look a bit chaotic, but we can shuffle things around to make what’s happening a bit clearer.
Apart from the “Complexity” setting, which determines how many layers you create, the “Sub Settings” controls are the heart of Fractal Noise- they control how detailed the new layers are, and how they combine with each other.
The “Sub Offset” values re-position the “Sub” layer over our base, and if you drag the values around it’s easy to see the second layer sliding over the original layer, and to see how the different layers of noise combine to give a final pattern with more detail.
We can clarify what’s happening by tweaking some of the values. If we change the “sub scaling” value to 50%, then our second layer is exactly half the size of the original layer. The “sub scaling” control is similar to a percentage scale, with the percentage relative to the “size” of the noise values of the base layer. As our original blocks were 64 pixels wide, scaling our new layer to 50 percent gives us blocks that are 32 pixels wide. By setting the “Sub Offset” to 32,32, we are aligning the edges of the blocks on the Sub layer with those on our base layer to demonstrate that we are still just dealing with two different grids of random numbers.
By changing the “Sub Rotation”, we can rotate the second layer of noise over the first. Once again, this makes it easy to see how we have 2 layers of noise being combined into 1 final image.
The “Sub Influence” control determines how much our Sub layer effects the base layer- it’s a bit like changing the opacity of a layer in After Effects. If we set it to 0, we only see our original array of 64-pixel blocks. As we increase the setting, we see more and more of the Sub layer.
It’s easy to think of the “Complexity” control as being similar to creating multiple layers in an After Effects composition, and that the “Sub Influence” control is like altering their opacity. However it’s worth knowing that the Subs are combined mathematically in a different way to layer opacities, and so you can have a “Sub Influence” much higher than 100%. Even when the Sub Influence is greater than 100%, the underlying base layer will still be visible.
We can add more detail to the image by adding more layers of noise. By increasing the “Complexity” to three, we get a 3rd layer of noise with the “Sub Scaling”, “Sub Influence” and “Sub Rotation” settings relative to the second layer. This time our new pixel blocks are 50% of 32, which makes them 16 pixels wide. Setting the “Sub Rotation” back to 0 makes this clear:
We now have three layers of noise, which are all aligned with each other. Each layer has blocks which are half the size of the previous layer, because we set Sub Scaling to 50%.
The essential point to understand about Fractal Noise is that scaling the Subs adds detail to our final image. In our example above with the “Block” setting, just one Sub scaled to 50% has four times as many blocks as the base layer- and the second Sub has four times as many blocks again. When you are using a different Noise Type such as “Linear” or “Spline” then the additional detail each Sub layer provides is much more pronounced.
When you use many Subs- by using a high “Complexity” value- you are combining a large range of different details into the final image, all of which are based on the same basic foundation and follow the same basic pattern. This is what makes the noise “fractal”.
With the “Sub Scaling” set to 50%, and the “Sub Offset” 32,32 we can clearly see what’s going on, because everything is neatly aligned and proportional. But by moving things around a little we change the way the layers interact and we can create some great patterns. By changing the “Sub Influence” to 60%, the “Sub Scaling” to 70%, and moving the “Sub Offset” around, we get something that looks a bit like 60s wallpaper.
As each layer of detail is scaled relative to the previous layer (according to the “Sub Scaling” control), there will be a point where more levels of complexity no longer add visible detail to the image.
When the overall scale settings (the “Transform” controls, see below) are at their default values of 100%, the base layer numbers are 64 pixels apart. By setting the “Sub Scaling” to 50%, each new layer of detail will be exactly half the size of the previous one – this makes it easy to calculate the size. At 100% our first layer has values spaced 64 pixels apart, so if we set the Sub Scaling at 50%, our 2nd layer will be spaced 32 pixels apart, our 3rd 16, the 4th 8, our 5th 4, our 6th 2, and our 7th layer will have noise values calculated for each pixel. If you increase the “Complexity” from 7 to 8, then you won’t see any difference because the additional layers of noise is smaller than one pixel. So there will be a limit as to how many layers of noise can add detail to the final result, and that limit depends on what value your “Sub Scaling” is set to, and whether you’ve scaled the entire effect up with the “Transform” settings. There’s no reason you have to have the Sub Scaling set to 50%, it’s just a useful example.
Because Fractal Noise is generated by a bunch of maths, we can scale it up and move it around without losing any quality- the maths is just recalculated accordingly. This is different to scaling up a piece of video footage, which will lose detail and develop artefacts. When you scale Fractal Noise, you’re simply increasing the distance between the base grid of random numbers- the in-between pixels are still being interpolated using maths, giving a smooth and precise result.
The “Transform” controls reveal these settings that adjust the overall Fractal Noise effect. Note that these are controls within the fractal noise effect, and not the transform controls of the layer itself. The Rotation, Scale and Offset Turbulence controls can all be changed and animated without introducing scaling artefacts, or degrading the quality of the image.
The Fractal Noise can be scaled differently along the X and Y-axis, which is extremely useful. For example, with the Y axis (height) scaled to 20%, but the X axis (length) stretched out to 3000%, we get something similar to brushed metal.
The “Offset Turbulence” control is really like a position setting. Because Fractal Noise is generated by maths, in theory the layer extends infinitely in both directions. The “Offset Turbulence” setting determines what we can see in the layer window, and animating the value will move the image around.
When animating the “Offset Turbulence” setting the “Perspective Offset” checkbox can make the individual layers of the Fractal Noise more distinct by moving them separately (a bit like a parallax or multiplane animation) – the default is to have this option off. The “Perspective Offset” control only becomes obvious when you animate the offset value, so it’s not easily demonstrated with still images. It can be especially useful to add a sense of depth to animating textures, such as ocean waves.
While it’s easy to think of the “Offset Turbulence” setting as something that is only useful for animation, it often pays to “move around” your fractal noise to find the most suitable area for the effect you’re trying to achieve. Even with the same Sub settings, just scrubbing around the “Offset Turbulence” values will reveal a wide range of variations and character within the image. If you’re trying to create a natural pattern such as marble or woodgrain, it may take some “searching” before you find a particular patch of fractal noise that you like.
The underlying Fractal Noise pattern can be animated by the “Evolution” control, and if you click “Cycle Evolution” then the pattern can be looped seamlessly. When you enable the “Cycle Evolution” checkbox, you select how many cycles the Fractal Noise will go through before it repeats. If you choose 5, then setting the evolution to “5” (revolutions, not just degrees!) will give you the same result as 0. So by animating the evolution property from 0 to 5 revolutions you will end up with a seamlessly looping piece of video.
If you want to create many versions of the same image, but need them to look different, you can alter the “Random Seed”. This is the starting point that the Fractal Noise effect uses to calculate all of the random numbers, so altering it will create a completely different sequence, and therefore a different image. If you’re trying to get a particular look and you’re close but not quite there, a different Random Seed can give you a fresh approach. If you need to create many variations of the same texture, then changing the random seed is the way to do it. At the start of this article, I mentioned how I needed over 20 different images of old paper, and to create the 20 different versions I just changed the random seed for each one.
While these settings give us an enormous amount of possibility, an even wider range of effects can be achieved by choosing between different mathematical methods of generating and arranging the random numbers which make up the noise.
At the top of the “Fractal Noise” effects palette you can choose a “Fractal Type”. The default setting is “basic”, which gives us a cloudy looking image.
Scrolling through the list reveals options such as “Turbulent Smooth”, “Dynamic Twist”, “Threads” and “Smeary”. These names refer to different underlying algorithms that produce the random numbers, and how they’re arranged on the invisible grid. They give different results, both in their initial appearance and how they animate using the “Evolution” control.
There are so many possibilities with these options that it takes a lot of playing around to get to know them. For example, I think of “Dynamic Twist” as looking like smoke, “Rocky” as looking like camouflage, and “Swirly” as looking like agate (or a big lump of Blackpool Rock). But if you start altering the Sub Settings you can get very different looks.
After using Fractal Noise for many years, I still can’t claim that I can predict what every different “Fractal Type” will look like with different settings. Sometimes I have a good hunch as to where to begin, but mostly it’s a matter of trial and error.
So I’ll have to leave you with the knowledge that by combining the 17 different “Fractal Types” with the 4 different “Noise Types”, and adjusting the Complexity (number of layers of detail) and the relative size and position of the Subs, we can use the Fractal Noise effect to generate an infinite range of textures and patterns.
The next step- combining plug-ins
The images in this article are mostly greyscale, because the Fractal Noise plug-in renders a greyscale image. Looking at them may not exactly inspire you, because grey isn’t that interesting. And I’ve mostly been using the “Block” setting to help demonstrate how Fractal Noise works, but there’s a limit to how excited you can get about a bunch of squares.
When the original Cult FX package was released in 1999, the promo image that made me really excited was a shock wave – it looked just like something out of Star Wars. According to the website, it was made using fractal noise. A follow-up tutorial demonstrated how the shock wave had been created by using fractal noise with a radial gradient – and I’ve used the same basic approach countless times since then.
In real-world use, the Fractal Noise plug-in would only be step 1 in creating an end result, whether it’s being used to create an image (such as brushed metal) or a utility matte for use in conjunction with other plugins, such as displacement.
To create textures, Colorama makes a great partner to Fractal Noise, but you have to stop thinking of the greyscale fractal noise image in terms of a greyscale image. The shades of grey in fractal noise do not have to reflect how light or dark the end result will be, they simply control what colour will be applied by Colorama. If you want to create a woodgrain effect, for example, you would use a range of very similar brown tones, with some very narrow bands of lighter or darker browns:
Light areas of fractal noise do not need to be coloured light, and dark areas do not need to be coloured dark. When using Colorama, think of the greyscales in the fractal noise as instructions for what colour will be applied, rather than as a greyscale “picture” which will have colour added.
Beyond adding colour, a huge range of interesting effects can be achieved by combining Fractal Noise with other plug-ins. The “Find Edges” plugin can produce a wide range of interesting and unexpected results. Vector Blur can create some wonderful painterly effects, even Emboss can be fun to play around with. CC Glass allows you to use Fractal Noise as a bump map, and the Caustics plugin will happily use Fractal Noise as a height map for waves.
Combining multiple layers in After Effects with simple blending modes adds another layer of power again. If you ever get bored, just set up some Fractal Noise to evolve slowly, add some colour and apply the CC Kaleida effect- it’s better than some of the shows on TV.
Here are some examples to get you started – all of these images were created in After Effects using the Fractal Noise plug-in.
Hopefully this will inspire you to play around with Fractal Noise, and to come up with your own effects. And I’m waiting for someone to prove me wrong when I say that Fractal Noise is the most versatile plug-in in After Effects.