Perlin \分形噪声在值之间只有一个单位跳跃

时间:2012-02-28 23:44:57

标签: perlin-noise

首先抱歉我的英语。

我正在尝试使用地形制作虚拟世界,就像在simcity2000或运输大亨一样,地形由瓷砖制成,瓷砖高度不能在瓷砖之间跳过多层,所以没有悬崖。

对于地形生成,我使用的是perlin \ simplex噪音,但是我已经开始使用它了。

我已经看了一下Open Transport Tycoon的源代码,在地形生成之后,地图上的所有图块都会循环并平滑,只有一个单位的高程。

但它对我来说不会这样,因为我的地图会变得更大,我无法通过循环平滑所有这些。此外,不可能仅平滑地形的可见部分,因为它将根据从哪个平铺平滑开始而不同。

我试着编写自己的噪声函数,它在两点之间返回线性插值,距离等于这些点的最大高度,斜率不能超过45度,但是直到你尝试总结这些功能。

如何伪随机生成山坡最多45度的地形,除了平滑以前生成的地图之外,还可以采用其他方法?

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

1 个答案:

答案 0 :(得分:0)

Perlin噪声具有固有的斜率限制,因为每个网格单元内的值都在四个梯度之间进行插值,这些梯度都具有斜率1 / gridSize(或根据您的实现方式的其他固定值)。

如果您生成的有效数量的八度音程相对于您的磁贴大小具有相当宽的网格,您应该能够通过实验找到一个缩放因子,以确保最大斜率为1.