需要分数布朗噪声(FBM)与柏林噪声澄清

Posted

技术标签:

【中文标题】需要分数布朗噪声(FBM)与柏林噪声澄清【英文标题】:In need of Fractional Brownian Noise (FBM) vs Perlin Noise clarification 【发布时间】:2013-06-04 16:06:00 【问题描述】:

我正在研究用于地形生成的各种类型的噪声,我对何时噪声变为 perlin 噪声以及何时 perlin 噪声变为 fbm 感到有些困惑。我希望有人可以澄清我出错的任何地方。我目前假设如下

噪声:包含幅度和频率,它与某种形式的插值(例如线性、余弦或三次)一起指示最终值。

Perlin Noise:倍频程噪声函数的总和(每个连续函数包含两倍的频率)。从我目前所读到的内容来看,幅度似乎总是呈现为一致的减少。例如,Noise1 包含 1 的 A,Noise2 包含 0.5 的 A,Noise3 包含 0.25 的 A,这意味着这里幅度每次减半。一定要这样一直保持一致吗?

FBM:多个 perlin 噪声函数的总和,其中每个 Perlin 噪声函数必须仅包含幅度递减的八度音阶。

【问题讨论】:

另一个看起来很棒但有点模糊定义边界的技巧是 iq 的解析导数夹具:iquilezles.org/www/articles/morenoise/morenoise.htm 【参考方案1】:

Perlin Noise 实际上是一种计算所谓 Noise 的方法。它是一种相干噪声,计算为伪随机基础函数(或伪随机生成的梯度)的插值归一化梯度。频率控制梯度的“采样”距离,所以频率越高,采样距离越小,单位空间的梯度越多。振幅控制噪声函数的最大值和最小值。

Hugo Elias' page on Perlin Noise对概念、算法等有很好的描述。 Perlin Noise FAQ 以非常直观的方式解释了算法。

噪音是一个通用术语。 Perlin 噪声只是一种相干噪声。但是有很多不同的类型,具有不同的特点。

分形布朗运动实际上就是您所说的柏林噪声。它是 Perlin Noise(或其他类似的噪声函数)的多个步骤的组合,每个步骤具有不同的频率和幅度。在程序生成的背景下,从一个步骤到下一个步骤的频率变化称为间隙。从一个步骤到下一个步骤的幅度变化称为增益。

看看this。 这个地形生成项目很好地描述了 fBM 是什么以及它是如何计算的。

我希望这会有所帮助!

【讨论】:

您还可以在此处找到有关噪声的一般信息:scratchapixel.com/lessons/3d-advanced-lessons/noise-part-1 Hugo Elias 的页面很混乱,他所说的是价值噪音,而不是 Perlin 噪音。它们是不同的方法和质量。实际上,价值噪声是 Perlin 噪声的廉价替代品。 en.wikipedia.org/wiki/Value_noise Perlin Noise FAQ Mirror【参考方案2】:

perlin 噪声使用斜率来创建圆形气泡相关性,以获得更自然的外观。

八度音阶方法结合了各种尺度的噪声以生成更复杂的形式。显然,这种技术就是所谓的“分形布朗运动”。我以前从未听说过这个,但我做了一些研究,这就是我得到的。

您可以使用带有任何类型噪声的八度音阶,并在频率和幅度上随意缩放它们。一半的事情是出于数学原因从结果中删除某些伪影。

但是这个八度音程是一种独立于柏林噪声的技术。它们可以很好地协同工作,因此可以一起使用。

白噪声倍频程又名白噪声 fbm 称为值噪声。它倾向于显示底层网格,因此通常使用 perlin 噪声代替。

【讨论】:

以上是关于需要分数布朗噪声(FBM)与柏林噪声澄清的主要内容,如果未能解决你的问题,请参考以下文章

柏林噪声的每顶点法线?

(转载)柏林噪声

利用柏林噪声生成噪声函数

2D 柏林噪声

运动的柏林噪音?

unity3d 柏林噪声 PerlinNoise 规律 算法