尽我所能,我找不到任何关于 Perlin\Samplex Noise in 1D 的真正教程。
我在互联网上搜索了所有内容,但找不到任何东西。我遇到的任何提到 1D perlin 噪声的网站通常都非常不清楚,或者只是显示代码
尽我所能,我找不到任何关于 Perlin\Samplex Noise in 1D 的真正教程。
我在互联网上搜索了所有内容,但找不到任何东西。我遇到的任何提到 1D perlin 噪声的网站通常都非常不清楚,或者只是显示代码
迟到了,但事实证明,像下面这样的函数永远不是周期性的。
sin (2 * x) + sin(pi * x)
您可以采用一般功能,例如将 2 更改为 3,在 y 方向上压缩图形,缩放单个正弦的 x 频率/周期,您还可以将单个周期移动 x。很多东西,我在 geogebra 的下面的链接中做了一个游乐场,所以你可以玩弄配置,看看什么看起来最好,等等。绿色图表是结果,紫色图表是如果你想要整个函数增长到理论上的无穷大,橙色虚线图是我们在上面看到的红色函数的恒定配置,黄色线图是没有缩放的一切。享受!
提示:非周期函数不需要两个无理数。例如,您也可以使用二的平方根。
我知道这是一个老问题,但这里是关于构成一维柏林噪声的固定点之间插值的最清楚的解释之一http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
要知道的最重要的事情之一,在所有编程中都很有用的是插值函数......
http://paulbourke.net/miscellaneous/interpolation/
一旦你有了平滑步长插值的随机点,你就有了一种平滑的一维噪声函数。
参见 wiki 上的 smoothstep。通过谷歌很多关于这个话题的。https://en.wikipedia.org/wiki/Smoothstep
显然超链接不稳定,这里又是:
单工噪声揭秘
Ken Perlin 提出了“单纯噪声”,它替代了他的经典噪声算法。经典的“柏林噪声”为他赢得了学院奖,并且多年来已成为计算机图形学中无处不在的程序原语,但事后看来它有很多局限性。Ken Perlin 自己专门设计了单纯形噪声来克服这些限制,他在这方面花了很多心思。因此,这是一个比他原来的算法更好的主意。
一些比较突出的优点是:
• 单纯形噪声具有较低的计算复杂度并且需要较少的乘法。
• 单纯形噪声以更少的计算成本扩展到更高的维度(4D、5D 及更高),复杂性是针对维度而不是经典噪声。
• 单纯形噪声没有明显的方向性伪影。
• 单纯形噪声在任何地方都有一个定义明确且连续的梯度,计算成本非常低。
• 单工噪声很容易在硬件中实现。
可悲的是,即使在 2005 年初的现在,似乎也很少有人了解单纯形噪声,几乎没有人使用它,这就是我写这篇文章的原因。我将尝试比 Ken Perlin 在他的 Siggraph 2001 和 2002 的课程笔记中更彻底地解释该算法,并希望清楚地表明它并不像最初看起来那样难以掌握。据我所知,最让人们困惑的是 Ken Perlin 的 Java 参考实现的难以理解的本质。他提供了非常紧凑且未注释的代码来演示该原理,但该代码显然不适合作为教程阅读。几次尝试后,我放弃了代码,转而阅读他的论文,这更清楚了。
不过,并不是很清楚,因为他主要用文字和代码片段来介绍算法。我会很欣赏一些图表和一些有用的方程式,这就是我在这里尝试提供的,以便其他人更容易理解单纯形噪声的伟大和美丽。我还将首先解释一维和二维的事物,以便用图形和图像更容易解释,然后再转向三维和四维。经典噪声 为了解释单纯形噪声,对经典 Perlin 噪声有一个很好的理解是有帮助的。我在这方面看到了很多错误的和错误的解释,所以为了确保你已经完成了必要的基础工作,我将首先介绍经典的 Perlin 噪音。
Perlin 噪声是一种所谓的梯度噪声,这意味着你在空间中规则间隔的点上设置一个伪随机梯度,并在这些点之间插入一个平滑函数。要在一维中生成 Perlin 噪声,请将噪声函数的伪随机梯度(或斜率)与每个整数坐标相关联,并将每个整数坐标处的函数值设置为零。
对于两个整数点之间某处的给定点,该值在两个值之间内插,即如果从左侧和右侧最接近的线性斜率已被外推到所讨论的点,则该值将是结果。这种插值是一个平滑步骤算法。