微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 4D OpenSimplex Noise 而不是 2D Perlin Noise 来创建循环噪声的目的是什么?

如何解决使用 4D OpenSimplex Noise 而不是 2D Perlin Noise 来创建循环噪声的目的是什么?

在我学习创建循环生成艺术 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);

Golan Levin's work

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

解决方法

二维噪声可以产生一维循环。 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 的直接替代品。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。