首页 文章

关于Perlin噪音的问题(它是如何工作的)

提问于
浏览
2

我目前正在尝试学习Perlin噪声,特别是用于地形生成的2D噪声 . 过去几天我一直在网上阅读文章,但他们似乎并不都同意Perlin的噪音是如何工作的,看似权威的那些看起来非常复杂 .

所以我有一些问题,我希望有人可以帮助澄清 .

  • 有些文章谈到从随机数网格(二维噪声的2D网格)开始,这是有道理的 . 然而,其他文章谈论用渐变向量填充网格 . 哪个实际上用于Perlin噪音?

  • 我不知道“渐变”矢量是什么,但是如果它是一个实际矢量,那意味着用两个数字填充网格上的每个点,对吧?它只是一种获得每个网格点两个随机数的方法,还是有理由将其视为方向向量?文章讨论了计算向量之间的距离,但我认为这就是插值步骤的目的......

  • 许多关于Perlin噪音的文章都谈到将多个级别的噪声组合成具有不同频率和幅度的八度音阶,以获得我正在寻找的有机结果 . 然而,其他文章说Perlin噪声只是一个八度音阶,并且将多个级别的噪声组合成多个八度音阶的行为实际上是“分数布朗噪声” . 哪个是正确的? Perlin噪音本身只是一种白噪声,而不是每个人都用它的组合噪音吗?

  • 有些文章使用一组初始随机值来填充网格,有些文章只是编写它们的噪声函数,因此它不是完全随机的,而是为给定的输入吐出相同的值 . 这是有道理的,所以结果(特别是在2D中)看起来并不混乱 . 但是当你开始组合多个八度音程(FBN)时呢?每个八度音阶都需要来自同一组值吗?或者你可以为每个八度音阶种植一个单独的网格(或生成器函数)吗?我想避免重复(在结果图像上看到相同的模式重复),但我不知道它背后的逻辑是什么 .

  • 对于您开始使用的随机值网格(或渐变向量...),该网格的大小是否与您正在创建的图像的最终大小有关?或者纯粹是频率的函数?当你增加每个八度音阶的样本分辨率时,你使用越来越大的网格,或者只是以更精细的分辨率重新采样相同的初始网格?

任何澄清都会非常有帮助 . 谢谢 .

1 回答

  • 4

    我不知道“渐变”矢量是什么,但如果它是实际矢量,那意味着用两个数字填充网格上的每个点,对吗?它只是一种获得每个网格点两个随机数的方法,还是有理由将其视为方向向量?文章讨论了计算向量之间的距离,但我认为这就是插值步骤的用途

    在每个坐标处只有一个数字,但是在网格点之间插入实际值 . 因此,(整数*)网格点之间存在梯度 . 这可以在Ken Perlins original source中看到 . 1,2或3个浮点数(1D,2D或3D空间中的坐标)的输入返回单个浮点数 .

    *注意,可以缩放输入坐标,使得整数网格点不在整数输入坐标处 .

    许多关于Perlin噪音的文章都谈到将多个级别的噪声组合成具有不同频率和幅度的八度音阶,以获得我正在寻找的有机结果 . 然而,其他文章说Perlin噪声只是一个八度音阶,并且将多个级别的噪声组合成多个八度音阶的行为实际上是“分数布朗噪声” . 哪个是正确的? Perlin噪音本身只是一种白噪声,而不是每个人都用它的组合噪音吗?

    Perlin噪音在技术上是单个八度音阶,但并不是那么有用 . 因此人们经常将许多八度音阶组合在一起以产生分形噪声(其他基本噪声函数比Perlin可用于产生分形噪声) . 通常人们只是根据Perlin噪声Perlin噪声调用分形噪声,这是错误的,但很常见,你必须考虑它 .

    有些文章使用一组初始随机值来填充网格,有些文章只是编写它们的噪声函数,因此它不是完全随机的,而是为给定的输入吐出相同的值 . 这是有道理的,所以结果(特别是在2D中)看起来并不混乱 . 但是当你开始组合多个八度音程(FBN)时呢?每个八度音阶都需要来自同一组值吗?或者你可以为每个八度音阶种植一个单独的网格(或生成器函数)吗?我想避免重复(在结果图像上看到相同的模式重复),但我不知道它背后的逻辑是什么 .

    对于相同的输入(坐标和种子)Perlin噪声函数应该总是吐出相同的输出 . 无论您是使用它来预先填充网格还是只是获取值,都完全取决于您 . 每个八度音程都应该有不同的种子 . 这是Perlin噪声的定义属性:

    • 表观随机性,应该随机看人眼*

    • 可再现,意味着使用相同的输入它将始终给出
      相同的输出*

    • 值之间的平滑过渡,意味着没有锐边*

    就您开始的随机值网格(或渐变向量...)而言,该网格的大小是否与您正在创建的图像的最终大小有关?或者纯粹是频率的函数?当你增加每个八度音阶的样本分辨率时,你使用越来越大的网格,或者只是以更精细的分辨率重新采样相同的初始网格?

    输入的坐标(以及设置功能的频率之类的东西)应该决定噪声的属性 . 假设输入坐标的范围保持不变,则网格的大小应仅影响您看到噪声的分辨率 .

    不同的八度音响应该有不同的种子,但它们也有不同的尺度;你不只是以不同的八度音阶以更精细的分辨率重新采样相同的网格,你正在缩放你的坐标 .

相关问题