10

gamedev.SE上,我们发现Perlin-noise 的 flash 实现似乎与其他实现有很大的不同。

我没有在网上找到任何实现细节,但我想知道是否有人能说出闪存中的 Perlin-noise 使用了哪种算法。

使用bitmapData.perlinNoise(32, 32, 1, 200, false, false, 7, true);生成这样的图像,其中仅numOctaves更改了参数(1, 2,4从左到右):

闪光灯中的柏林噪声

然而 Perlin-noise 的其他实现看起来完全不同。例如,维基百科关于 Perlin-noise的文章中的图像:

维基百科上描述的 Perlin 噪声

Perlin-noise 的 Actionscript 实现也产生了完全不同的结果,如下图所示(八度音阶,1从左到右):24

柏林噪声 AS3

我最感兴趣的是只有一个八度音阶的噪音外观。在 Flash 实现中,您可以清楚地看到,噪音正在形成类似分离的斑点。

重要:闪光灯中产生的噪音false用于fractalNoise参数。如果fractalNoise设置为true,则结果实际上与 Wikipedia 和其他实现中的结果非常相似。

参数说明如下:

一个布尔值。如果该值为真,则该方法生成分形噪声;否则,它会产生湍流。具有湍流的图像在渐变中具有明显的不连续性,可以使其更好地接近更清晰的视觉效果,例如火焰和海浪。

正如我们所见,他们用湍流来描述产生噪音的方法。所以我想问题是:flash 生成的输出仍然是 Perlin 噪声吗?或者这种噪音还有别的名字吗?最重要的是:在哪里可以找到一种实现来产生这样的噪音?

4

2 回答 2

4

显然,术语有些混乱。但从技术上讲,Perlin 描述的噪音是一个八度音阶,没有任何总和。它看起来像第一个维基百科图像。

我很确定几乎没有人真正使用它。每个人加起来几个八度音阶,通常在较低频率下使幅度更大。“多大”是坚持。不管怎样,当你把它加起来的时候,它就叫做分形噪声。

“柏林噪声”实际上只意味着你制作了一堆随机渐变,然后对它们进行插值。但是人们将分形噪声称为 Perlin 噪声,因为它是几个 Perlin 噪声波的总和。

请注意,通常与参考实现一样,Perlin 和 Simplex 噪声函数输出值以 0 为中心,并且(有时)缩放为 [-1, +1]。此外,这些相似但不完全相同 - 单纯形噪声看起来有点不同。它们有时都被称为 Perlin 噪声,因为 Ken Perlin 最初想到的是 Perlin 噪声(他称之为“噪声”),后来通过消除一些冗余并创建了单纯形噪声(他称之为“改进的噪声”)来加速它)。单纯形本身可能看起来有点暗(网格不同,因此显然看起来不同),并且通过高维噪声的部分的行为与 Perlin 不同。

于 2012-03-04T10:23:27.693 回答
1

自从我进行任何图像处理以来已经很长时间了,但也许其中一些会有所帮助:

参考资料:(以及知道答案的人......http://www.kelvinluck.com/assets/perlin_noise_experiments/,http://www.quasimondo.com/archives/000672.php,http://www sjeiti.com/?p=305

我的理解是 Flash 实现是基于整数计算而不是浮点数输出结果。这可以解释为什么渲染速度很快,但在外观上也略有不同。

希望至少能让你朝着正确的方向前进......

于 2011-12-24T03:13:56.200 回答