Fractal Noise
By Neil Blevins
Created On: Nov 20th 2009
Updated On: Dec 7th 2024
Software: 3dsmax, Blender, Darktree, Filterforge

In this tutorial I hope to teach you a little bit more about Fractal Noise. Many 3d apps including 3dsmax and Blender have some sort of fractal noise available as a map to plug into your materials, but knowing even just a bit about how a fractal noise is actually calculated can open up a lot of new creative possibilities and new looks.

Perlin Noise

Ken Perlin is a Computer Scientist who, among many other things, developed something called Perlin Noise. This is a simple noise function, and is probably the most common noise function available. Go here to read a little more about him.

The image below is an example of Perlin Noise.



If you're using 3dsmax, you can get the same exact result by using a "Noise Map" and set it to "Regular".



The main parameter you can adjust is "Size". Set "Size" smaller, and your noise will be smaller. For example, let's change "Size" from 63.5 as above to a value of 31.75...



Also note, in some other 3d packages, the "Size" parameter is called "Frequency". "Frequency" does the same thing as "Size", but is the inverse. So with "Size", a larger "Size" means a larger pattern. With "Frequency", a larger "Frequency" means a smaller pattern.

Perlin Noise with Fractal

In 3dsmax, to get a fractal noise, you take the Noise Map and click the "Fractal" radio button...



And you get the resulting image...



Fractal isn't a different type of noise, it's still Perlin Noise, it's just that now "Fractal Iterations" have been applied to your Perlin Noise. Sometimes "Fractal Iterations" is called 'Levels' or 'Octaves' or 'Detail', for example, in 3dsmax, if you look at the "Noise Map" interface above, there's a parameter called "Levels" set to 3, this is in fact the "Fractal Iterations" parameter by a different name. Changing the Levels value adds more detail.

But how does fractal actually work under the hood?

Say you take the 3dsmax "Noise Map" and set it to "Fractal" with "Levels" set to 2. The result is below.



What it's actually doing mathematically is it takes your regular Perlin Noise pattern, and overlays a second Perlin Noise pattern that's half as large, and half as strong.



All I did above is take a 3dsmax "Noise Map" set to "Regular", and a "Size" of 63.5, then I made a second "Noise Map" set to "Regular" at half the "Size" (31.75), then brought the two images into photoshop, set the second layer to "Overlay" mode and an Opacity of 50%.



The result in photoshop is identical to a 3dsmax "Noise Map" set to "Fractal" and setting "Fractal Iterations" (or "Levels", in the 3dsmax interface) to a value of 2.

If you set "Fractal Iterations" to 3, it adds a third regular noise, again, at half the size, and half the intensity of the second noise.



In the mathematical Perlin Noise function, there are two extra parameters you should know about...
These useful controls are unfortunately hidden from the user in the normal 3dsmax "Noise Map". They still exist internally, set to a default value, but the user can't change them, which is a real shame, since they're necessary to achieve all sorts of looks.

The 3d application Blender's Noise Texture gives you access to Lacunarity, but not Gain.



Here's another application called Darktree, it gives you control over both of the extra parameters. Lets start with "Lacunarity".



For example, the higher the "Lacunarity" value, the "Fractal Iterations" are much smaller in size than normal.

So instead of this when doing 2 "Fractal Iterations"...



If you make the "Lacunarity" value larger, you get this with "Fractal Iterations" set to 2...



Here's another Darktree example, a Perlin Noise with Fractal Iterations, and a high "Gain" value, so that the tinier detail gets more intense.



Increasing the "Gain" basically goes from this...



to this...



Worley Noise with Fractal

Fractal iterations aren't something that only works on Perlin Noise. 3dsmax also has a noise type called Cellular (which is actual Worley Noise). Cellular also has fractal controls, and it works the same way, under the hood, it's just adding layers of identical cellular noise at a smaller size and less intensity.



Mapping The Fractal


Mapping is applying some sort of spline or gradient to the fractal to change it's appearance. This can be done in 3dsmax in two different ways. First, the Gradient Ramp method.

Make a Gradient Ramp Map, place a white flag in the middle of your gradient, make the two ends of the gradient black, and then place 2 black flags just on either side of your white flag.



The resulting gradient should be all black with a small white bar in the middle (see above). Now set the Gradient type to "mapped", and place a Noise Map set to fractal in the slot.



Here's the results...



If this looks familiar, it is, it's pretty much identical to the Blur Electric Map, a free map plugin by Blur Studio.



All the Electric map is is Fractal Noise modified by a gradient, it's just it has a nicer UI and a few other options such as Perturbation parameters. But otherwise, the primary effect of the Electric map can be achieved by mapping the built in 3dsmax Noise Map using a Gradient Ramp.

Here's an alternate way to map noise. Instead of using a Gradient Ramp, use the output panel of your noise, you can use the Color Map to do the same thing you'd normally do in your gradient, except now you only need to use the Noise Map, not the Noise Map AND the Gradient Ramp.



Mapping the Input Signal vs Mapping the Output Signal

The example above shows mapping the output of a noise. Some procedural programs such as Darktree and Filterforge allows the user to map the input signal as well.

Take this filterforge map...


Input Signal Mapped

This map is also just Fractal Noise modifier by a gradient. But why does it look so different from the previous example?


Output Signal Mapped

That's because the input is mapped instead of the output. So the mapping occurs on the original signal, then the fractal iterations are applied, which is called Input Signal Mapped. The first example shows applying the fractal iterations, and then mapping the result, or Output Signal Mapped. In this case, the order does matter, because depending on which order these things happen in, you get really different results.

Unfortunately, there's no way to map the input signal of the Noise Map in 3dsmax. There is a workaround, although it's sort of ugly. Rather than relying on the map to produce the fractal, you can make your own fractal using a composite map.

So make a single noise like this...



Place this noise in the first layer of a Composite Map.

Now add a second layer to your Composite Map, in there, make a copy of your Noise Map, but set the size to half the size. Then set the layer to Addition, and set the Opacity to 50%.

Now add a third layer. Place in that a copy of your Layer 2 Noise, set it's size to half again, then set that layer to Addition, and set its Opacity to 25%.

Here are all 3 Noises in a Composite Map...



So what you're doing is basically creating your own fractal iterations by compositing noises together manually, just like we did in the "Perlin Noise With Fractal" section.

The result is almost identical to what you got out of Filterforge



Hopefully this gives you just a little more insight into how fractal noise works, and ways to manipulate it inside 3dsmax and other procedural noise generation programs.


This site is ©2024 by Neil Blevins, All rights are reserved.
NeilBlevins.com TwitterMastodonBlueskyInstagramCaraBloggerFacebookLinkedIn ArtStationKickstarterGumroadYouTubeIMDB