利用细胞自动机生成地形

在我的世界模拟中,每个单元仅代表一小块土地,而每个时间步的问题是该土地是否会受到侵蚀:其高度是否会降低。 因此,这些规则是地质过程的粗略近似,这是非专业人士所猜测的。 在另一篇文章中,我将详细描述所有不同的规则,但在这里,我将带您逐步了解制作一个小岛的过程。

产生一个岛屿

在侵蚀模型起作用之前,它必须有所削弱:我们必须从一些高高的土地开始。 为了进行测试,我使用了几种快速而肮脏的方法。

第一步是制作一个高度值的渐变,从0到100。端到端放置两个渐变会产生一个较长的凸脊。 在此之上添加另一个山脊,但以直角转弯,将得到一个体面的小山(在拐角处有少量水):

接下来,我们可以将这个正方形变成一个圆形岛。 首先,我通过一个非常简单的规则通过运行侵蚀模型来刻掉土地:与海(或边缘)相邻的任何瓷砖都会腐蚀1%。 这形成了陡峭的悬崖,所以我进行了简单的风化处理以软化它们。

这是这种风化作用的规则。 对于每个单元,测量到最低相邻单元的距离。 然后生成一个5到10之间的随机数。如果该随机数小于下降点,则侵蚀地。 这意味着坡度不会腐蚀,陡坡总是会腐蚀,中等坡度可能会腐蚀。

添加地形功能

我们的山丘太规则了,因此第三步是增加一些可变性。

我们将从随机噪声产生的一些中等规模的特征开始。 佩林噪声是其中一种,可以很容易地缩放以形成巨大的土丘和低谷或非常细的纹理。 对于许多土地产生者来说,这是唯一使用的方法,但我认为最好将其作为补充,因为它无法绘制出逼真的山脉或其他大型特征。

在这里,我添加了一层噪声,用于向上或向下调整基本高度。

接下来,我在侵蚀模型的另一轮运行中添加了一些细粒度的纹理:但是“规则”只是每个循环中腐蚀的随机机会。

水文

所有这些都是为了准备有趣的部分:将河流和湖泊带到岛上。 大多数简单的地形生成器都不会被水打扰,这可能是因为这是增加复杂性的重要因素。 但是结果是值得的:不仅可以自己获得河流和湖泊,还可以得到由水引起的侵蚀-这产生了看起来更有趣的中等比例特征。

基本思想是分别跟踪覆盖地面的水层,让水流下坡,然后侵蚀流量非常大的土地。 这是经过大量水基侵蚀后的岛屿外观:

如果我们在不断发现水的地方贴图,我们可以显示河流(浅蓝色)和更深的湖泊(中蓝色):

现实情况是,该海岸有多个低洼地区,而且一条主要的河流系统从未大量排水,这表明是湿地或浅湖。

尽管仍有很大的改进空间,但我认为它显示出很大的希望。 通过使用元胞自动机(而不是自上而下的方法),可以很容易地实现和测试易于理解的规则。 无需过于复杂,就可以在家用计算机上生成非常好的地形。

未来的一些文章将详细介绍细胞自动机编程,水文模型,并尝试产生整个行星。