项目做到一半的时候,我们盯上了一张传得很广的月食蓝带照片:半个圆盘浸在一层浓郁的饱和蓝里。拿这个效果当参照,模型反复跑,怎么都只出淡淡一层青。那段时间真的怀疑是自己漏了什么物理机制。后来回头查了那张照片——作者是一位风光后期教程博主,帖子标题直接就在讲修图流程:HDR 堆栈合成多张原片,再进 HSL 把青色通道的饱和度一路拖到接近霓虹。同一位作者自己也说过,这种蓝裸眼几乎注意不到,非得靠 HDR 才能把那些淹没在暗部里的色彩翻出来。
物理这边的线索指向了另一个方向。GOES-16 气象卫星在月食期间的实测数据,给出的红蓝比在 0.8 到 1.0 这个范围。专业天文摄影未经后期处理的原图里,蓝带也只是贴着月亮边缘的一丝浅青细线。我们没有为了让计算结果靠向那张网红图去改任何物理参数,后来这些实测数据一项一项把事情对上了。
有意思的是,我们自己的模型里确实跑出过浓青色。把太阳当成点光源来算的时候——这当然是简化——模型给出的青带又浓又锐,最蓝处的红蓝比低到 0.41。这种简化在文献里其实有它的传统。处理太阳圆盘这类问题,学术界一种通行的做法是:先用点源近似推导整套公式,最后再加一道几何补偿。 Mallama 2022 关于月食建模的综述,用的就是"for a point source of light"的假设,在点源框架下推完折射公式之后补一道模糊处理作为修正。我跟着这篇论文的方法适配到我们的场景里,结果怎么都不对——本影亮度算出来和观测差了好几个量级。
到最后我们放弃了近似路线,回到更笨的办法:不做公式推导,不做几何补偿,而是对太阳圆盘上的所有点做多重积分。取很多很多点,模拟发出来的很多光线,对每条光线单独追踪折射、散射和吸收。多重积分一跑完,浓青立刻被稀释了——红蓝比从 0.41 退到 0.71,青色变淡,带变宽变软,位置也往内移了。这才是真实月食看到的样子。网红图里那种浓青,在一个点源世界里确实存在,只不过我们的太阳是一个 32 角分的圆盘,它不认这个账。
人眼本身还有一层故事。这条带的绝对色品其实是偏蓝的:不管你怎么调模型——去掉瑞利散射、加上气溶胶、模拟多次散射的回填效果——它都变不成青绿色。人会感觉它偏青偏绿,是因为它旁边铺着一大片暖红的血月。人的视觉系统对暖色调的视野做了色彩适应之后,这条颜色相对偏冷的带就呈现出了青绿色。turquoise 是一个相对色,我们没有为了让它绝对意义上变成青绿往模型里添加任何额外机制。