【问题标题】:How is Perlin-noise in flash implemented?Flash 中的 Perlin-noise 是如何实现的?
【发布时间】:2013-07-24 05:22:44
【问题描述】:

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

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

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

但是 Perlin-noise 的其他实现看起来完全不同。比如来自Wikipedia article about Perlin-noise的图片:

同样this Actionscript Implementation of Perlin-noise 产生完全不同的结果,如下图所示(八度音阶124 从左到右):

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

重要提示:flash中产生的噪点使用false作为fractalNoise参数。如果将fractalNoise 设置为true,则结果实际上与来自维基百科和其他实现的结果非常相似。

参数说明如下:

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

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

【问题讨论】:

    标签: flash implementation perlin-noise


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 抱歉,不是这样。我什至使用你的一个链接中的代码来生成我感兴趣的噪声图像。flash 实现没有什么不同,因为它是基于整数的(不是),如果你输出一个最后的图像,你将有整数,没有办法解决这个问题。 Flash 实现允许您在“湍流”和“常规”噪声之间进行选择。我感兴趣的是turbulence的算法。如果您在 Google 图片中搜索“湍流噪声”和“柏林噪声”,您会发现其中的区别。
      猜你喜欢
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      相关资源
      最近更新 更多