撰写了文章 发布于 2020-03-10 09:36:40
【奇幻地图程序生成(三)】生物群落
在上一篇我们绘制出了手绘风格的山,有了山之后就容易决定地形了,但地图上除了山之外,肯定还有什么别的东西,比如森林,草原,沙漠吧。这些统称为生物群落(Biome),生物群落的状态很大程度上取决于温度与降水量,这种关系通常用Whittaker来表示,如下图
要生成温度非常简单,赤道上热一些,两级冷一些。
但降水量就复杂一些,如果仍然使用噪音生成,那么就会出现非常奇怪的事情:大山深处的小块灌木丛,沙漠旁的雨林。于是我们可以采用一个非常简化的模型:水分从海洋中蒸发成为水蒸气,被风吹到陆地上,并在适当的情况下降雨。
这种模型的关键就是风,实际的风模型很复杂,但这里我们只需关心地形对风的速度和风向的影响。所以我们继续简化模型。
对于速度来说,就是风在遇到上坡时变慢,遇到下坡时变快。
对于方向来说,就是风在遇到上坡时,部分风会转向吹向其他方向,而下坡时,其他方向的风会汇合过来。
下图中的红色箭头代表着风向和风速。风从海面上吹起,经过岛屿时变慢,最终在岛屿背后形成风速很慢的区域。
这样高大的山脉会阻挡风,而平缓的低地时常有风吹过。
接下来就是降水了。从东边吹来的信风,吹过平原时,会时不时地降水下来,遇到高山而无法跨过的时候,降水量大增,风会携带着水蒸气沿着山脉移动,造成了连片的高降雨量地区。而高山的另一面降水量剧减。下图的蓝色部分代表着降水量。
而生物群落分布如下,与降水量一一对应
注意上图的人类定居点,也就是黑白圆点。人类不会在非常潮湿和非常干旱的居住,所以人类定居点一般在湿度合适,也就是上图浅绿处。如果信风从南边吹来,那么人类的定居点也会相应改变。
但实际对于Voronoi生成的地形来说,由于红箭头代表风会经常分裂,汇合,需要大量的计算。因此也可以改用六边形网格来生成地形。
好了,现在我们地图也算是有山有水了,但具体的森林与草原应该是什么样子呢?请见下一篇。