我可以使用 2D Perlin 噪声函数来生成高度值,但我不明白为什么要使用 3D Perlin 噪声函数。
在 Notch 的博客中,他提到使用 3D Perlin 噪声函数来生成 Minecraft 上的地形。如何做到这一点以及为什么它有用?如果您传递
x
、y
和 z
值,这是否意味着您已经有了高度?
文章确切地说了他使用 3D 噪声的原因:
我使用了 2D Perlin 噪声高度图... ...但缺点是 乏味的。具体来说,没有办法 这种方法可以产生任何悬垂。
所以我将系统切换到 基于 3D Perlin 的类似系统 噪音。而不是对“地面”进行采样 height”,我将噪声值视为 “密度”,任何较低的值 大于 0 的就是空气,以及任何东西 大于或等于 0 将是 地面。
嗯,《我的世界》是关于地雷的。所以,Notch 试图解决的是:“如何在我的世界中找到漏洞/悬挑?”
由于 2D Perlin 噪声会生成漂亮/平滑的山丘,因此 3D Perlin 噪声将在 3D 体素网格中生成漂亮/平滑的山丘和漂亮的孔。
可以在here找到实现(虽然这是一个 N 维解决方案)。
在其他用例中,3D perlin 噪声的 Z 分量设置为当前时间。这样,您将在不同的 2d perlin 噪声之间获得平滑的过渡,并且可以用作流体纹理的基础。