【新智元导读】一位国外小哥,在GPU上模拟出了四十亿年里地球是如何变换的。看到最后一幕,让人不禁沉默了……
最近,一位外国小哥写了一个程序,在几分钟内,就模拟了一颗类地行星的完整历史。
由于这个地球模拟完全是按程序生成的,没有预先渲染的纹理,因此第一个任务,就是生成该地形的地图。
为了适应这种情况,着色器迭代了五级细节,将大小逐渐减小的陨石坑层层叠加。
为了使陨石坑具有逼真的凹凸不平的外观,小哥在陨石坑中混入了一些分数布朗运动噪音,并按比例调整,使最大的陨石坑对地形的影响最大。
陨石坑本身是在3D网格上生成的,而地表地形则是从网格中划分出来的一个球体。
要计算给定位置上陨石坑的影响,就可以对属于附近网格点的陨石坑进行加权平均,权重随距离中心的距离呈指数递减。
虽然相对简单,但在低洼地区注满水后,这个程序地形类似于科学家认为的早期地球的实际样子:
其中所含的水被热量蒸发,逸出并开始在地球周围形成的早期大气中循环。随着时间的推移和岩石的冷却,水蒸气开始凝结成海洋。液态水在地表流动,在地形上刻画出一道道沟壑,留下了大量沉积物。
随着时间的推移,这些板块的大小会随着一个简单的聚集模型而增长,该模型会随机选择相邻的点,如果这些点还没有被分配到另一个板块中,就会被添加到一个板块中。
板块内的所有像素都会存储板块的移动速度。这种聚合模型类似于扩散限制聚合(但实际并没有扩散):
为避免出现这种情况,板以离散的时间步长移动,横向或纵向均以一个像素为单位。
每个板块的移动时间都是随机的,这样就可以使平均速度保持在设定的速度和方向上,而且相邻板块不太可能同时移动。
当一个板块的一些边界像素移动到以前被另一个板块的像素占据的位置时,就会发生板块碰撞。
虽然这种情况只发生在板块边界的像素点上,但通过简单的热侵蚀模型,这种影响会逐渐扩散到邻近的像素点上,从而将像素点的海拔高度推向其邻近像素点的平均海拔高度方向。
总之,这就形成了对有山脉的大陆很好地模拟(在下一节中,我们会引入水力侵蚀,对模拟进一步改进)——
自然地形的崎岖外观,很大程度上是由河流流域形成的,它们会以我们熟悉的分支模式,来侵蚀着地貌景观。
简单来说,每个像素都会检查与它相邻的八个像素,以确定哪个方向的海拔降低幅度最大(由于对角线上的相邻像素距离较远,因此需要进行调整)。
水流最初通过降雨在各单元之间分配,然后会在每个时间步长内,在相邻像素之间传输。
通过给相连的水道着色(颜色由河口位置决定),就可以制作出令人印象深刻的可视化效果,直接能让人联想到真实的流域图——
模拟整个星球的气候系统是一项艰巨的任务,但幸运的是,它可以相对容易地被近似模拟出来。
在我的气候模拟中,程序生成的平均海平面气压(MSLP)地图,就是一切背后的驱动力。
根据《气候食谱》,生成MSLP图的主要因素,就是地貌在海洋中的位置以及纬度的影响。
事实上,如果从真实的地球MSLP地图中提取数据,根据陆地或海洋的位置将其分开,并绘制 MSLP与纬度的关系图,就会得出陆地和海洋的两条正弦曲线,二者的形状略有不同。
通过适当调整参数,就可以得出了一个粗略的年平均气压模型(此处纬度以度为单位):
当然,这还不足以生成真实的MSLP地图,因为分别生成陆地和海洋的数值,会导致它们之间的边界出现明显的不连续性。
实际上,MSLP会在从海洋到陆地的过渡过程中,发生平稳变化,AG真人娱乐首页这是由于气体压力的局部扩散造成的。
只需对MSLP地图(标准偏差为10-15度)进行高斯模糊处理,就能很好地近似这种气体扩散过程。
考虑到气候会随季节变化而变化,有必要对1月和7月之间的MSLP差异进行建模。
通过调整参数和应用高斯模糊,可以将其与年度MSLP地图相结合,生成全年变化的动态气候模式。
这就需要更多的处理,才能生成真实的数值(season全年在-1和1之间波动)。
风往往从高压流向低压,但在全球范围内,我们还需要考虑科里奥利力,它是导致风在气压带周围环流的原因(grad是MSLP梯度矢量)。
如果仔细观察,你口会发现许多自然现象都被复制了,包括季风季节印度上空的风向逆转:
在现实生活中,这些模式最容易在培养皿中的微生物种群中看到,但同样的规律,也适用于全球的大型动物种群。
随着人类开始燃烧大量化石燃料,为自己的生活提供动力,这种快速扩张带来了一系列变化。
赤道附近的大片土地因为极端温度而变得不适合居住,导致人类从地球上很大一部分地区消失了。
本文为澎湃号作者或机构在澎湃新闻上传并发布,仅代表该作者或机构观点,不代表澎湃新闻的观点或立场,澎湃新闻仅提供信息发布平台。申请澎湃号请用电脑访问。