Perlin Noise
│
English (en) │
français (fr) │
中文(中国大陆) (zh_CN) │
This page is the start of a tutorial about using Perlin Noise on LCL applications to generate natural looking images. It will cover both basic theory and real usage examples, with a focus on compilable examples.
Perlin Noise was invented by Ken Perlin to generate textures for a movie called Tron. Today it is widely used on movies and video games to produce natural looking smoke, landscapes, clouds and any texture including marble, irregular glass, etc.
Getting Started
Perlin Noise is based on the idea of fractals, that things in nature show different degrees of change. On a rocky mountain landscape for example when can see changes with a very big amplitude, which are the mountains themselves. Smaller changes represent irregularities on those mountains and even smaller ones represent rocks.
First Example
This application demonstrates a simple noise function with the following properties:
- Only 1 harmonic present
- Amplitude of 250 pixels
- Wavelength of 20 pixels
- Frequency of 0.05
- You can use a combo box to choose between Linear, Cossine and Cubic interpolation
Files:
- noise1d.lpi
- noise1d.dpr
- noise.pas
Persistence Example
This application demonstrates how to sum many noise functions to get a perlin noise function. It has the following properties:
- 3 harmonics present
- Amplitudes of 250, 125 and 62 pixels
- Wavelength of 20, 10, and 5 pixels
- Frequency of 0.05, 0.1, 0.2
- You can use a combo box to choose between Linear, Cossine and Cubic interpolation
Files:
- perlin1d.lpi
- perlin1d.dpr
- noise.pas
Use Perlin noise to create textures
It is possible to create tilable textures of stone, water, wood... with Perlin noise.
Here is a tutorial on how to do this: BGRABitmap tutorial 8
Subversion
You can download the source code for the examples and the library using this command:
svn co https://svn.code.sf.net/p/lazarus-ccr/svn/examples/noise noise
External Links
- Article with the theory of Perlin Noise.