Perlin noise is an algorithm used to create a controllable
natural-looking randomness, and is used in nearly all CGI
in one form or another. According to its inventor, Ken Perlin,
“Noise is a texturing primitive that you can use to create
a very wide variety of natural looking textures. Combining
noise into various mathematical expressions produces procedural
texture.” The result of the basic noise function can be used
to produce an image that appears random, but has an approximately
uniform special frequency. This also allows the image to look
almost the same no matter how it is rotated. |
Noise
|
Noise rotated
|
|
|
Originally created in 1983,
one aspect of Perlin noise that made it useful in earlier days of
CGI was that its file size is virtually naught compared to that
of bitmap based textures. Computers in those days had incredibly
small hard drive and memory sizes compared to what is available
today, so this was a major issue, especially for large rendered
areas where tiling of a texture map would be obvious without exceptionally
large bitmaps.
|
Another benefit of using Perlin
noise is that since it algorithmically based, it can has an
infinite amount of detail limited only by the precision
it is calculated out to. Additionally, if one treats the output
of a noise function as a wave, it can be added to other noise
waves of varying amplitudes and frequencies to produce a cloud-like
fractal image. Typically, each successive noise wave used
is twice the frequency and half the amplitude of the previous
wave. |
Fractal Noise
|
|
Since it is so common to double frequencies
and half the amplitudes when adding noise waves, each successive
noise function is referred to as an octave. Also, to make
things simpler, one variable is used to determine the amplitudes
and frequencies, which is referred to as persistence. The
term was originally created by Benoit Mandelbrot who defined noise
with high frequency as having low persistence.
|
By applying equations
to the composite waves, one can simulate a variety of natural surfaces,
such as fire, marble, and wood. This effect works even better when
the noise is calculated for 3 dimensions instead of two, which can
be used as a texture without having to worry about UVW coordinates.
Instead, the object acts as if it were carved out of the generated
material.
|
Noise used to simulate natural surfaces
|
Additionally, when used in combination
with filters in Photoshop and similar programs, noise can be used
as a starting point for bitmapped textures. For example, noise +
the cross hatch filter can quickly create a scratched glass texture.
Or, one could use low density nose with the smudge tool to create
stubble for a character's face map.
|
Finally, noise can be used
with displacement and bump mapping to simulate landscapes, and to
make rendered surfaces appear rougher and thus more detailed than
the original geometry. This is done by using a 2d version of the
function then having a 3d modeling program use the lights and darks
of the noise to tell the program what to make higher and what to
make lower. |
Noise used as displacement map
(lower range of grays removed before applying)
|