从一块 2.8 英寸的树莓派屏幕,到 macOS 上的 PocketEarth。

 

不知道你有没有过这样的时刻:盯着电脑屏幕工作了很久,偶然抬头望向窗外,才意识到外面的世界一直在悄然变化。地球另一端正在迎来日出,太平洋上空的云系缓慢推移,极圈附近或许正发生着一场地磁暴,而国际空间站正以每秒 7.66 公里的速度从某个角落掠过。

这些事情每时每刻都在发生,只是困在屏幕前的我们很少感知到。我一直觉得,如果能把这样一个持续运转的真实世界,以一种足够克制、不打扰人的方式放在桌面上,应该会很有意思。

于是有了 PocketEarth。它是一颗由真实 UTC 时间、卫星云图、空间天气预报与轨道数据共同驱动的数字地球。最近,我把它从最初的树莓派小屏幕完整移植到了 macOS,并正式开放了 TestFlight 公测。

一切始于一块 2.8 英寸的屏幕

PocketEarth 最初并不是一个 Mac 应用,它源自我们之前折腾的一个硬件小项目:用 Raspberry Pi Zero 2 W 驱动一块 2.8 英寸的小屏幕,做一台放在桌角的小型桌面终端。

在尝试往上塞各种显示内容时,我逐渐冒出一个念头:与其让这块屏幕像大多数桌面摆件那样显示时间、天气或 CPU 占用率,为什么不让它成为一扇观察地球的窗口?

但真动手写起来,受限立马就来了。树莓派 Zero 2 W 的图形性能相当拮据,而我又不想妥协成一个只会贴图自转的低精度球体。我想看到有层次的大气散射、自然的晨昏交界、入夜后的城市灯火,以及在极地边缘若隐若现的极光——而且,这些画面绝不能是预先渲染好的循环视频。

最初的渲染器是用 C 和 OpenGL ES 写的。为了在极其有限的 GPU 算力和内存预算下跑出流畅的帧率,我们花了大量时间去抠纹理格式、着色器(Shader)和数据更新管线。也是在这个死磕硬件极限的过程中,PocketEarth 的调性慢慢清晰了起来:它应该是一件精密的数字地球仪,而不只是一个漂亮的 3D 模型。

让真实世界参与画面的生成

做完树莓派版本后,我发现,PocketEarth 最让我着迷的地方,倒不是地球渲染得有多写实,而是屏幕里的每一处光影变化,都与此时此刻的真实世界保持着某种隐秘的同步。

最基础的是光影。太阳的直射位置严格按照当前的 UTC 时间计算,晨昏线会随着真实时间一秒一秒地缓慢推进。当你在屏幕前看到欧洲大陆逐渐没入黑夜、或是东亚沿海迎来黎明时,它与窗外真实的昼夜节律是完全一致的。

在此之上,我们接入了多维度的观测与预报数据。云层来自近期的 EUMETSAT 卫星影像,随着数据定期轮询,你能看到台风眼或锋面云系的真实演变,而不是同一张静态云图日复一日地打转;极光带由 NOAA SWPC 的空间天气预报驱动,当太阳风引发地磁活动增强时,极区的绿光范围也会随之扩张;雷暴区则基于 ECMWF(欧洲中期天气预报中心)的气象模式数据,用来标记全球可能正在发生雷暴的区域。此外,画面里还加入了国际空间站(ISS)、天宫空间站和哈勃望远镜,它们的位置完全由 CelesTrak 提供的 TLE 轨道根数结合本地的 SGP4 算法实时推算,即便断网,也能依靠物理规律在各自真实的轨道上飞行,待联网后再自动校准误差。

PocketEarth 并不打算做一套严肃的气象科研工具,它更想做的,是在尊重物理与数据含义的前提下,把庞大冰冷的卫星遥测数据,转译成一种安静、直观的视觉体验。

当它来到 Mac

搞定树莓派版本之后,我开始好奇:如果彻底摆脱 2.8 英寸小屏幕和嵌入式 GPU 的束缚,这颗地球能呈现出什么质感?

于是我们用 Objective-C、C 和原生 Metal 重构了 macOS 版本。算力解放之后,我们终于有余力去打磨更细腻的体积感云层、大气瑞利散射、海面上的太阳镜面反射(Sun Glint)以及夜晚城市的微光。如果你使用的是支持 HDR 的 Liquid Retina XDR 屏幕,极光与受光面的高光可以激发出超越普通 SDR 的动态范围,而周边的仪表与文字依然保持在克制的暗部亮度。

Pocket Earth在macOS上的实机动态壁纸截图(精密仪表模式)

尽管画面精细了许多,我依然很警惕它变成一个“喧宾夺主”的应用。为此,PocketEarth 只保留了两种界面模式:

  • Zen(静观模式):隐去所有文字与标尺,桌面上只留下地球、大气与深空。
  • Chronometer(精密仪表模式):在地球外围加入一圈致敬天文仪器与机械腕表的极细刻度环,用等宽字体在四角克制地标注 UTC 时间、太阳赤纬与卫星轨道参数。

这两种模式追求的其实是同一件事 -- 让数据成为画面构图的一部分,而不是把一堆突兀的 UI 面板糊在地球上。

除了常规窗口,你可以直接将 PocketEarth 设为 macOS 的动态桌面壁纸,静静运行在桌面图标底层。当你想换个角度看看地球另一端时,只需在桌面上按住 Option 键并拖动鼠标。这里有一个我很在意的交互直觉:移动的是你的镜头,而不是地球。 无论你如何旋转观察视角,地球本身的自转与昼夜交替依然严格锚定在真实的 UTC 时间轴上,不会因为你的拨动而打乱节奏。

当然,作为一个每天挂在后台的桌面应用,功耗和发热是绕不开的硬指标。我们在底层做了严格的遮挡检测与休眠机制:当你的桌面被全屏应用或超过 99% 的窗口覆盖时,或者遇到锁屏、系统睡眠,渲染管线会自动挂起以节省算力;同时内置了 30 fps 的节能模式(Energy Saver),拔掉电源使用电池时也能安静地待在后台,不会让你的 MacBook 莫名发烫。

我想做的不是另一张动态壁纸

开发 PocketEarth 的过程中,我常在想:为什么我们愿意花心思去折腾电脑桌面?或许是因为面对一块每天要盯上八九个小时的屏幕,除了追求生产力,我们也需要一点能让自己短暂抽离的呼吸感。

市面上有很多精美的动态壁纸,但比起循环播放一段预设好起承转合的 4K 渲染视频,我更偏爱 PocketEarth 这种“没有剧本”的陪伴。你打开电脑时地球是什么样,它就呈现什么样。也许今天碰巧能遇上一场强烈的极光爆发,也许只是平淡无奇的一天,厚重的云层安静地覆盖着太平洋。

甚至在大多数时候,你盯着它看上好几分钟,都察觉不到肉眼可见的位移。但我反而很喜欢这种近乎静止的缓慢——因为真实的星球本就是以这样的尺度在呼吸的。

从最初那块 2.8 英寸的树莓派屏幕,到现在精细的 Mac 视网膜桌面,改变的只是显示容器,那个“在桌面上开一扇看地球的窗”的想法始终没变。

开放 TestFlight 公测

目前,PocketEarth for macOS 已经通过 Apple 审核并开启 TestFlight 公开测试。应用完全免费,无需注册账号,也没有任何用户行为追踪或隐私收集;公测打磨完毕后,正式版同样会免费上架 Mac App Store。

  • 公测获取与官网:https://pocketearth.app
  • 系统要求:配备 Apple Silicon(M 系列芯片)的 Mac,系统版本需为 macOS Tahoe 26 或更新版本。

这依然是一个处于早期阶段的独立开发项目。我非常希望能听到少数派的朋友们对于画面细节、Option 拖拽交互手感、长续航下的功耗表现以及多显示器外接场景的真实反馈。

如果 PocketEarth 能让你的桌面多出一点不同于常规壁纸的秩序感,或者在赶工的间隙让你偶尔想起,我们正生活在一颗不断运转的星球上,那它就找到了存在的意义。