Perlin noise
|
|
This article may be too technical for most readers to understand. Please help improve this article to make it understandable to non-experts, without removing the technical details. The talk page may contain suggestions. (June 2011) |
Perlin noise is a computer-generated visual effect developed by Ken Perlin, who won an Academy Award for its use in the motion picture Tron. It can be used to simulate elements from nature, and is especially useful in circumstances where computer memory is limited.
Contents |
[edit] Uses
Perlin noise is a procedural texture primitive, a type of gradient noise used by visual effects artists to increase the appearance of realism in computer graphics. The function has a pseudo-random appearance, yet all of its visual details are the same size (see image). This property allows it to be readily controllable; multiple scaled copies of Perlin noise can be inserted into mathematical expressions to create a great variety of procedural textures. Synthetic textures using Perlin noise are often used in CGI to make computer-generated visual elements - such as fire, smoke, or clouds - appear more natural, by imitating the controlled random appearance of textures of nature.
It is also frequently used to generate textures when memory is extremely limited, such as in demos, and is increasingly finding use in Graphics Processing Units for real-time graphics in computer games.
[edit] Development
Perlin noise resulted from the work of Ken Perlin, who developed it while working at Mathematical Applications Group, Inc.. In 1997, he won an Academy Award for Technical Achievement from the Academy of Motion Picture Arts and Sciences for this contribution to the 1982 film Tron.[1]
[edit] Algorithm
Perlin noise is most commonly implemented as a function of either (x,y), (x,y,z) or (x,y,z,w), but can be defined for any number of dimensions.
Define an n-dimensional grid. Each grid coordinate stores a gradient of unit length in n dimensions. To sample, determine which grid cell you're in, and then compute the n-dimensional vectors from the sample location to each grid coordinate of the cell. For each of grid coordinate, calculate the dot products of the corresponding distance and gradient vectors. Finally, interpolate these dot products using a function that has first derivative = 0 at both endpoints, (and possibly second derivative too).
In 2002, Ken Perlin created Simplex noise, which is similar to but alleviates some problems with Perlin "Classic Noise", among them, computational complexity.
[edit] Complexity
For n being the number of dimensions, Perlin Noise has complexity O(2n) while Simplex Noise has complexity O(n2).
[edit] See also
[edit] References
- ^ Kerman, Phillip. Macromedia Flash 8 @work: Projects and Techniques to Get the Job Done. Sams Publishing. 2006.
[edit] External links
- Making Noise Ken Perlin talk on noise.
- Original source code of Ken Perlin's 'coherent noise function'
- Matt Zucker's Perlin noise math FAQ
- Rob Farber's tutorial demonstrating Perlin noise generation and visualization on CUDA-enabled graphics processors
- French tutorial about implementing improved Perlin Noise in C#
| This computer graphics-related article is a stub. You can help Wikipedia by expanding it. |
