首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >4分钟45亿年!澳洲小哥用GPU模拟地球,3D裸眼震撼

4分钟45亿年!澳洲小哥用GPU模拟地球,3D裸眼震撼

作者头像
新智元
发布于 2021-07-29 02:09:37
发布于 2021-07-29 02:09:37
68300
代码可运行
举报
文章被收录于专栏:新智元新智元
运行总次数:0
代码可运行

新智元报道

来源:网络

编辑:好困 yaxin

【新智元导读】45亿年,从行星撞地球到生命的诞生,地球经过了怎么样的蜕变?一位小哥成功编写程序在GPU上实现了高精度的地球模拟,4分钟内演示了45亿年的历史,足以让人震撼!

45亿年前,地球是什么样子?

一块熔岩?

看过这张模拟图,是不是感觉自己亲眼目睹了45亿年前的地球。

一位小哥编写程序在GPU上实现了高精度的地球模拟,4分钟内演示了45亿年的历史,足以让人震撼!

项目地址: https://www.shadertoy.com/view/XttcWn

代码地址: https://github.com/DokimiCU/mg_tectonic

他表示,自己完全通过GLSL最终着色器编写,模拟刷新时间为60帧/秒。

别急,还有很多。

一览45亿年前地球的演进,原行星——构造板块——水力侵蚀——全球气候——生命诞生。

从原行星开始

原行星是在原行星盘内大小如同月球尺度的胚胎行星。

其中,原行星盘是在新形成的年轻恒星(如金牛T星)外围绕的浓密气体,因为气体会从盘的内侧落入恒星的表面,所以可以视为是一个吸积盘。

根据太阳星云形成的理论,原行星在轨道轻微的扰动下和因此导致的巨大撞击与碰撞下逐渐形成真正的行星。

早期的地球是一颗原行星,温度很高,被小行星撞击的痕迹很重。

由于模拟完全是程序化生成的,没有预先渲染的纹理,所以第一个任务是生成一张地形图。

为了计算出某一经纬度(lat )和经度(lon)上的地形高度(hight),首先要将其转换为三维直角坐标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vec3 p = 1.5 * vec3(
  sin(lon*PI/180.) * cos(lat*PI/180.),
  sin(lat*PI/180.),
  cos(lon*PI/180.) * cos(lat*PI/180.));

由于撞击的小行星有各种不同的大小,因此产生的陨石坑也是如此。

为此着色器在五个级别的细节上进行迭代,将大小不一的陨石坑分层叠加。

为了使陨石坑有一个真实的凹凸不平的外观,它与一些分数布朗运动(fractional Brownian motion)的噪声混合。

同时,按比例对陨石坑的影响力进行调整,从而使越大的陨石坑对地形的影响也越大。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
float height = 0.;
for (float i = 0.; i < 5.; i++) {
   float c = craters(0.4 * pow(2.2, i) * p);
   float noise = 0.4 * exp(-3. * c) * FBM(10. * p);
   float w = clamp(3. * pow(0.4, i), 0., 1.);
   height += w * (c + noise);
}
height = pow(height, 3.);

陨石坑本身是在一个三维网格上生成的,从这个网格上刻出一个球体作为表面地形。

为了避免规律性的生成,陨石坑中心使用哈希函数(hash function)从网格点中得到一个伪随机的集合。

为了计算一个给定位置的陨石坑的影响,对属于附近网格点的陨石坑进行加权平均,其权重随着与中心的距离呈指数下降。

环形山的边缘是由一个简单的正弦曲线生成的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
float craters(vec3 x) {
  vec3 p = floor(x);
  vec3 f = fract(x);
  float va = 0.;
  float wt = 0.;
  for (int i = -2; i <= 2; i++)
    for (int j = -2; j <= 2; j++)
      for (int k = -2; k <= 2; k++) {
        vec3 g = vec3(i,j,k);
        vec3 o = 0.8 * hash33(p + g);
        float d = distance(f - g, o);
        float w = exp(-4. * d);
        va += w * sin(2.*PI * sqrt(d));
        wt += w;
      }
  return abs(va / wt);
}

生成的高度图

虽然看起来有些粗糙,但是在加入一定量的水之后,生成的地形与科学家公认的早期地球面貌相似。

构造板块

中学时期,地理课上的「板块构造说」让我们了解到地球大地构造运动和海陆分布规律是这样来的。

山脉、海沟和大陆地貌的形成需要一个地壳构造活动的模型。

模型将会随机生成板块的种子位置,并产生一个初始速度。

这些板块的大小随着时间的推移而增长,模型会随机选择相邻未分配的点,并将它们添加到板块中。

其中,板块内的所有像素都储存了该板块的运动速度。

板块将以一个像素为单位沿着水平或垂直方向来移动,也就是说以离散的时间步长进行。

每个板块的时间都是随机的,这样就能让其保持在设定的速度和方向上,并且使相邻的板块不会同时移动。

当一个板块的边界像素移动到另一个板块的像素所占据的位置时,就会发生板块碰撞。

这种情况就会产生隐没带(subduction zone),其建模方法是简单地增加碰撞地点的地形高度。

虽然这只发生在沿板块边界的像素上,但通过一个简单的热侵蚀模型,这种影响会逐渐扩散到邻近的像素上,并由此模拟山脉的形成。

‍‍‍‍

水力侵蚀

自然界地形的崎岖不平在很大程度上是因河流而形成的,它们以一种分支模式侵蚀着地貌。

然而对于整个星球来说,地形图的分辨率是相当低的,因此,模型必须能够模拟宽度不超过一个像素的河流。

于是,程序会检查每个像素周围的8个像素,从而确定哪个方向有最大的海拔下降。

这个最大坡度的方向就是水从这个像素流出来的地方。

水最初通过降雨分布在各个单元中,然后在每个时间步长的相邻像素之间进行传输。

侵蚀将依据水流幂律(stream power law)进行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
elevation -= 0.05 * pow(water, 0.8) * pow(slope, 2.);

其中包含当前单元的海拔(elevation)和水量(water),以及水流动方向的坡度(slope)。

海拔的下降是有上限的,这样它就不会低于水的流向。

水流和侵蚀之间的相互作用导致了地形中河流盆地的自然形成。

通过给相连的水道着色(颜色由河口的位置决定),可以让人联想到真实的河流流域地图。

美国的河流流域

全球气候

模拟整个星球的气候系统是一项艰巨的任务,但事实证明,它可以由一个程序化生成的平均海平面压力(MSLP)地图进行近似。

根据「Geoff’s Climate Cookbook」,创建MSLP地图主要是依据地貌在海洋中的位置,以及纬度的影响。

从一个真实的地球MSLP地图上获取数据,并根据陆地或海洋划分位置。

通过绘制其MSLP与纬度的关系图,可以发现陆地和海洋有两条形状略有不同的正弦曲线。

因此,通过适当地调整参数,作者得出了一个粗略的年平均气压模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (land) {
  mslp = 1012.5 - 6. * cos(lat*PI/45.);
} else { // ocean
  mslp = 1014.5 - 20. * cos(lat*PI/30.);
}

当然,这还不足以生成一个真实的MSLP地图,因为分别生成陆地和海洋的数值会导致边界出现明显的不连续。

在现实中,由于气体压力的局部扩散,MSLP会在海洋到陆地的过渡中产生平稳的变化。

这种扩散过程可以通过简单地在MSLP地图上应用高斯模糊(标准差为10-15度)而得到很好的近似。

为了让气候随着季节而变化,则需要对1月和7月之间的MSLP的差异也进行建模。

其中,陆地的数据再次表明,这遵循一个正弦模式。

通过确定参数和应用高斯模糊,并与每年的MSLP地图相结合之后,可以生成全年变化的动态气候模式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (land) {
  delta = 15. * sin(lat*PI/90.);
} else { // ocean
  delta = 20. * sin(lat*PI/35.) * abs(lat)/90.;
}

得到MSLP之后,就可以生成风向和温度了。

这需要更多的计算来产生现实的数值,其中,季节(season)在-1和1之间波动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
float temp = 40. * tanh(2.2 * exp(-0.5 * pow((lat + 5. * season)/30., 2.))) 
             - 15. - (mslp - 1012.) / 1.8 + 1.5 * land - 4. * elevation;

风会从高压向低压移动,但在全球范围内,还需要考虑科里奥利力(Coriolis force)。

它会使风在压力区周围循环,其中梯度是MSLP梯度向量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vec2 coriolis = 15. * sin(lat*PI/180.) * vec2(-grad.y, grad.x); 
vec2 velocity = coriolis - grad;

尽管这是一个相对粗糙的模拟,但它产生了非常真实的风循环模式,例如在印度发生的风向逆转。

降水则可以利用水蒸气从海洋到陆地的风矢量场漂移来模拟。

生命诞生

气候影响着一个星球上生命的分布。

降雨模式和温度变化决定了植物的生长速度。

随着季节的变化,食草动物会迁移到有足够多植被的地区,以维持它们的生存。

而当食草动物在迁徙时,掠食者也会跟着它们。

这些动态都可以用Lotka-Volterra扩散模型来捕捉。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
float dx = plant_growth - c.y; 
float dy = reproduction * c.x - predation * c.z - 1.; 
float dz = predation * c.y - 1.; 
float dt = 0.1; 
c.xyz += dt * c.xyz * vec3(dx, dy, dz);

其中,xyz元素分别代表植被、食草动物和食肉动物的种群。

在更大的尺度上,动物种群的动态会发生十分有趣的变化。

在现实生活中,这类模式可以在培养皿中的微生物种群中看到。

而这种规律也同样制约着全球的大型动物种群。

参考资料:

https://www.shadertoy.com/view/XttcWn

https://github.com/DokimiCU/mg_tectonic

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【月球殖民靠AI】神经网络发现7000个新陨石坑,人类2030年或找到月球定居点
【新智元导读】最近,美国和加拿大的研究人员用人工智能发现了月球上近7000个此前未被发现的陨石坑,仅用时几个小时。未来,人类将有可能在这些陨石坑巨大的阴影下建立月球基地。 人类离开地球后的第一个家园可能很快就会被找到。 最近,美国宾夕法尼亚州立大学的Ari Silburt和加拿大多伦多大学的Mohamad Ali-Dib领导的研究小组,利用人工智能发现了月球上近7000个此前未被发现的陨石坑,仅用时几个小时。 专家说,未来,人类可以在陨石坑巨大的阴影下建立月球基地,这样可以保护殖民者免受太阳辐射的危险
新智元
2018/03/22
7140
【月球殖民靠AI】神经网络发现7000个新陨石坑,人类2030年或找到月球定居点
基于传统方法的单目深度估计
单目深度估计一直以来都是计算机视觉领域中的一项非常具有挑战的难题。随着计算机技术、数字图像处理算法和深度学习等技术的发展,常用的单目深度估计算法大概可以分为以下几类:基于线索的和机器学习的传统方法、基于有监督的深度学习方法和基于无监督的深度学习方法。
计算机视觉
2021/12/27
1.9K0
基于传统方法的单目深度估计
为什么 AI 工程师,更有机会成为下一个超级英雄?
在漫威世界里,数十个超级英雄擅长着不同的技能,有装备无敌的钢铁侠,有格斗超强的黑寡妇,还有灵活自如的蜘蛛侠,他们在一起保护着地球免遭一次次天降厄运。
HyperAI超神经
2019/12/01
4330
为什么 AI 工程师,更有机会成为下一个超级英雄?
Honeybee机器人与NASA的不期而遇怎样改变世界?
曾经有许多个夜晚,Honeybee机器人的联合创始人兼主席Stephen Gorevan在自己纽约的家中的熬夜计划NASA正在探索火星的两个漫游车下一天的活动。这个工作非常紧张,不容许发生任何的错误,并且需要在很短的时间内完成。但是当他有时间回顾时,Gorevan才意识到他所做的事情是多么的有意思。 Honeybee为NASA完成了超过90个项目,包括其第一个进入太空的产品,岩石磨损工具(RAT),这是第一台获取火星内部岩石的机器。它们被安装在了火星漫游车“勇气号”和“机遇号”的机械臂上。这对漫游车在火星上
机器人网
2018/04/12
5390
摘下月亮送给爱人?AstroReality用AR技术帮你实现
不能去外太空摘月亮,但我们还有AR。 现在,情歌里写的“摘下星星送给你”、“月亮代表我的心”等诺言AstroReality公司可以帮你实现了。该公司推出一种全新的增强现实体验,可以让“月球”成为你们的私密空间。 月亮远在天边,这家初创公司是如何打造月球的呢?AstroReality想了一个妙招,首先使用3D打印技术建立起一个大约一磅重的球体,再通过详细的NASA月球轨道数据,让月球表面在一磅重的球体上重现。 据AstroReality的详细介绍,该球体采用市场上最准确的3D打印技术来制造,这意味着它是用月球
镁客网
2018/05/29
6070
特斯拉、微软、谷歌、Meta等大厂传裁员;AMD与英特尔CPU被曝恐存在内核内存漏洞,缓解措施将增加12%-28%的计算成本
AMD与英特尔被爆CPU恐存在内核内存漏洞,缓解措施将增加12%-28%的计算成本 近日,苏黎世联邦理工学院研究人员发现,英特尔和AMD 的部分微处理器易受新发现的推测性执行攻击,从而泄露密码数据和其他敏感材料。该攻击被命名为Retbleed,源于2018年推出的一个减轻推测性执行攻击的retpoline 软件防御机制。 Retbleed 的原理在于,使用基本上毒化 CPU 赖以进行猜测的分支预测单元代码。当 CPU 遇到直接或间接指令分支时,推测性执行攻击会预测其将收到的下一条指令地址,并在预测被确认之前
AI科技评论
2022/07/19
5900
特斯拉、微软、谷歌、Meta等大厂传裁员;AMD与英特尔CPU被曝恐存在内核内存漏洞,缓解措施将增加12%-28%的计算成本
悬赏17万:美国“知乎”的沙雕问题,需要AI来识别
比赛内容之一,就是让AI识别出建立在虚假前提上的问题,简称虚假问题 (Insincere Questions) 。
量子位
2018/12/13
4730
悬赏17万:美国“知乎”的沙雕问题,需要AI来识别
最近做的流水账 | 闲聊扯淡
最近做的东西吧都比较琐碎,很难整理成一个固定的体系给大家分享,所以就有了今天这篇文章。
逮虾户
2022/03/06
2930
小哥凭“量子速读”绝技吸粉59万:看街景图0.1秒,“啪的一下”在世界地图精准找到!
明敏 金磊 发自 凹非寺 量子位 | 公众号 QbitAI 一张图在你眼前闪过0.1秒,是什么感觉? “我看到过它???” 但有人,只看了一张街景0.1秒,就能在世界地图上快速锁定它的位置! 只见图片一闪而过,我还没反应过来发生了啥。 结果小哥直接把地图拉开,行云流水一通操作,找到了它就在斯里兰卡! 再慢放看看,这上面不就是几棵树和一条土路吗?? 还有这种看上去极为普通的马路,貌似出现在哪个大洲都很有可能。 但这位小哥立马能判断出它在澳大利亚北部。 这效果,怎么有股量子速读那味儿了? 而凭借着这
量子位
2022/06/27
5940
小哥凭“量子速读”绝技吸粉59万:看街景图0.1秒,“啪的一下”在世界地图精准找到!
嫦娥四号传回“旅行照”,全球首张照片值得一声“哇”!
其实,在传回照片的前一天,玉兔二号还调皮的发了一条朋友圈,称“今天,我有点想家。”,随后,便向“家里”发送了一张“旅行照”。
镁客网
2019/01/24
3930
嫦娥四号传回“旅行照”,全球首张照片值得一声“哇”!
1%大气密度也能飞?NASA把无人机送上火星,最具野心探测计划启动
7 月 30 日,在美国宇航局 NASA 成功发射的 MARS 2020 任务中,「宇宙神 5」型运载火箭将最新一代火星探测器毅力号 (Perseverance)送上轨道。
机器之心
2020/08/04
4140
每周分享第 31 期
欢迎投稿,请前往 GitHub 的 ruanyf/weekly 提交 issue。
ruanyf
2018/12/13
6020
每周分享第 31 期
《AI赋能星际探索:机器人如何开启宇宙新征程!》
在人类对宇宙无尽的探索中,空间探索任务始终充满挑战。从遥远星球的探测,到空间站的维护,每一项任务都需要高精度、高可靠性的操作。人工智能(AI)的迅猛发展,为空间探索机器人带来了革命性的变革,使其能够在复杂的宇宙环境中更高效、精准地完成任务。
程序员阿伟
2025/02/24
1840
下次登月,让机器猩猩上 !
有没有可能下一次月球任务就是让一只机器猩猩登月,这是它的一小步,却是所有机器人的一大步? 科学家们又一次对探月来了兴趣,尤其是对上面的氦-3同位素感兴趣,人们认为月球上的这个元素储量很大,可能有一天
机器人网
2018/04/19
8380
下次登月,让机器猩猩上 !
下一次火星任务,中国要放飞自己的无人机
来源:机器之心  本文约2000字,建议阅读5分钟 无人机将成为火星车的「导游」。 火星只有地球 1% 的大气密度,但以后火星车要是不带个无人机可能就显得不够先进了。 提到火星无人机,你可能会想起搭乘「毅力号」前往火星的「机智号」无人机。今年四月,在世人瞩目下,机智号完成了持续约 40 秒的火星首飞,在垂直上升 3 米后,执行了悬停、下降和着陆等所有设定动作。机智号创造了人类在火星上的「莱特兄弟时刻」。 在地球以外的行星放飞无人机除了工程技术方面的意义,还会对探索带来很大帮助,实际上国内关于火星无人机的研
数据派THU
2023/03/29
2520
下一次火星任务,中国要放飞自己的无人机
马太效应和幂律分布是怎么回事?终于有人讲明白了
导读:描述“富者愈富,穷者愈穷”的马太效应,以及经济学中的帕累托法则,其背后的数学模型是什么?在统计学中,它们可以被抽象成幂律分布。
IT阅读排行榜
2020/08/07
1.6K0
马太效应和幂律分布是怎么回事?终于有人讲明白了
人类首次行星防御实验成功:NASA这一撞,改变了一颗星球的轨道
机器之心报道 编辑:泽南、小舟 这一集我在《独行月球》里看过。 北京时间今天早晨 7 点 14 分,人类主动用飞行器改变了一颗小行星卫星的轨道。 根据陨石撞击说,大约 6500 万年前,一颗直径 10 公里,体积相当于一座中等城市大小的小行星从天而降。它在地球上撞出一个巨大的深坑,导致山洪爆发、气温骤降,地球因被灰尘笼罩而终年不见阳光。当时的「地球霸主」恐龙无法适应这强烈的环境变化,最终灭绝。 这是一个被人广为知晓的猜想,实际上撞地球的天体并不是几千万年才有一次:每年都有大量小行星撞向地球,绝大部分都在地
机器之心
2022/09/27
4680
人类首次行星防御实验成功:NASA这一撞,改变了一颗星球的轨道
波士顿机器狗将比马斯克先登上火星?「恢复算法」加持,跌倒了还能爬起来!
---- 新智元报道   来源:NASA 编辑:小匀 【新智元导读】在登陆火星这件事上,人类可能要落后「狗狗」了?近日,NASA和加州理工学院的研究人员展示了「火星犬」,这只机器狗由波士顿动力的Spot改进而来,并一系列配备了AI和传感设备,比起好奇号、毅力号等火星探测器,这只「火星犬」不仅体型小、速度快,还更利于探测火星的险恶地形和地下洞穴。 估计就连天天做火星梦的马斯克都想不到,「狗」可能会比人更快一步,登陆火星。 在12月14日在线举行的美国地球物理联盟(AGU)年会上,NASA和加州理工学院
新智元
2023/05/22
3820
波士顿机器狗将比马斯克先登上火星?「恢复算法」加持,跌倒了还能爬起来!
嫦娥一号的月球照片是真的吗?
很快就有网友质疑,这张照片可能是假的,因为它同Google Moon上的照片简直是一模一样。但是,一位加拿大华侨发现,两者有一个地方是不一样的,就是上图中黄色箭头所指向的那个陨石坑,美国的照片上是没有这个坑的。
ruanyf
2018/09/21
1.5K0
美国登月技术退步了?50年前就能载人着陆,怎么现在只能带着史努比绕一圈
杨净 明敏 发自 凹非寺 量子位 | 公众号 QbitAI 明明半个世纪前人类就已经登月了… 为什么NASA打着“重返月球”的旗号折腾了这么老长时间,最新进展还只是带着假人绕月飞行? 北京时间今晚8点,承载着阿耳忒弥斯计划的SLS火箭,将在肯尼迪航天中心发射升空,整个飞行旅程为期42天。 一旦发射成功,就意味着阿波罗时代之后,NASA再度重启登月计划,预计在2025年完成登月。 当然,前提是在理想的情况下。 毕竟在此之前,光是SLS就推迟了至少16次。 据NASA前副局长透露,即使屡次延期且追加预算,也未
量子位
2022/08/31
3560
美国登月技术退步了?50年前就能载人着陆,怎么现在只能带着史努比绕一圈
推荐阅读
【月球殖民靠AI】神经网络发现7000个新陨石坑,人类2030年或找到月球定居点
7140
基于传统方法的单目深度估计
1.9K0
为什么 AI 工程师,更有机会成为下一个超级英雄?
4330
Honeybee机器人与NASA的不期而遇怎样改变世界?
5390
摘下月亮送给爱人?AstroReality用AR技术帮你实现
6070
特斯拉、微软、谷歌、Meta等大厂传裁员;AMD与英特尔CPU被曝恐存在内核内存漏洞,缓解措施将增加12%-28%的计算成本
5900
悬赏17万:美国“知乎”的沙雕问题,需要AI来识别
4730
最近做的流水账 | 闲聊扯淡
2930
小哥凭“量子速读”绝技吸粉59万:看街景图0.1秒,“啪的一下”在世界地图精准找到!
5940
嫦娥四号传回“旅行照”,全球首张照片值得一声“哇”!
3930
1%大气密度也能飞?NASA把无人机送上火星,最具野心探测计划启动
4140
每周分享第 31 期
6020
《AI赋能星际探索:机器人如何开启宇宙新征程!》
1840
下次登月,让机器猩猩上 !
8380
下一次火星任务,中国要放飞自己的无人机
2520
马太效应和幂律分布是怎么回事?终于有人讲明白了
1.6K0
人类首次行星防御实验成功:NASA这一撞,改变了一颗星球的轨道
4680
波士顿机器狗将比马斯克先登上火星?「恢复算法」加持,跌倒了还能爬起来!
3820
嫦娥一号的月球照片是真的吗?
1.5K0
美国登月技术退步了?50年前就能载人着陆,怎么现在只能带着史努比绕一圈
3560
相关推荐
【月球殖民靠AI】神经网络发现7000个新陨石坑,人类2030年或找到月球定居点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验