我目前正在尝试学习 Perlin 噪声,特别是用于地形生成的 2D 噪声。在过去的几天里,我一直在网上阅读文章,但他们似乎并不都同意 Perlin 噪声的工作原理,而且那些看起来确实具有权威性的文章理解起来非常复杂。
所以我有一些问题希望有人能帮助澄清。
一些文章谈论从随机数网格(用于 2D 噪声的 2D 网格)开始,这是有道理的。然而,其他文章谈论用梯度向量填充网格。哪个实际上用于 Perlin 噪声?
我不知道什么是“梯度”向量,但如果它是一个实际的向量,这意味着用两个数字填充网格上的每个点,对吧?它只是一种为每个网格点获取两个随机数的方法,还是有理由将其视为方向向量?这些文章讨论了计算向量之间的距离,但我认为这就是插值步骤的用途......
许多关于 Perlin 噪声的文章都谈到了将多个级别的噪声组合成具有不同频率和幅度的八度音阶,以获得我正在寻找的良好的有机结果。但是,其他文章说 Perlin 噪声只是单个倍频程,而将多个级别的噪声组合成多个倍频程的行为实际上是“分数布朗噪声”。哪个实际上是正确的?Perlin 噪声本身只是一种白噪声,而不是每个人都使用它的组合噪声吗?
有些文章用一组初始随机值填充网格,有些文章只是写了他们的噪声函数,这样它就不是完全随机的,而是为给定的输入吐出相同的值。这是有道理的,因此结果(尤其是在 2D 中)看起来并不混乱。但是,当您开始组合多个噪声八度音阶 (FBN) 时呢?每个八度音程是否需要来自同一组值?或者您可以为每个八度音程播种一个单独的网格(或生成器函数)吗?我想避免重复(在结果图像上看到相同的模式重复),但我不知道它背后的逻辑是什么。
至于您开始的随机值网格(或梯度向量......),该网格的大小与您正在创建的图像的最终大小有什么关系?还是纯粹是频率的函数?当您增加每个倍频程的采样分辨率时,您是使用越来越大的网格,还是只是以更精细的分辨率重新采样相同的初始网格?
任何澄清都会非常有帮助。谢谢。