【问题标题】:What is the intent of using 4D OpenSimplex Noise instead of 2D Perlin Noise to create a looping noise?使用 4D OpenSimplex Noise 而不是 2D Perlin Noise 创建循环噪声的目的是什么?
【发布时间】:2021-01-02 15:42:23
【问题描述】:

在学习创建循环生成艺术 GIF 的方法时,我遇到了两种不同的制作噪声循环的方法。

  1. Etienne Jacob 在他的tutorial 中的示例代码使用了 4D OpenSimplex Noise,如下所示。

    (float)noise.eval(scl * x, scl * y, R * cos(TWO_PI * t), R * sin(TWO_PI * t));

  2. Daniel Shiffman 在他的tutorial 中的示例代码使用了 2D Perlin Noise,如下所示。

    噪声(cos(a) + 1, sin(a) + 1);

我的理解是,两者都是通过在上面 gif 的噪声空间中“绕圈走”来实现循环的。但是我不清楚两者之间的区别。选择 4D OpenSimplex 而不是 2D Perlin Noise 来创建循环噪声的目的是什么?

【问题讨论】:

    标签: processing p5.js perlin-noise simplex-noise generative-art


    【解决方案1】:

    2D 噪声可以产生 1D 循环。 4D 噪声可以产生在两个方向上循环的 2D 平面(不同的示例),或具有循环时间轴的非循环 2D 平面(本示例)。基本上,创建一个循环的维度需要两个非循环维度。

    4D 示例在图像上的每个 (x, y) 点处生成一条循环的 1D 线,但不同之处在于您可以改变该 (x, y) 以生成随着时间推移而产生动画的 2D 图像。使用 2D 噪声产生的循环线,您只有那条线本身。 (x, y) 来自 4D 噪声的两个额外维度。

    此外,Perlin 显示出很多 45 度和 90 度偏差。 Simplex 在这方面要好得多,我设计 OpenSimplex 也是为了满足这一点。 Perlin 对于循环 1D 线效果很好,但如果您使用 2D 噪声来产生 2D 结果,那么您会看到这种偏差。

    不过,我建议您现在使用OpenSimplex2 而不是 OpenSimplex(无耻插件),因为它应该在空间上更加统一。特别是。 OpenSimplex2S,它是 2014 OpenSimplex 的直接替代品。

    【讨论】:

    • 感谢您非常明确的回答。因此,4D 噪声既可以产生在其表面上双向循环的球形模型,也可以产生具有循环 1D 横截面的环形模型,该模型也沿着环形(时间)循环移动。我的理解正确吗?
    • 从技术上讲,双向循环的是圆环(甜甜圈)形状,只是一个 4D 圆环,没有将 3D 圆环映射到正方形时那种失真。 2D+时间循环噪声更像是一个无限圆柱体,但具有无限方向的第二个副本,因此您可以创建 2D 循环模式而不仅仅是 1D 模式。
    • 要用噪声覆盖球体,您只需要 3D 噪声来映射球体上的每个点。
    猜你喜欢
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多