当前位置: 首页 > 编程语言 > C#

一维柏林噪声?分享

时间:2023-04-10 18:42:29 C#

一维柏林噪声?尽我所能,我找不到任何关于1DPerlinSamplexNoise的真正教程。我在互联网上搜索过但找不到任何东西。我发现任何提到一维柏林噪声的网站通常都非常不清楚,或者只是显示代码我知道这是一个老问题,但这是关于构成一维柏林噪声的固定点之间插值的最清晰的解释之一http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf在所有编程中最重要的事情之一是插值函数......http://paulbourke.net/miscellaneous/interpolation/一旦你有平滑的插值随机点,你有一种平滑的1d噪声函数。请参阅wiki上的smoothstep。很多主题通过谷歌。https://en.wikipedia.org/wiki/Smoothstep显然超链接不稳定,这里又是:SimpleNoiseDemystifiedKenPerlin提出“SimplyNoise”来取代他的经典噪声算法。经典的“柏林噪音”为他赢得了奥斯卡金像奖,多年来已成为计算机图形学中无处不在的程序原型,但事后看来它有很多局限性。KenPerlin自己专门设计了mononoise来克服这些限制,他为此付出了很多努力。因此,它比他原来的算法要好。一些更突出的优点是:?单纯形噪声具有较低的计算复杂度并且需要较少的乘法运算。?单侧噪声可以扩展到更高维度(4D、5D和更高),计算成本更低,复杂性在于大小而不是经典噪声。?单纯形噪声没有明显的方向性伪影。?单纯形噪声具有定义明确的连续梯度,计算成本非常低。?单边噪声很容易在硬件中实现。可悲的是,即使在2005年初,似乎也很少有人理解单纯形噪声,几乎没有人使用它,这就是我写这篇文章的原因。我将尝试用比KenPerlin关于Siggraph2001和2002的课程笔记更多的时间来解释这个算法,并希望能够清楚地表明它并不像它第一次出现时那样难以掌握。据我所知,最令人困惑的是KenPerlin的Java参考实现的不可理解性。他提供了非常紧凑且未注释的代码来演示原理,但代码显然不应被视为教程。尝试了几次后,我放弃了代码并阅读了他的论文,这更加清晰。但不是很清楚,因为他主要用文字和代码片段介绍算法。我会欣赏一些图表和一些有用的方程式,这就是我在这里试图提供的,以使其他人更容易理解单纯形噪声的伟大和美丽。我还将首先解释1D和2D的内容,以便更容易用图形和图像进行解释,然后再转向3D和4D。ClassicalNoise要解释单纯形噪声,有助于很好地理解经典的Perlin噪声。我在这方面看到过很多不好的和错误的解释,所以为了确保你已经做了必要的基础工作,我将从展示经典的Perlin噪音开始。Perlin噪声是所谓的梯度噪声,这意味着您在空间中规则间隔的点设置伪随机梯度,并在这些点之间插值平滑函数。要在一维中生成Perlin噪声,请将噪声函数的伪随机梯度(或斜率)与每个整数坐标相关联,并将每个整数坐标处的函数值设置为零。对于两个整数点之间某处的给定点,该值在两个值之间进行插值,即如果从最近的线性斜率向左和向右外推到所讨论的点,则该值将是结果。这种插值是一种平滑算法。我知道这个问题很老并且已经回答了,但你不能只从2DPerlin噪音中取出线条,例如x或y总是0?以上就是C#学习教程:1DPerlinnoise?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: