单声道噪声与Perlin噪声

时间:2011-06-22 11:52:14

标签: image-processing textures perlin-noise simplex-noise

我想知道为什么在Simplex问世后,Perlin噪音仍然如此受欢迎。单纯的噪音是由Ken Perlin亲自制作的,并且它假设接管了他的旧算法,这种算法对于更高的尺寸和更好的质量(没有可见的伪像)来说是缓慢的。

单面噪声在2001年出现,在过去的10年里,我只看到人们谈论Perlin噪声,因为它产生了地形高度图,创建了程序纹理等等。

任何人都可以帮助我,Simplex噪音会有一些缺点吗?我听说有传言说Perlin噪音在1D和2D噪音方面更快,但我不知道它是否真实。

谢谢!

8 个答案:

答案 0 :(得分:23)

“如果没有破损,请不要修复它。”

看看你是否能找到告诉你为什么Simplex更好的人。 “它更快,并扩展到多个维度”和“单一噪声试图降低高维噪声函数的复杂性”是我发现的。我们大多数人都在2或3个维度工作,如果我们足够幸运能够随着时间的推移做事,那么我们大多数都会工作4个。

我认为公平地说Perlin的实时使用率太低而无法处理,对于大多数用途来说,标准的Perlin噪音就足够了。在预渲染(例如在电影行业中使用)中,时间并不重要,因为渲染很慢;在实时仿真中,我们有足够的方法来减少正在进行的处理范围,你不太可能每隔几毫秒/毫秒产生大量的噪声图 - 这只是基本的实时优化。

答案 1 :(得分:22)

如果只是因为这个名字,我不会感到惊讶。你必须在Perlin噪音和Simplex噪音之间做出选择。后者更新,有一些优点。但是,你知道,这听起来像是两者的“简单”版本。我会选择更复杂的;噪音应该是复杂的,不是吗?

人们倾向于非理性。

答案 2 :(得分:7)

对经典Perlin噪声的一些偏好可能来自能够使用已知值导致已知视觉特性,而不是投入查找使用单纯噪声获得等效输出所需的输入参数所需的时间。

  

[单面噪声]具有略微不同的视觉特性,因此它并不总是直接插件替代经典噪声。依赖于经典噪声的详细特征的应用,如精确的特征尺寸,精确的值范围或更高阶的统计数据,可能需要进行一些修改,以便在使用单纯噪声时更好看。
  斯蒂芬古斯塔夫森的Simplex noise demystified

答案 3 :(得分:6)

Ken Perlin为他的单纯噪声算法申请了专利。根据我的知识,他的经典算法并未获得专利。

答案 4 :(得分:4)

只是一些轶事经验,我使用经典Perlin噪音的原因是因为Ken Perlin有一个C implementation经典的Perlin噪音,同时提供了Java implementation改进的Perlin噪音。听起来很傻,经典的Perlin噪音更容易复制并粘贴到我的程序中,所以这就是我使用它的原因。我总是打算开始移植那个Java实现,但经典的Perlin似乎运行得很好,所以我从不打扰添加它。

Stefan Gustavson has some very good C implementations of Simplex Noise, here

答案 5 :(得分:1)

我还没有使用过单纯噪音,但我可以考虑几个原因:

  • 也许是因为我们习惯了正方形和90度角?正方形,立方体......比三角形,四边形或超四边形更自然。
  • perlin噪音中的每一层都只是一个简单的位图。
  • perlin噪音的输出很容易平铺。纹理通常是瓷砖正方形。
  • 您通常使用低维噪音。根据我的经验,2D和3D是最常见的。
  • 简单的噪音很难理解工具
  • 可能图形卡中的采样器可以对perlin噪声中使用的正交位图进行插值,但不能对单纯形噪声中使用的60度角位图进行插值。 (这一点可能有误,我几年没用过显卡)

答案 6 :(得分:1)

我会直截了当地回答这个问题我会说这是因为佩林的噪音非常简单。另一方面,单面噪声是一个更复杂和更野蛮的野兽。启动和运行Perlin实现比单纯形更容易,因此可以获得更多的使用。它并不能帮助Simplex的情况,两者在视觉效果上非常相似(特别是在您稍微操纵噪音之后)。

Kenneth Perlin自己为基于硬件的实现设计了simplex算法,从而做出了设计决策,使这更容易。从这项专利中可以看出这方面的一个例子。

  

需要表存储器:原始的噪声算法依赖于许多表查找,这在软件实现中是非常合理的,但在硬件实现中这是昂贵的并且构成成本瓶颈,特别是在多个噪声实例时功能是并行的。理想情况下,Noise实现不应该依赖于大型表的存在。

答案 7 :(得分:0)

简单的噪声看起来更加糟糕,许多人认为在更高的维度上它看起来“越来越糟”。对于大多数应用程序,我仍然建议在perlin上使用它,因为大多数应用程序将不仅仅使用原始的单纯形,而是使用八度音阶,它看起来与perlin的八度音阶大致相同,并且对于八度音阶来说明显更快。

相关问题