likes
comments
collection
share

大气散射(三)Rayleigh散射的数学

作者站长头像
站长
· 阅读数 3

一、介绍

在先前的教程中,我们推导了一个方程,为着色器中的大气散射提供了一个良好的框架。然而,我们忽略了一个事实,即单个方程不会产生可信的结果。如果我们想要一个看起来不错的大气着色器,我们必须提升我们的数学水平。

光与物质之间的相互作用非常复杂,没有简单的方法可以完全描述它。建模大气散射实际上非常困难。问题的一部分源于大气不是一个均匀的介质。大气的密度和组成都随着海拔的变化而显著变化,几乎不可能提出一个“完美”的模型。

这就是为什么科学文献提出了几种散射模型,每一种都设计用来描述在特定条件下发生的光学现象的子集。行星展现出的大多数光学效应可以通过考虑两种不同的模型来重现:瑞利散射米氏散射。这两种数学工具可以预测光在不同大小的物体上的散射方式。前者模拟了光如何被构成大部分空气的氧气和氮气分子反射。后者模拟了光在悬浮在较低大气中的较大化合物上的反射,如花粉、灰尘和污染物。

瑞利散射使天空呈现蓝色,日落呈现红色。米氏散射使云朵呈现白色。如果你想了解更多,我们将不得不更深入地探讨散射的数学原理。

二、瑞利散射

光子碰到粒子后会发生什么呢?要回答这个问题,首先需要以更正式的方式重新定义它。让我们想象一束光线穿过空旷的空间,突然与一个粒子碰撞。这种碰撞的结果根据粒子的大小和光的颜色而有很大的变化。如果粒子足够小(比如原子和分子),那么光的行为最好通过瑞利散射来预测。

发生的情况是一部分光继续其旅程而不受影响。然而,原始光的一小部分与粒子发生相互作用,并在所有方向上散射。然而,并非所有方向都会受到相等数量的光照。光子更有可能直接穿过粒子或者被弹回。相反,光子被偏转90度的可能性较小。这种行为可以在下面的图示中看到,蓝线显示了散射光的首选方向。

大气散射(三)Rayleigh散射的数学 这种光学现象在瑞利散射方程S(λ,θ,h)S \left(\lambda, \theta, h \right )S(λ,θ,h) 中得到数学描述,该方程告诉了原始光 I0I_0I0 散射到方向 θ\thetaθ 的比率:

I=I0 S(λ,θ,h)I = I_0 \, S \left(\lambda, \theta, h\right)I=I0S(λ,θ,h)

S(λ,θ,h)=π2(n2−1)22ρ(h)N⏟密度1λ4⏞波长(1+cos⁡2θ)⏟几何S \left(\lambda, \theta, h\right ) = \frac{\pi^2 \left(n^2-1 \right )^2}{2} \underset{\text{密度}}{\underbrace{\frac{\rho\left(h\right)}{N}}} \overset{\text{波长}}{\overbrace{\frac{1}{\lambda^4}}} \underset{\text{几何}}{\underbrace{\left(1+\cos^2\theta \right )}}S(λ,θ,h)=2π2(n21)2密度Nρ(h)λ41波长几何(1+cos2θ)

其中:

  • λ\lambdaλ:入射光的波长;
  • θ\thetaθ:散射角度;
  • hhh:点的海拔高度;
  • n=1.00029n=1.00029n=1.00029:空气的折射率;
  • N=2.504⋅1025N=2.504 \cdot 10^{25}N=2.5041025:标准大气层的分子数密度。这是每立方米的分子数;
  • ρ(h)\rho\left(h\right)ρ(h):密度比。该数字在海平面上等于1,并随着 hhh 指数递减。关于这个函数有很多值得讨论的地方,我们将在本系列的未来文章中详细介绍。

关于瑞利散射的第一件事是,某些方向接收到的光比其他方向多。第二个重要方面是散射光的数量强烈依赖于入射光的波长 λ\lambdaλ 。下面的极坐标图可视化了三种不同波长的 S(λ,θ,0)S\left(\lambda, \theta, 0\right)S(λ,θ,0) 。在海平面处评估 SSS,通常称为在海平面处进行散射。

大气散射(三)Rayleigh散射的数学 下面的图像显示了可见光谱连续范围的散射系数的渲染(代码可在ShaderToy上找到)。

大气散射(三)Rayleigh散射的数学 图像中心是黑色的,因为该范围内的波长超出了可见光谱。

三、瑞利散射系数

瑞利散射方程指示了有多少光朝特定方向散射。然而,它并不告诉我们总共散射了多少能量。要计算这一点,我们需要考虑所有方向上的能量分散。这样的推导不适合心脏脆弱者;如果你对高级微积分不熟悉,这就是结果:

β(λ,h)=8π3(n2−1)23ρ(h)N1λ4\beta \left(\lambda, h \right )=\frac{8\pi^3 \left(n^2-1 \right )^2}{3} \frac{\rho\left(h\right)}{N} \frac{1}{\lambda^4}β(λ,h)=38π3(n21)2Nρ(h)λ41

其中 β(λ,h)\beta \left(\lambda, h \right )β(λ,h) 表示单个粒子碰撞后散射的能量分数。这通常被称为瑞利散射系数

如果你已经阅读了本教程的前一部分,你可能已经猜到了,β\betaβ 实际上是在定义线段 AB‾\overline{AB}AB 上的透射率 T(AB‾)T\left(\overline{AB}\right)T(AB) 中使用的消光系数

不幸的是,计算 β\betaβ 非常昂贵。在我们将要编写的着色器中,我们将尽量节省尽可能多的计算。因此,将散射系数中的所有常数因子“提取”出来是很有用的,这样我们就得到了海平面(h=0)的瑞利散射系数 β(λ)\beta \left(\lambda \right )β(λ)

β(λ)=8π3(n2−1)231N1λ4\beta \left(\lambda \right )=\frac{8\pi^3 \left(n^2-1 \right )^2}{3} \frac{1}{N} \frac{1}{\lambda^4}β(λ)=38π3(n21)2N1λ41

这个新方程提供了另一种理解不同颜色的光如何被散射的方式。下图显示了作为波长函数的散射光所受到的影响。

大气散射(三)Rayleigh散射的数学

正是散射系数 β\betaβλ\lambdaλ 之间的强烈关系最终使得日落的天空呈现红色。我们从太阳接收到的光子分布在广泛的波长范围内。瑞利散射告诉我们,地球大气中的原子和分子更强烈地散射蓝光,而不是绿光或红光。如果光线足够长,所有的蓝光都会被散射消失。这正是在日落时发生的情况,当光线几乎与地表平行时。

用同样的推理,我们可以理解为什么天空呈现出蓝色。太阳的光具有特定的方向。然而,它的蓝色成分会朝着每个方向散射。当你看向天空时,蓝光来自每个方向。

四、瑞利相位函数

将描述瑞利散射的原始方程 S(λ,θ)S \left(\lambda, \theta\right )S(λ,θ) 分解为两个组成部分。其中一个是我们刚刚推导出的散射系数 β(λ)\beta \left(\lambda\right )β(λ),它调节了散射的强度。第二部分与散射的几何形状有关,控制着其方向:

S(λ,θ,h)=β(λ,h)γ(θ)S \left(\lambda, \theta, h\right ) = \beta \left(\lambda, h\right ) \gamma \left(\theta\right)S(λ,θ,h)=β(λ,h)γ(θ)

这个新量 γ(θ)\gamma \left(\theta\right)γ(θ) 可以通过将 S(λ,θ,h)S \left(\lambda, \theta, h\right )S(λ,θ,h) 除以 β(λ)\beta \left(\lambda\right )β(λ) 获得:

γ(θ)=S(λ,θ,h)β(λ)=\gamma \left(\theta\right) = \frac{S \left(\lambda, \theta, h\right )} {\beta \left(\lambda\right )}=γ(θ)=β(λ)S(λ,θ,h)=

=π2(n2−1)22ρ(h)N1λ4(1+cos⁡2θ)⏟S(λ,θ,h) 38π3(n2−1)2Nρ(h)λ4⏟1β(λ)== \underset{S \left(\lambda, \theta, h\right )}{\underbrace{ \frac{\pi^2 \left(n^2-1 \right )^2}{2} \frac{\rho\left(h\right)}{N} \frac{1}{\lambda^4} \left(1+\cos^2\theta \right ) }} \, \underset{\frac{1}{\beta \left(\lambda\right )}}{\underbrace{ \frac{3}{8\pi^3 \left(n^2-1 \right )^2} \frac{N}{\rho\left(h\right)} \lambda^4 }}==S(λ,θ,h)2π2(n21)2Nρ(h)λ41(1+cos2θ)β(λ)18π3(n21)23ρ(h)Nλ4=

=316π(1+cos⁡2θ)= \frac{3}{16\pi} \left(1+\cos^2 \theta\right)=16π3(1+cos2θ)

可以看出,这个新的表达式不依赖于入射光的波长。这可能看起来有些反直觉,因为我们确实知道瑞利散射更多地影响较短的波长。

然而,γ(θ)\gamma \left(\theta\right)γ(θ) 所模拟的是我们之前见过的偶极子的形状。术语 316π\frac{3}{16\pi}16π3 充当一个归一化因子,使所有可能角度θ\thetaθ的积分总和为1。更技术性地说,可以说在所有可能的立体角 4π4\pi4π 上的积分为1。

我们将在即将到来的部分中看到,将这两个组件分开将允许推导出更有效的方程。

五、快速回顾

  • 瑞利散射方程:指示了在方向 θ\thetaθ上被偏转的光的比例。散射的强度取决于入射光的波长 λ\lambdaλS(λ,θ,h)=π2(n2−1)22ρ(h)N1λ4(1+cos⁡2θ)S \left(\lambda, \theta, h\right ) = \frac{\pi^2 \left(n^2-1 \right )^2}{2} \frac{\rho\left(h\right)}{N} \frac{1}{\lambda^4} \left(1+\cos^2\theta \right )S(λ,θ,h)=2π2(n21)2Nρ(h)λ41(1+cos2θ)

另外:

S(λ,θ,h)=β(λ,h)γ(θ)S \left(\lambda, \theta, h\right ) = \beta \left(\lambda,h \right ) \gamma\left(\theta\right)S(λ,θ,h)=β(λ,h)γ(θ)
  • 瑞利散射系数:指示了单次碰撞后散射的光的比例。
β(λ,h)=8π3(n2−1)23ρ(h)N1λ4\beta \left(\lambda,h \right )=\frac{8\pi^3 \left(n^2-1 \right )^2}{3} \frac{\rho\left(h\right)}{N} \frac{1}{\lambda^4}β(λ,h)=38π3(n21)2Nρ(h)λ41
  • 海平面处的瑞利散射系数:等同于β(λ,0)\beta \left(\lambda,0\right )β(λ,0)。创建这个额外的系数对于推导更有效的方程非常有帮助。
β(λ)=β(λ,0)=8π3(n2−1)231N1λ4\beta \left(\lambda \right )=\beta \left(\lambda,0 \right )=\frac{8\pi^3 \left(n^2-1 \right )^2}{3} \frac{1}{N} \frac{1}{\lambda^4}β(λ)=β(λ,0)=38π3(n21)2N1λ41

如果我们考虑粗略地对应于红色、绿色和蓝色的波长,我们会得到以下结果:

β(680nm)=0.00000519673\beta\left(680nm\right) = 0.00000519673β(680nm)=0.00000519673

β(550nm)=0.0000121427\beta\left(550nm\right) = 0.0000121427β(550nm)=0.0000121427

β(440nm)=0.0000296453\beta\left(440nm\right) = 0.0000296453β(440nm)=0.0000296453

这些结果是在考虑 h=0h=0h=0(这意味着ρ=1\rho=1ρ=1)时计算的。这只发生在海平面上,散射系数达到最大值。因此,它作为光线被散射的“基准”。

  • 瑞利相位函数:控制散射几何,指示了在特定方向上丢失的光的相对比例。系数 316π\frac{3}{16\pi}16π3 作为归一化因子,使单位球面上的积分为 1。
γ(θ)=316π(1+cos⁡2θ)\gamma\left(\theta\right)= \frac{3}{16\pi} \left(1+\cos^2 \theta\right)γ(θ)=16π3(1+cos2θ)
  • 密度比率:这是一个用于模拟大气密度的函数。它将在未来的帖子中正式介绍。如果你不介意数学的剧透,它被定义为:
ρ(h)=exp{−hH}\rho\left(h\right)=exp\left\{-\frac{h}{H}\right\}ρ(h)=exp{Hh}

其中 (H=8500) 米被称为尺度高度。

转载自:https://juejin.cn/post/7343138804482916352
评论
请登录