欢迎光临散文网 会员登陆 & 注册

[光线追踪] 01 -- 浅识辐射学

2022-05-17 20:19 作者:nyasyamorina  | 我要投稿

光追实际上就是计算电磁波 (光) 在场景里传播的结果,  所以了解电磁波如何传播就是光追的核心内容,  为此需要用到辐射学的知识.  (关于插图,  因为是机械盲,  完全不会用绘图软件,  所以几何图全部手绘了,  请多多包含)


辐射学名词

辐射能 Q,  单位:  焦耳 J.  关于辐射能也不需要多说什么,  不是重点.

辐射通量 %5CPhi%3D%5Cfrac%7B%5CDelta%20Q%7D%7B%5CDelta%20t%7D,  单位:  瓦 (W, J⋅s⁻¹).  辐射通量定义为在一段时间里接收/放出的辐射能.

入射辐射通量密度 E%3D%5Cfrac%7B%5CDelta%5CPhi%7D%7B%5CDelta%20A%7D,  单位: W⋅m⁻².  E 描述了空间上一个平面在一段时间内接收的辐射能.

出射辐射通量密度 M.  于 E 类似,  但是描述的是放出的辐射能而不是接收的.

在继续介绍之前需要说明的是,  E 和 M 定义了空间上的一个平面接收/放出的 Φ,  其中这个平面不一定是物体上的平面,  可以是空间上不存在的平面,  当为后者时,  E = M.  另外辐射通量密度没有方向限制,  也就是接收/放出的辐射是在所有方向上的统计,  这点需要跟下面的辐射度区别开.


辐射度 L%3D%5Cfrac%7B%5CDelta%5E2%5CPhi%7D%7B%5CDelta%20A%5CDelta%5Comega%7D,  单位 W⋅m⁻²⋅sr⁻¹.  其中 sr 是立体角的单位 (见下).  L 是在辐射通量密度的基础上加了方向限制,  也就是只会统计符合部分方向传播的辐射通量.  当 L 的限制角度大小 ΔΩ 趋向于 0 时,  即定义了平行光,  又当限制平面大小 ΔA 趋向于 0 时,  即定义了光线,  所以光线定义为穿过无限小平面的平行光,  下文除非特殊说明,  否则统一使用 L 表示光线.


更多的立体角

如同一般的角是定义在二维空间上的方向,  立体角是定义在三维空间上的方向,  并且由两个参数给出:  天顶角 θ (范围: [0, π]) 和 方向角 φ (范围: [0,2π) 或 (-π, π]) (如下图所示)

角的常用单位弧度 rad 表示角的大小 (或者角度 deg),  而立体角使用球面度 sr 表示大小.  并且,  可以用单位圆表示角,  而单位圆的周长 2π 为角的最大弧度.  类似地,  可以使用单位球表示立体角,  那么单位球的表面积 4π 为立体角的最大球面度.

在光追里有时需要讨论远处物体所占的立体角大小,  如下图所示

其中 dA 是远处物体的面积元,  n 是 dA 的法线,  d 是观察点到 dA 的距离,  α 是 n 与观察点到 dA 连线的夹角,  那么 dA 在观察点处所占的立体角 dω 为 d%5Comega%3Dd%5E%7B-2%7D%5Ccos%5Calpha%20dA,  详细推导这里就不给出了,  大概就是先求出 dA 垂直于观察点到 dA 连线的大小 cosαdA,  然后应用平方反比定理求出在单位球面上的大小 d⁻²cosαdA.

在方向角上的全积分为 %5Cint_0%5E%7B2%5Cpi%7D%5Cint_0%5E%5Cpi%20f(%5Ctheta%2C%5Cvarphi)%5Csin%5Ctheta%20d%5Ctheta%20d%5Cvarphi 可以简记为 %5Cint_%7B4%5Cpi%7Df(%5Comega)d%5Comega.  类似地,  在上半球方向角积分 %5Cint_0%5E%7B2%5Cpi%7D%5Cint_0%5E%7B%5Cfrac%7B%5Cpi%7D%7B2%7D%7Df(%5Ctheta%2C%5Cvarphi)%5Csin%5Ctheta%20d%5Ctheta%20d%5Cvarphi 简记为 %5Cint_%7B2%5Cpi%5E%2B%7Df(%5Comega)d%5Comega,  这样可以节省大量重复的篇幅.


入射辐照度

考虑一束平行光以一定角度照射到平面上:

由简单的几何关系可以知道 %5Ccos%5Ctheta%3D%5Cfrac%7BdA%7D%7BdB%7D,  也就是能量集中在 dB 的光线照射到平面上时会分布在面积更大的 dA 上,  把 dA 与 dB 的关系代入辐射度得到 L_i%3D%5Cfrac%7Bd%5E2%5CPhi%7D%7BdA%5Ccos%5Ctheta%20d%5Comega%7D,  式中 cosθdω 表示立体角微元 dω 在 xOy 平面上的投影大小,  所以 cosθdω 成为投影立体角.

那么根据定义,  从方向 ωᵢ 入射的入射辐照度为 dE_i(%5Comega_i)%3DL_i(%5Comega_i)%5Ccos%5Ctheta_i%20d%5Comega注意,  根据习惯,  ωᵢ 定义为从平面离开的方向,  而不是进入平面的方向,  所以 -ωᵢ 为实际光传播的方向.



双向反射分布函数

为了计算辐射能在与物体碰撞后的传播,  对于不透明物体可以使用双向反射分布函数 (BRDF) 进行描述.  BRDF 描述了当光线从方向 ωᵢ 入射,  并从方向 ωₒ 出射的能量分布,  如下图所示

不难知道,  出射辐射度的微元应该与入射辐射度的微元成正比,  而这个比值可以由 BRDF 给出,  即  dL_o(%5Comega_o)%3Df_r(%5Comega_i%2C%5Comega_o)dE_i(%5Comega_i),  展开得 dL_o(%5Comega_o)%3Df_r(%5Comega_i%2C%5Comega_o)L_i(%5Comega_i)%5Ccos%5Ctheta_id%5Comega_i,  根据公式可以知道 BRDF 的单位为 sr⁻¹.

对 dLₒ 进行积分就可以求出出射辐射度 Lₒ,  因为 BRDF 描述的是不透明对象,  光线只从上半球射入/射出,  所以积分范围只包含上半球:  L_o(%5Comega_o)%3D%5Cint_%7B2%5Cpi%5E%2B%7Df_r(%5Comega_i%2C%5Comega_o)L_i(%5Comega_i)%5Ccos%5Ctheta_id%5Comega_i.  这条公式就是在光追里最核心的公式了,  它描述了辐射能如何在场景的进行传播.

另外 BRDF 还满足:  1) f_r(%5Comega_i%2C%5Comega_o)%3Df_r(%5Comega_o%2C%5Comega_i),  这个规律是反向光线追踪成立的条件 (更多内容在下一篇专栏里);  2) 多个 BRDF 的线性组合也是合格的 BRDF (只要满足能量守恒,  见下).


反射率

反射率定义为射入平面的辐射通量与射出平面的辐射通量的比值,  即 %5Crho%3D%5Cfrac%7Bd%5CPhi_o%7D%7Bd%5CPhi_i%7D%3D%5Cfrac%7BM%7D%7BE%7D.  其中入射/出射辐射通量密度由 %5Cint_%7B2%5Cpi%5E%2B%7DL(%5Comega)%5Ccos%5Ctheta%20d%5Comega 给出,  结合 BRDF 里讨论的内容,  可以给出: %5Crho%3D%5Cfrac%7B%5Cint_%7B2%5Cpi%5E%2B%7D%5Cint_%7B2%5Cpi%5E%2B%7Df_r(%5Comega_i%2C%5Comega_o)L_i(%5Comega_i)%5Ccos%5Ctheta_i%5Ccos%5Ctheta_od%5Comega_id%5Comega_o%7D%7B%5Cint_%7B2%5Cpi%5E%2B%7DL_i(%5Comega_i)%5Ccos%5Ctheta_id%5Comega_i%7D.  在实际上,  光线被物体吸收后总有一部分能量被转化为其他形式 (比如热能),  然后再放出光线,  所以实际物体的反射率是不能达到 1 的,  即 %5Crho%3C1.


到此,  光追所需的辐射学知识算是全部讲完了,  下一章讨论几种不同的渲染模型和蒙特卡洛积分.


最后例行宣传一下 #闲聊 #涩图 #弔图 #不准建政 #关注或不关注各地新闻 #妈的群友不请我吃疯狂星期四: 274767696

封面 pid: 95212852

[光线追踪] 01 -- 浅识辐射学的评论 (共 条)

分享到微博请遵守国家法律