0

首先对我的英语倾注感到抱歉。

我正在尝试制作具有地形的虚拟世界,就像在 simcity2000 或运输大亨中,地形由瓷砖制成,瓷砖高度不能在瓷砖之间跳跃超过一层,因此没有悬崖。

对于地形生成,我使用的是 perlin\simplex 噪声,但我正在使用它来适应陡峭的斜坡。

我查看了 Open Transport Tycoon 的源代码,在生成地形后,地图上的所有图块都被循环并平滑,只有一个单元的高程。

但这对我来说行不通,因为我的地图会更大,而且我无法通过循环平滑所有地图。此外,不可能仅对地形的可见部分进行平滑处理,因为它会根据从哪个瓷砖平滑开始而有所不同。

我试图编写自己的噪声函数,它返回两个点之间的线性插值值,距离等于这些点的最大高度,这样斜率不能超过 45 度,它有效,但直到你尝试总结这样一起发挥作用。

如何伪随机生成最大 45 度山坡的地形,并以其他方式接近,而不仅仅是平滑一些先前生成的地图?

现在我没有想法,并希望 Perlin 噪声可能有一些可能的选项,如“最大坡度角”,但谷歌并没有帮助我。

4

1 回答 1

0

Perlin 噪声本质上是受斜率限制的,因为每个网格单元内的值都插在四个梯度之间,这些梯度都具有斜率 1/gridSize(或其他一些固定值,具体取决于您的实现)。

如果您生成有限数量的八度音阶,其网格相对于您的图块大小相当宽,您应该能够通过实验找到一个比例因子,以确保最大斜率为 1。

于 2012-02-29T00:11:22.157 回答