Processing 使用4D OpenSimplex噪波而不是2D柏林噪波来创建循环噪波的目的是什么?

Processing 使用4D OpenSimplex噪波而不是2D柏林噪波来创建循环噪波的目的是什么?,processing,p5.js,perlin-noise,simplex-noise,generative-art,Processing,P5.js,Perlin Noise,Simplex Noise,Generative Art,当我学习创建循环生成艺术GIF的方法时,我遇到了两种制作噪波循环的不同方法 Etienne Jacob在他的示例代码中使用4D OpenSimplex噪波,如下所示 (浮动)噪声评估(scl*x,scl*y,R*cos(两个π*t),R*sin(两个π*t)) Daniel Shiffman在他的示例代码中使用2D柏林噪声,如下所示 噪音(cos(a)+1,sin(a)+1) 据我所知,两者都是通过在噪声空间中“循环行走”来实现循环的,如上图所示。但我不清楚两者之间的区别。选择4D Ope

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

  • Etienne Jacob在他的示例代码中使用4D OpenSimplex噪波,如下所示

    (浮动)噪声评估(scl*x,scl*y,R*cos(两个π*t),R*sin(两个π*t))

  • Daniel Shiffman在他的示例代码中使用2D柏林噪声,如下所示

    噪音(cos(a)+1,sin(a)+1)


  • 据我所知,两者都是通过在噪声空间中“循环行走”来实现循环的,如上图所示。但我不清楚两者之间的区别。选择4D OpenSimplex而不是2D柏林噪波来创建循环噪波的目的是什么?

    2D噪波可以生成1D循环。4D噪波可以生成在两个方向上循环的2D平面(不同示例),也可以生成具有循环时间轴的卸载2D平面(本示例)。基本上,需要两个卸载维度才能创建一个循环维度

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

    此外,柏林显示了很多45度和90度的偏差。Simplex在这方面要好得多,我设计OpenSimplex也是为了满足这一点。Perlin对于循环的1D线效果很好,但是如果使用2D噪波生成2D结果,则会看到该偏差


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

    感谢您给出了非常清晰的答案。因此,4D噪声可以产生一个球体形状的模型,在其表面的两个方向上循环,或者一个圆环形状的模型,具有循环的1D横截面,也可以沿着圆环运动(时间)。我的理解正确吗?从技术上讲,在两个方向上循环的是圆环(圆环)形状,只是一个4D圆环,它没有像将3D圆环映射到正方形那样的失真。2D+时间循环噪波更像是一个无限圆柱体,但具有无限方向的第二个副本,因此您可以创建2D循环图案,而不仅仅是1D循环图案。要用噪波覆盖球体,只需3D噪波,即可映射球体上的每个点。