Perlin Noise——柏林噪声

1.简介

  柏林噪声最常用且最著名的噪声,名字源于他的创始人Ken Perlin。

  柏林噪声与值噪声相似,定义若干个顶点且每个顶点含有一个随机梯度向量,这些定点会根据自己的梯度向量对周围坐标产生是能影响,沿着顶点的梯度方向越上升则势能越高。

  当需要求出某个坐标的输出值时,需要将该坐标附近的各个顶点所造成的势能进行叠加,从而得到一个总势能并输出。

2.原理

  与值噪声一样,它也是基于晶格的噪声,也需要三个步骤:

  2.1首先定义一个晶格结构,每个晶格顶点有一个随机的梯度向量。对于二维的柏林噪声来说,晶格结构就是一个平面网格,对于三维来说就是一个立体网格。

  

  2.2输入一个点坐标(二维的话就是二维坐标,三维就是三维坐标,n维的就是n维坐标),我们找到和它相邻的那些晶格顶点(二维下有4个,三维下有8个,n维下有 2ⁿ 个),计算该点到各个晶格顶点的距离向量,再分别与顶点上的梯度向量做点乘,得到2ⁿ个点乘结果

  

 

   2.3使用缓和曲线计算它们的权重和

  

  下图通过颜色差异显示了2d柏林噪声生成的个像素点的值:

  

posted @ 2021-01-06 18:27  _蒲公英_  阅读(1797)  评论(0编辑  收藏  举报