Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 单纯形噪声与柏林噪声_Image Processing_Textures_Perlin Noise_Simplex Noise - Fatal编程技术网

Image processing 单纯形噪声与柏林噪声

Image processing 单纯形噪声与柏林噪声,image-processing,textures,perlin-noise,simplex-noise,Image Processing,Textures,Perlin Noise,Simplex Noise,我想知道为什么柏林噪音在单纯形问世后的今天仍然如此流行。单纯形噪声是由Ken Perlin自己制造的,它被认为将取代他的旧算法,该算法对于更高维度和更好的质量(没有可见的伪影)来说速度较慢 Simplex noise于2001年问世,在这10年中,我只看到人们在为地形生成高度贴图、创建程序纹理等方面谈论柏林噪音 谁能帮我一下吗,单工噪音有什么坏处吗?我听说柏林噪声在一维和二维噪声中更快,但我不知道这是真是假 谢谢 我还没有使用过单纯形噪声,但我可以考虑以下几个原因: 也许是因为我们习惯了正方形

我想知道为什么柏林噪音在单纯形问世后的今天仍然如此流行。单纯形噪声是由Ken Perlin自己制造的,它被认为将取代他的旧算法,该算法对于更高维度和更好的质量(没有可见的伪影)来说速度较慢

Simplex noise于2001年问世,在这10年中,我只看到人们在为地形生成高度贴图、创建程序纹理等方面谈论柏林噪音

谁能帮我一下吗,单工噪音有什么坏处吗?我听说柏林噪声在一维和二维噪声中更快,但我不知道这是真是假


谢谢

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

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

如果只是因为这个名字,我一点也不会感到惊讶。您必须在柏林噪声和单纯形噪声之间进行选择。后者较新,有一些优点。但是,你知道,这听起来像是两者的“简单”版本。我会选择复合型的;噪音应该是复杂的,不是吗

人们往往很不理性。

“如果它没有坏,就不要修理它。”


看看是否有人能告诉你为什么Simplex更好。“它更快,并扩展到多个维度”和“单纯形噪声试图降低高维噪声函数的复杂性”是我发现的。我们中的大多数人都在二维或三维空间中工作,如果我们足够幸运,可以利用时间做一些事情的话,可能是4维空间


我认为可以公平地说,柏林的实时使用很少,处理速度太慢,对于大多数目的来说,标准柏林噪音就足够了。在预渲染中(如电影行业中使用的),时间并不重要,因为渲染速度很慢;在实时模拟中,我们有足够的方法来减少正在进行的处理的范围,使您不太可能每隔几纳米/毫秒生成大量的噪声贴图——这只是基本的实时优化。

对于经典柏林噪声的一些偏好可能来自于能够使用已知的值,从而产生已知的视觉特征,而不是投入所需的时间来找到所需的输入参数,以便使用单纯形噪声获得等效输出

[simplex noise]的视觉特性稍有不同,因此它并不总是经典noise的直接插件替代品。依赖于经典噪声的详细特征的应用程序,如精确的特征大小、值的精确范围或更高阶的统计信息,可能需要进行一些修改,以便在使用单纯形噪声时看起来更好。
斯特凡·古斯塔夫森


只是一些轶事的经验,我使用经典柏林噪声的原因是因为Ken Perlin有一个经典柏林噪声的概念,同时提供了一个改进的柏林噪声的概念。听起来可能很傻,但经典的柏林噪音更容易复制并粘贴到我的程序中,所以我使用了它。我一直打算着手移植那个Java实现,但经典的Perlin似乎工作得很好,所以我从不费心添加它


肯·佩林为他的单纯形噪声算法申请了专利。就我所知,他的经典算法并没有获得专利。

我会直截了当地回答这个问题,我会说,这是因为柏林噪声非常容易让你动脑。另一方面,单纯形噪声是一种更为复杂和复杂的噪声。建立和运行柏林实现比单纯形容易得多,因此得到了更多的使用。这对simplex的情况没有帮助,因为两者在视觉效果上非常相似(特别是在你稍微操纵噪音之后)

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

对表内存的需求:原始的Noise算法依赖于大量的表查找,这在软件实现中是相当合理的,但在硬件实现中是昂贵的,并且构成了成本瓶颈,特别是当需要多个Noise函数实例并行时。理想情况下,噪波实现不应依赖于大量表的存在


单纯形噪音看起来更糟糕,很多人认为它在更高的维度上看起来“越来越糟糕”。对于大多数应用,我仍然推荐它而不是柏林,因为大多数应用不会只使用原始的单纯形,而是它的倍频程,它看起来与柏林的倍频程大致相同,倍频程要快得多。

Hmm,好吧,我将试着用我目前对柏林噪声、单纯形噪声和分数布朗运动的知识来解决这个问题。下面我的观点可能是错误的,所以如果我说的不正确,请纠正我。陈述1:可能是真的,但人们总是可以修改噪声的输出,使其看起来有90度角的方形。声明2:Afaik,fbm使用噪声,无论是柏林噪声、单纯形噪声还是任何其他噪声,它都会产生一层八度音阶。Simplex和perlin只是一种噪音,与层无关。陈述3:与我的答案相同