在这个视频中Henrik Kniberg(Minecraft开发人员(展示了生成瘦";面条;2D中的洞穴,其将佩林噪声图上的灰色区域视为洞穴。这就形成了薄而弯曲的洞穴。正如其中一条评论正确指出的那样;在2D中,这是有意义的。但在3D中,它会产生漂浮的石块"于是他回答说:
对于意大利面条&面条洞穴我们取两个脊状的三维噪声并将它们相交。我在视觉上是这样想的:想象两个果皮很厚的空心橙子。这两个桔子在三维空间中略微重叠。只保留两个果皮重叠的部分。这会给你一个厚厚的戒指。使环中空,并应用一些随机性。结果:长而弯曲的隧道。在视频中解释起来有点棘手,但又不让它太长,所以我只展示了2d等价物,从而简化了它。
我不太明白他的意思。我知道";脊状3d噪声";是另一种噪音。但是他将噪声的哪一部分(黑色部分、灰色部分或白色部分(视为"噪声";剥离";用橙色比喻?
我也不太清楚3D脊状噪波是什么样子的。我想我应该尝试使用行进立方体算法来显示它的样子,但我不知道如何实现脊状噪声。有没有一些噪音库(针对C#(可以做到这一点?或者更好的是,是否已经有一个支持脊状噪波的噪波可视化工具?
如有任何解释,不胜感激。
Ridging基本上是@Cadeyrn说:取噪声的绝对值,使范围从[-1,1]到[0,1],零附近的行为形成一种V形。我将在这里提供更多澄清信息。
可以将ridging视为突出显示噪波值接近零的部分。在2D中这样做会创建1D路径,但在3D中,它会产生2D表面,这些表面在整个空间中缠绕——就像一张皱巴巴的纸,永远在继续。您需要返回到1D路径,但要保持在3D路径而不是2D路径。可以这样做的一种方法是将两个具有不同种子的噪波实例叠加在一起,只保留来自2D图纸之间交叉点的1D路径。
我自己的世界世代创作通常会看到noiseA² + noiseB²
用于此目的,但Minecraft的|noiseA| + |noiseB|
也起作用,使面条洞穴具有其特有的墙壁褶皱。
如果你想象一个二维切片在你的世界里上下移动,你不应该总是看到相连的路径。如果你这样做了,这意味着球员总是可以在不改变海拔的情况下看到前进的道路。相反,这样的切片应该显示出独立的水平横截面,因为它穿过可能不是水平定向的洞穴。快速二维可视化:https://www.shadertoy.com/view/stccDB
我也必须指出,这段视频最适合:虽然它阐明了《我的世界》这一代人的具体情况,但它也倒退了,因为它进一步强化了Perlin对噪音的第一心态。Perlin噪声,开箱即用,是平滑和随机的,但会产生强烈的方形偏差,与自然模式复制的目标背道而驰。Perlin是现在更广泛的梯度/相干噪声通用集合中的第一个算法,其中包括较新的单纯形噪声。实际的Perlin算法不一定是当今的最佳选择,因为没有明确的机制来解决其伪影。观看视频,吸收其教义,但对其佩林式的语言持保留态度。我在这里的文章中详细介绍了这个问题。
索具噪声是通过取噪声的绝对值从-1到1来获得的。接近0的操纵噪声区域就是他所说的剥离,如果你把两个操纵噪声相乘,接近0的部分就是两个噪声中接近0的。
编辑:我犯了一个错误:不是取绝对值并将两个噪声相乘,而是从两个正常噪声开始,将它们偏移,使其图像为[-1,1],然后将它们平方并相加。