首页 文章

如何实现闪光灯中的Perlin噪声?

提问于
浏览
10

gamedev.SE,我们发现flash implementation of Perlin-noise似乎与其他实现有很大差异 .

我没有在网上找到任何实现细节,但我想知道是否有人可以告诉哪些算法用于闪存中的Perlin噪声 .

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

perlin noise in flash

然而,Perlin噪声的其他实现看起来完全不同 . 例如Wikipedia article about Perlin-noise中的图像:

Perlin noise as depicted on Wikipedia

另外this Actionscript Implementation of Perlin-noise会产生完全不同的结果,如下图所示(Octaves 124 从左到右):

Perlin noise AS3

我最感兴趣的是只有一个八度的噪音 . 在闪存实现中,您可以清楚地看到,噪声正在形成像分离的斑点 .

Important :闪存中生成的噪声使用 false 作为 fractalNoise 参数 . 如果 fractalNoise 设置为 true ,则结果实际上与维基百科和其他实现中的结果非常相似 .

参数说明如下:

布尔值 . 如果该值为true,则该方法生成分形噪声;否则会产生湍流 . 具有湍流的图像在梯度中具有可见的不连续性,这可以使其更好地近似更清晰的视觉效果,如火焰和海浪 .

我们可以看到,他们谈到湍流来描述产生噪音的方法 . 所以我想问题是:闪存产生的输出是否仍然是Perlin-noise?或者那种噪音还有另一个名字吗?最重要的是:在哪里可以找到一个像这样产生噪音的实现?

2 回答

  • 4

    显然,术语存在一些混乱 . 但从技术上讲,佩林所描述的噪音只是一个八度,而没有任何总和 . 它看起来像是第一个维基百科图像 .

    我很确定几乎没有人真正使用它 . 每个人都加起来几个八度,通常在较低的频率下使振幅变大 . “有多大”是持久性 . 无论如何,当你把它加起来时,它被称为分形噪声 .

    “Perlin噪音”实际上只意味着你制作了一堆随机渐变,并插入它们 . 但人们将分形噪声称为Perlin噪声,因为它是几个Perlin噪声波的总和 .

    请注意,通常,如在参考实现中,Perlin和Simplex噪声函数输出值以0为中心并且(有时)缩放为[-1,1] . 此外,这些相似但不完全相同 - 单工噪声看起来有点不同 . 它们有时被称为Perlin噪音,因为Ken Perlin最初想到Perlin噪音(他称之为“噪音”),然后通过去除一些冗余并产生单纯噪声(他称之为“改善的噪音”)来加速它) . Simplex本身看起来有点暗(网格不同,所以显然看起来不同),而且高维噪声的部分与Perlin的行为不同 .

  • 1

    自从我进行任何图像处理以来,这是一个漫长的时间,但也许其中一些会有所帮助:

    参考文献:(以及知道答案的人......)http://www.kelvinluck.com/assets/perlin_noise_experiments/http://www.quasimondo.com/archives/000672.phphttp://www.sjeiti.com/?p=305

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

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

相关问题