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

3
当我在学习如何创建循环生成艺术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的示例代码如下。

    noise(cos(a) + 1, sin(a) + 1);

Golan Levin's work

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

5

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

在图像的每个(x,y)点处,4D示例会产生一个循环的1D线,但区别在于您可以改变(x,y)以生成自身随时间动画化的2D图像。由2D噪声产生的循环线仅具有该线本身。额外的2个维度来自4D噪声。

此外,Perlin展现了很多45度和90度偏差。在这方面,Simplex要好得多,我设计的OpenSimplex也满足这一点。Perlin对于循环1D线工作得很好,但如果您使用2D噪声产生2D结果,则会看到那种偏差。

然而,我建议您使用OpenSimplex2而不是OpenSimplex(无耻的推销),因为它应该更加均匀地覆盖空间。尤其是OpenSimplex2S,它是2014年OpenSimplex的直接替代品。


非常感谢您提供如此清晰的答案。因此,4D噪声可以产生一个球形模型,在其表面上在两个方向上循环,或者是一个甜甜圈状的模型,具有沿着甜甜圈(时间)移动的循环1D横截面。我的理解正确吗? - W268
1
从技术上讲,双向循环的是一个环面(甜甜圈)形状,只不过是一个缺乏从将3D环面映射到正方形所得到的扭曲的4D环面。2D+时间循环噪声更像是一个无限长的圆柱体,但有第二个无限方向的副本,因此您可以创建一个2D循环模式而不仅仅是1D模式。 - KdotJPG
1
覆盖球体的噪声,你只需要使用3D噪声来映射球体上的每个点。 - KdotJPG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接