柏林噪声
柏林噪声算法(Perlin Noise)是Ken Perlin在1983年提出的一种渐变噪声。和完全随机的白噪声相比,柏林噪声做到了杂乱而有序。能够更好地模拟自然界中的随机现象的复杂性和相互间的关联性,常被用于电影视觉效果。
a. 一维柏林噪声
- 随机出一些散点;
- 对这些点进行插值获得连续的曲线;
- 用Unity的GL屏幕划线写了一下,这里用的插值函数是
b. 二维柏林噪声
- 首先定义一个晶格结构,二维的情况下就是一个网格结构。并且为每个晶格顶点赋予一个"伪随机"的梯度向量;
- 对于每个二维坐标点,找到与其相邻的4个晶格顶点,计算该点到各个晶格顶点的距离向量;
- 四个距离向量分别与对应的梯度向量做点乘,得到点乘结果;
- 最后使用缓和曲线(ease curves)对点乘结果做插值求权重和;
- 效果如下: