那晚我们三个在天台上,真的看见银河了
说起来你可能不信,我们一开始只是想拍几张星星的照片发朋友圈,结果小雅突然指着天空一角说,那边是不是有什么不对劲,我顺着她的手指看过去,一条淡淡的光带横跨天际,像谁在天上撒了一把发光的粉末,那一刻我们三个都安静下来了,连平时话最多的阿澈都没出声。
后来我才知道,那就是银河,在光污染越来越严重的城市边缘,我们居然撞上了这样的运气,小雅说她差点哭出来,我想我能理解那种感觉——当你突然意识到自己有多渺小,又有幸目睹这一切的时候,胸口确实会涌上一股说不清的温热。
我们三个从初中就认识了,阿澈是那种永远在鼓捣奇怪发明的男生,书包里常年装着螺丝刀和电路板,小雅喜欢画画,她的速写本上画满了星星、飞船和长着翅膀的女孩,而我呢,大概是负责把他俩天马行空的想法拉回地面的人,虽然经常失败,初三那年春天,我们在学校科技节上第一次合作,用纸板和旧台灯做了一个粗糙的星空投影仪,那东西摇摇晃晃的,灯泡还忽明忽暗,但当简陋的星座图案投在天花板上时,小雅欢呼着跳了起来,阿澈在一旁得意地搓鼻子,老师给了我们一个安慰奖,可那天下午我们兴奋地讨论了很久,说以后要造一个更厉害的,能把整个银河系装进去。
那个年纪的约定,说起来有点傻,但好像又特别认真。
从纸板投影到真正的星空
后来我们上了高中,各自忙碌,但周末总会找时间聚在一起,阿澈真的开始自学编程和天体物理,他的书桌上堆满了从图书馆借来的书,《大众天文学》和《宇宙的琴弦》被翻得起了毛边,小雅的画风渐渐变了,从童话般的星星变成了更复杂的东西——黑洞吸积盘、星云螺旋、双星系统,她开始研究天文摄影,攒了很久的零花钱买了一台二手赤道仪。
高二那年寒假,阿澈神神秘秘地把我俩叫到学校机房,打开一个他自己写的程序,屏幕上出现了一个旋转的立体星图,可以用鼠标放大缩小,点击任意恒星还能看到它的数据,他说这只是一个开始,他想做一个完整的银河系模拟,把已知的恒星系统都放进去。
“我负责写代码,你负责算数据,”他指着我说,然后转向小雅,“视觉设计就交给你了。”
我们管这个项目叫「飞梦少女银河系」,名字是小雅起的,她说虽然我们三个人里只有她一个女生,但“少女”代表的是那种不顾一切追求梦想的状态,我和阿澈一开始觉得有点羞耻,后来也慢慢接受了,反正是给自己看的东西,叫什么不行呢。
那些深夜里亮着的屏幕
真正的困难从那时候才开始,我们想做的不是那种漂亮的星空屏保,而是一个尽可能精确的天体数据库可视化工具,阿澈从网上下载了依巴谷星表的数据,里面包含超过十万颗恒星的位置、亮度、光谱类型,光是把这些数据整理成能用的格式,就花了我好几个周末,有些数据明显有误,需要对照其他星表修正,小雅则埋头研究不同光谱类型恒星的颜色表现,她画了一套色卡——O型星是蓝白色的,M型星偏橙红,她在纸上反复试了又试才定下来。
我记得有一天凌晨两点,阿澈突然在群里发消息说程序跑通了,屏幕上密密麻麻全是光点,小雅立刻弹了视频通话过来,她穿着睡衣,头发乱糟糟的,但眼睛亮得吓人,我们三个隔着屏幕看着那个还很粗糙的星图,谁都没说话,过了好一会儿,小雅轻声说了句:“好像真的在飞一样。”
那个版本其实很简陋,连基本的视角转动都不流畅,恒星的颜色区分也不明显,更没有星云或者星团的数据,但我们就是觉得特别震撼,因为它不是随便画上去的点,每一个亮点背后都是真实存在的恒星数据,猎户座的参宿四就在那里,天狼星也在,它们的位置和实际天空中一一对应。
那个天台改变了所有
再回到开头说的那个夜晚,那是暑假快结束的时候,阿澈的表哥在郊区有个闲置的房子,我们软磨硬泡借到了钥匙,那里的光污染比市区好很多,小雅带上了她攒钱买的二手赤道仪和相机,阿澈带了笔记本电脑,说是要实地对照他的程序数据。
观测条件其实一般,后半夜起了一点薄云,但凌晨两点多,云散开了一阵,银河就这么毫无预兆地横在了我们头顶,小雅手忙脚乱地调整相机参数,阿澈仰着头发呆,我拿着双筒望远镜扫来扫去,那是我第一次用肉眼看到银河里的暗带,那种黑色不是空的,而是一种有密度的、天鹅绒般的暗,仿佛是尘埃云挡住了后面的星光。
“你们看,”阿澈突然开口,声音有点哑,“那些暗带就是星际尘埃,我们的太阳系也在银河系的盘面上,所以我们看银道面的时候,视线会穿过很多尘埃云。”
“也就是说,”小雅放下相机,“我们现在看到的黑暗,本身就是银河系的一部分,它们不是什么都没有,恰恰相反,它们挡住了太多东西。”
这句话让我愣了好一会儿,后来我想,大概从那时候起,我们的项目有了微妙的变化,之前我们只是在展示星光,现在我们开始想展示那些看不见的东西——暗星云、分子云、银河系旋臂的结构,小雅后来画了一组星际尘埃的视觉设计稿,用的是炭笔加水彩,层层叠叠的暗色中透出隐约的蓝灰,看得我起了一身鸡皮疙瘩。
| 阶段 | 核心问题 | 我们的土办法 |
| 数据整理 | 十万颗恒星数据如何清洗 | 手动对照星表,逐项修正误差 |
| 视角渲染 | 立体空间到二维屏幕的映射 | 参考天文软件,简化算法模型 |
| 色彩还原 | 恒星光谱如何转化为RGB | 建立光谱-色温对照表,手工调试 |
| 尘埃表现 | 看不见的东西如何可视化 | 用半透明噪点层模拟消光效果 |
现在回想起来,很多想法都透着那个年纪特有的莽撞,我们没有专业的天文学背景,写出来的代码现在看来也不够优雅,但我们有一个特别朴素的想法:把真实的天体数据用尽可能直观的方式呈现出来,让看到的人能感受到宇宙的结构感,不是那种华丽的特效,而是你能看到猎户旋臂上恒星确实比别处密集,能看到太阳系在银河系里的位置其实挺偏的,能看到银心方向因为尘埃遮挡而呈现出一片神秘的空缺。
后来呢
高中毕业之后我们去了不同的城市,阿澈考上的是计算机系,小雅进了美术学院,我学的是枯燥的统计学——没想到当年整理星表练出来的耐心还挺管用,项目从高中机房搬到了阿澈的云服务器上,数据量也越来越大,我们陆续添加了疏散星团、球状星团、甚至一些已知系外行星的数据。
小雅去年给整个界面做了重新设计,她说要以“一个人在宇宙中眺望”的视角来呈现,而不是高高在上的上帝视角,她画了一个漂浮在星空中的少女剪影作为视觉锚点,那姑娘长发飘散,脚尖点在一颗小小的蓝色星球上,周围是被星光照亮的尘埃,我和阿澈看到定稿的时候都笑了——这不就是当年天台上的小雅吗?她说才不是,这是「飞梦少女」本尊,是三个人共同的化身。
那个漂浮在银河里的少女,头发飘散在星尘中,脚尖轻轻点在一颗蓝色小行星上,小雅画这张图用了整整两周,她说每一根发丝的位置都要考虑到背后的星光穿透效果,阿澈看了之后沉默了很久,然后把这张图设成了程序启动画面。
数据库一直在更新,算法改了好几版,连底层框架都重构过两次,阿澈有时候会在深夜给我发消息,说发现了某个星团数据的新出处,或者想到了一种更好的尘埃模拟方式,他现在读研,导师的方向是数据可视化,正好能用到我们的项目里,小雅接了一些插画的活,但她总说我们这个东西才是她真正在乎的作品。
我不知道这个东西最后会变成什么样,也许它会一直在三个人的深夜里生长下去,不断加入新的数据、新的视角、新的想法,也许有一天会有更多人看到它,也许不会,但每次我打开那个程序,用鼠标拖着视角在银河里穿行的时候,都会想起天台上的夜晚,想起那条横跨天际的淡淡光带,想起小雅放下相机时认真的表情,想起阿澈用有点哑的声音解释星际尘埃。
猎户旋臂上的恒星真的比别处密集,太阳系在银河系里的位置确实挺偏的,银心方向被尘埃挡住的区域,在我们的程序里呈现为一团有密度的暗色,就像那个夜晚我们看到的那样。
有时候我会在程序里一路飞到银道面的上方,俯瞰整个漩涡结构,然后在旋臂之间找到那个小小的标记——太阳的位置,从那个角度看,我们的整个存在,人类所有的历史和未来,都安放在几条发光旋臂中的一道细细光晕里,阿澈给这个视角起了个名字,叫“飞梦视角”,小雅说这个名字取得好,因为从那个高度看下去,你会忍不住想飞得更远,同时又想回到那个天台,回到一切开始的地方。
