如何使用 3D Perlin 噪声函数生成地形?

问题描述 投票:0回答:2

我可以使用 2D Perlin 噪声函数来生成高度值,但我不明白为什么要使用 3D Perlin 噪声函数。

Notch 的博客中,他提到使用 3D Perlin 噪声函数来生成 Minecraft 上的地形。如何做到这一点以及为什么它有用?如果您传递

x
y
z
值,这是否意味着您已经有了高度?

terrain procedural-generation minecraft perlin-noise
2个回答
44
投票

文章确切地说了他使用 3D 噪声的原因:

我使用了 2D Perlin 噪声高度图... ...但缺点是 乏味的。具体来说,没有办法 这种方法可以产生任何悬垂。

所以我将系统切换到 基于 3D Perlin 的类似系统 噪音。而不是对“地面”进行采样 height”,我将噪声值视为 “密度”,任何较低的值 大于 0 的就是空气,以及任何东西 大于或等于 0 将是 地面。


13
投票

嗯,《我的世界》是关于地雷的。所以,Notch 试图解决的是:“如何在我的世界中找到漏洞/悬挑?”

由于 2D Perlin 噪声会生成漂亮/平滑的山丘,因此 3D Perlin 噪声将在 3D 体素网格中生成漂亮/平滑的山丘和漂亮的孔。

可以在here找到实现(虽然这是一个 N 维解决方案)。

在其他用例中,3D perlin 噪声的 Z 分量设置为当前时间。这样,您将在不同的 2d perlin 噪声之间获得平滑的过渡,并且可以用作流体纹理的基础。

© www.soinside.com 2019 - 2024. All rights reserved.