如果火星现在有空气、有大海,看起来应该是什么样子?

-

自古以来,人们对火星有着各种各样的想像。曾经,有天文学家通过望远镜,看到火星表面上有一些条纹样的东西,于是他在观测结果里,将其称之为「水道」。不过在翻译的过程中,「水道」一词却被误翻译为「运河」。因此,火星上生活着「火星人」这一说法流行了起来:既然是「运河」嘛,那肯定就是由「火星人」开凿的了。英国作家乔治・威尔斯有关火星人入侵地球的小说甚至引起了全美国的恐慌。外加上火星的轨道距地球相近,人们推断火星的气候和地球类似。所以,非常多的人认为火星上存在生命,甚至是「火星人」

由于火星距地球较近,因此人们在探测完月球、金星后,自然而然地把目标定为了火星。然而,美国火星探测器「水手 4 号」却传来了坏消息:火星和月球一样,表面都是坑坑洼洼的荒漠,根本没有什么运河。虽然有大气,但大气极其稀薄。表面由于缺乏空气和液态水,在夜间冰冷无比。在这种环境下,几乎不可能存在生命。于是人们对火星生命及火星人的想像破灭了。

不过,随着探测器一个接一个飞向火星,事情却出现了转机:人们发现,虽然火星现在基本上是一片荒漠,不过有些地方却有明显是水流冲刷所造成的痕迹(见下图)。登陆到火星的探测器也检测到火星土壤有丰富的水含量。人们还发现,火星的极冠处也有相当丰富的水冰。根据水存在的证据,一些人指出,火星曾经有广阔的海洋。不过由于火星没有类似地球磁场的保护,暴露在太阳风下的火星大气越来越稀薄,气压逐渐降低,最终使得丰富的液态水从火星表面消失了。

Branched_Channels_from_Viking

那么,很自然地,产生了一个问题:如果火星要是真有浓密的大气层、有丰富的液态水的话,那么看上去应该是什么样子?

最近在阅读维基百科有关天文学的一些词条,阅读到火星那里时,对这个问题产生了兴趣。于是做一天「民科」,就此问题做了一些「研究」。

-

为了准确模拟火星的地形地貌,在这里,我使用了 Blender 软件来对火星进行建模并渲染出图。建模、渲染过程部分步骤依照 Andrew Price 的教程:Create a Realistic Earth 来做的。下面简单介绍一下大致的步骤。

首先,火星大致比较像一个球体对吧,那么我们首先就从一个球体开始。在 Blender 里新建一个经纬球,把段数和环由默认的 32 和 16 改为 64 和 32,并把显示方式改为「光滑」,来让这个球体看上去不是一个多边形块。接着,给这个球体加上一个「表面细分」修改器,这些的目的是通过提高球面多边形的精度,来尽可能准确地模拟火星地貌情况:

屏幕快照 2014-01-14 下午11.46.02

屏幕快照 2014-01-14 下午11.46.21

屏幕快照 2014-01-14 下午11.47.24

通过查阅类似维基百科这样的资料,可以知道,火星的赤道直径大约 6792.4 KM,从两极测算的直径大概为 6752.4 KM。所以,为方便起见,把球体的 X,Y,Z 大小改为 67.924, 67.924,67.524。更改球体大小后,别忘了使用快捷键 Ctrl+A 来应用缩放,使模型 X, Y, Z 方向的缩放系数均为 1.

还是为方便起见,把球体的视图颜色设置为类似绿色那样的颜色(注意视图颜色并不影响最终的渲染效果),目的是为与海洋的颜色形成对比。

然后,我们知道,海洋、海岸线的形状,主要取决于地形。海洋总是在地势较低的地方形成。接下来的工作,就是给这个光滑的火星模型加上地形效果。如何来达到这个效果呢,可以先找一张高度图,根据这个高度图来决定球体表面细节的凹凸,从而模拟我们这个小星球模型表面的地理状况。

经过一番 Google 后,找到了这样一张图:

MarsHeight

这张图即为用灰度表示的火星表面高度图。颜色越深的地方,表示地势越低,例如右下方的「大黑斑」,就是火星上地势最低的地方,即希腊平原。反之,颜色越浅的地方,则表示地势越高,如左边那个白色的「亮斑」,实际上就是火星的最高峰,也是太阳系的最高峰:两万多千米高的奥林帕斯山。

有了这张图后,要想个办法把这张图按照某种规则映射到火星模型表面上去。这个步骤,可以通过给模型做一个 UV 展开来实现。3D 软件里做 UV 展开,可以理解为剥橘子皮、展开火柴盒这样的事情,即把立体模型的表面按某种规则对应到一个平面上去。这张高度图是按照墨卡托投影法制作的。关于如何在 Blender 里对球体按照墨卡托投影法展 UV 可以参照这个方法来做:How to get perfect UV sphere Mercator projection? 。为节省篇幅,具体怎样做就先略过了。总之,展开完 UV,并做映射后,结果差不多应该是这个样子:

UV Unwarp

球体与高度图的映射关系搞定后,就要实际使用高度图做出地理效果了。在 Blender 里,可以使用置换映射(Displacement Map)修改器,来根据指定贴图的灰度改变模型的几何形状。即浅色的地方让它凸起来,深色的地方让它凹下去。现在,出现问题了:具体要凹下去凸起来什么样的程度呢?我们要做的是尽可能精确模拟火星的地形地貌,因此要避免出现本该是 6000 米高的山峰被模拟为 12000 米的,而本应是 -1000 米深的峡谷被模拟成 -3000 米深这样的差错。

Blender 是这样根据具体多少凹凸效果的: 凹凸量 = (灰度值 - 中值) x 强度。其中,灰度值的取值范围是 [0,1],即全黑为 0 全白为 1. 如果高度图某一点的灰度为 0.4,强度为 1,中值为 0.5 的话,那么可以算出凹凸量为 -0.1, 即该点处要下凹 0.1 个单位大小。如果某一点灰度值为 0.7,强度为 2,中值为 0.4 的话,根据计算那么该点会上凸 0.6 单位大小。由这个公式可见,灰度值小于中值的地方会下凹,大于中值的地方会凸出,并且最大的高度差值正好就是强度的大小。

知道凹凸量的计算方法后,一切就简单了。火星最高点奥林帕斯山与最低点希腊平原之间的高度差差不多正好是 30 千米。而在我们的模型里,单位映射的规则是真实世界的 1 千米 = 虚拟世界的 0.01 单位. 这样,很容易看出,在虚拟世界里,最高处和最低处的高度差为 0.3 个单位。据此,强度我们取 0.3。我们希望灰度大于 0.5 的地方凸出去,小于 0.5 的地方凹下来,因此中值取 0.5。其它方面,纹理我们指定为高度图,方向保持为法线方向不变,贴图座标系改为 UV:

Displacement Modifier

弄好后我们的火星模型就有凹凸效果了:

Bumped-Mars-Model

凹凸弄好后,我们给火星表面加上水看看吧。再新建一个经纬球,作为水面球体来用,通过更改段数和和环并添加修改器,来提升球面的精度。和火星表面模型一样,将着色方式改为光滑。然后把水球大小设为火星表面球体模型的大小,来让洋面「覆盖」火星表面。最好再给水球的视图颜色设置为蓝色。再根据这个大小等比缩放来调整水覆盖到底多少火星表面。注意,由于实际上火星模型的凹凸效果相当细微,因此一点点的缩放,「洋面」的覆盖效果会变化很大,所以在做用缩放调整「洋面」覆盖时,要按住 [Shift] 键来微调。

有人会问,那你怎么知道火星表面上到底要有多少海水覆盖呢?答案很简单:我也不知道,因为至今科学家并没有得到一个公认的结论。所以,把洋面弄多大就看个人喜好了,弄得差不多就行。不过一般认为火星上曾经有的水不少,所以我就把海洋的覆盖面积弄得比较大了:

124892387610

如果火星模型的表面仅仅是纯色的话,多少看上去有些无聊并有些「假」,所以要给火星表面画上贴图纹理。这个步骤可以在 Blender 内置的图像编辑器里做,也可以用 Photoshop 等软件来画。我在 Pixelmator 里用手绘版大致画了这样的纹理,画出了火星上的极地冰原、森林、草地、高峰、苔原、回归线附近的荒漠等等:

67245895

为了让模型看上去靠谱些,也要给海洋画贴图纹理。同样在 Pixelmator 里,我用手绘版简单画了这样的纹理:两极被冰川覆盖,中间为纯海蓝色,毕竟火星轨道半径要比地球大,因此表面温度会低不少,使得极地的冰原覆盖会更广一些:

Watermap

分别给火星地表和海洋球面应用贴图纹理后,切换视图显示方式为「纹理」,看上去应该类似这样:

452671341

对于材质而言,火星地表的材质可以简单使用默认的「漫反射」材质,效果也不错。海洋的材质可以使用漫反射和高光的混合材质,类似这样:

62617836352

如果火星有温暖的大气层,并且有丰富的液态水资源的话,那么天空上一定会有类似地球上的云雾了。所以我们要给我们的星球加上一些云雾。再新建一个球体作为云雾球,把球体的大小调整到比火星略大一些,使云雾能够覆盖火星表面。然后在 Google 里搜关键词 "World cloud map",即可找到以黑白呈现的地球云雾分布图。我们选这样一张来用在映射到我们的这个火星模型上:

australia_clouds_8k

云雾球的材质要这样设置:令云雾图的白色部分显示为白色,黑色部分显示为透明,如图:

61278215

到此为止,模型和材质做的差不多了。剩下的是要准备渲染出图了。删掉场景默认的灯光,新建一个日光光源,光源的强度设置为 2,方向为向下 25 度(即火星「夏至」时的日照角度,也是火星的黄赤交角);摆好相机,令相机正对火星中心;将虚拟世界的背景设置为纯黑色,渲染出图,结果应类似这样:

243652356

这张图有一个很不自然的地方:火星周围没有大气光晕效果。所以为了做到更真实的效果,我们需要手工在渲染出来的图上画上光晕。我把渲染出来的图导入至 Adobe Illustrator,然后使用圆形工具、渐变工具和高斯模糊效果做出了光晕效果:

8563621

好了,大功告成了!最终的效果如下:

result2

这就是火星存在浓密的大气层和丰富的液态水看上去的样子,这个角度看到火星地表上的「裂缝」,是火星表面最大的峡谷:水手大峡谷。

当然,也可以换一个角度来看,即转动一下火星模型。这个角度看到的是火星的最高峰,奥林帕斯山:

62457358

在这里,还是要再罗嗦一句:做出来的最终效果,仅仅是模拟出来的,不代表几亿年前几十亿年前火星真长这样。比如,当时火星上有多少液态水,至今我们无法得知。并且,由于板块运动、火山爆发等地质活动以及陨石撞击,火星现在的地表也肯定与几亿年前相差甚远。并且,火星地表的植被、荒漠也纯粹是靠想像而制作。因此,不要太正经地看待这个模拟结果。

还有,我用的「科研工具」是 Blender, Pixelmator, Illustrator,可能对大多数人来说,都是比较冷门的工具。不过,如果你懂得如何使用 3Ds Max, Maya, Photoshop 这样的工具的话,也很容易做出类似的效果。

-

模拟出火星如果存在浓密大气层和液态水的样子后,就可以据此来想像一下「火星人」的社会了:

  • 火星较地球小的多,并且大陆相对更加集中,因此,火星人的「人种」、民族应该远没有地球那样丰富;
  • 由于火星大陆集中,并且海洋被大量浮冰覆盖,因此相对于地球人而言,火星人的航海技术发展会相对慢一些;
  • 而由于火星重力相对较低,航空技术应相对地球较早出现并发展成熟,航空器的种类应该更为多样化。火星人的远距离出行更多会依赖于航空;
  • 赤道附近,水手峡谷边的陆地更「零碎」一些,这些地方可能会有很多小国、小城邦。水手峡谷为类似地中海一样的内海或内湖,成为火星民族、国家之间的「兵家必争之地」,经常为此而外交纠纷不断,甚至爆发战争;
  • 奥林帕斯山为很多火星民族的「圣山」,奥林帕斯山所在的岛成为火星上的热门旅游圣地;
  • 等等等等……

嗯,就这些了,希望阅读愉快!

-