当前位置: 代码迷 >> 综合 >> 【计算机图形】Perlin Noise 实例和理解
  详细解决方案

【计算机图形】Perlin Noise 实例和理解

热度:2   发布时间:2024-01-18 08:19:05.0

Perlin noise

一、 背景介绍

分形:

分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。分形(Fractal)一词,是芒德勃罗创造出来的,其原意具有不规则、支离破碎等意义。1973年,芒德勃罗(B.B.Mandelbrot)在法兰西学院讲课时,首次提出了分维和分形的设想。(百度百科)

分形在自然界中随处可见:



生成方式:

Perlin noise 就是一种非常有用强大的算法,常用于生成看似杂乱而又有序的内容。尤其特别适合用于游戏和其他视觉媒体,如电影。它的创始人Perlin也因为最先运用此技术而获得奥斯卡奖。

噪音维数 原始噪音 (Grayscale) 实例
1维
Using noise as an offset to create handwritten lines.
2维
By applying a simple gradient, a procedural fire texture can be created.
3维
Perhaps the quintessential use of Perlin noise today, terrain can be created with caves and caverns using a modified Perlin Noise implementation.

二、原理


对一维,如上图,先分配随机的散点,再对这些点进行插值获得连续的曲线。此处需要注意的是需要控制波长,否则可能导致Aliasing(不知道中文应该如何翻译这个词,因为其并不代表锯齿)。 

此处细节Prof. James给我的邮件答复内容:

Because the wavelength is about the size ofthe lattice. Therefore the frequency is also narrowly limited. You are going to add a number of thesesignals to get the 1/f noise. You need to know the frequency you are about toadd in order to be able to sample at the Nyquist limit.  

对二维

  • 定义一个晶格结构,每个晶格的顶点有一个“伪随机”的梯度向量。对于二维的Perlin噪声来说,晶格结构就是一个平面网格,三维的就是一个立方体网格。 
  • 输入一个点(二维的话就是二维坐标,三维就是三维坐标,n维的就是n个坐标),我们找到和它相邻的那些晶格顶点(二维下有4个,三维下有8个,n维下有