我可以使用2D Perlin噪声函数来包围我的头来生成高度值,但我不明白为什么会使用3D Perlin噪声函数。在Notch's blog中,他提到使用3D Perlin噪声函数在Minecraft上生成地形。有谁知道这将如何做以及为什么它会有用?如果您传递x
,y
和z
值并不意味着您已经拥有高度?
答案 0 :(得分:43)
文章说明了他使用3D噪音的确切原因:
我使用了2D Perlin噪声高度图... ......但是相反的缺点 沉闷。具体来说,没有办法 这种方法可以产生任何悬垂。
所以我把系统换成了 基于3D Perlin的类似系统 噪声。而不是采样“地面 高度“,我将噪音值视为 “密度”,任何更低的 空气和任何东西都是0 高于或等于0将是 地面。
答案 1 :(得分:13)
嗯,我的世界是关于地雷。所以,Notch试图解决的问题是:“我如何在我的世界中获得漏洞/悬空?”
由于2D perlin噪音会产生漂亮/平滑的山丘,3d perlin噪音会在你的3D体素网格中产生漂亮/平滑的山丘和漂亮的洞。
可以找到here的实现(虽然这是一个N维解决方案)。
在其他用例中,3D perlin噪声的Z分量设置为当前时间。通过这种方式,您可以在不同的2d perlin噪声之间实现平滑过渡,并且可以用作流体纹理的基础。
答案 2 :(得分:5)