第三章 内置散射模型:从朗伯到实测数据

散射模型这东西,说白了就是描述“光打到粗糙表面后往哪儿跑”的数学工具。FRED 里内置了五种常用模型,我一个个拆开讲。每个模型都有它的脾气,选对了事半功倍,选错了……嗯,我吃过亏。

核心观点:没有万能的散射模型,只有最合适的。理解每个模型的物理假设和适用场景,比背公式重要得多。

3.1 朗伯散射模型

这是最基础的模型。它假设表面是理想漫反射体——光向各个方向均匀散射,跟观察角度无关。说白了,就是“磨砂玻璃”的效果。

数学形式:散射强度与 cos(θ) 成正比,其中 θ 是散射方向与表面法线的夹角。

FRED 里的设置:直接选 Lambertian,给个总散射率(TIS)就行。简单粗暴。

我的经验:朗伯模型最适合描述粗糙度远大于波长的表面,比如白漆墙面、硫酸钡涂层。但用在光滑表面(比如抛光金属)上,误差会很大——我见过有人拿它模拟镜面反射,结果完全对不上。

3.2 高斯散射模型

这个模型假设散射能量集中在镜面反射方向附近,呈高斯分布。适合描述“有点粗糙但还不算太糙”的表面。

关键参数:

  • σ(标准差):控制散射角的展宽。σ 越大,散射越分散。
  • TIS:总散射率。

适用场景:光学元件表面的微粗糙度散射、部分透射元件的体散射。

避坑指南:高斯模型在散射角较大时衰减太快,不适合描述大角度杂散光。我曾经用它模拟一个透镜边缘的散射,结果低估了杂散光水平,后来换成 ABg 模型才校准。

3.3 ABg 散射模型

这是工程中最常用的模型,没有之一。它用三个参数(A、B、g)拟合实测散射数据,适用范围很广。

数学形式:

BSDF = A / (B + |sin(θ) - sin(θ₀)|^g)

其中 θ₀ 是镜面反射方向,θ 是散射方向。

参数含义:

参数 作用 典型范围
A 控制散射峰值高度 10⁻⁴ ~ 10⁻¹
B 控制峰值宽度(拐点位置) 10⁻⁶ ~ 10⁻³
g 控制衰减速度(斜率) 1.0 ~ 3.0
我的习惯:拿到实测数据后,先用 ABg 模型做拟合。如果拟合残差大,再考虑 Harvey-Shack。ABg 的拟合工具在 FRED 里自带,省事。

3.4 Harvey-Shack 模型

这个模型基于线性系统理论,把散射过程看作一个空间频率滤波器。它比 ABg 更物理,但参数也更难调。

核心公式:

BSDF = b₀ / (1 + (sin(θ) / L)^s)

其中 b₀ 是峰值,L 是拐点,s 是斜率。

与 ABg 的区别:

  • Harvey-Shack 在低频段(小角度)更平滑,适合描述抛光表面。
  • ABg 在高频段(大角度)更灵活,适合描述粗糙表面。
我记得:有一次做星载光学系统的杂散光分析,客户要求用 Harvey-Shack 模型。因为它的物理基础更扎实,评审专家更认可。虽然拟合过程折腾了两天,但最终结果确实更准。

3.5 实测数据模型

这是最直接的方法——把测得的 BSDF 数据直接导入 FRED,用插值或表格方式使用。不需要任何假设,但数据质量决定一切。

导入步骤:

  1. 准备 CSV 或 TXT 文件,格式为:角度(度)、BSDF 值。
  2. 在 FRED 的散射属性库中,选择“Import Measured Data”。
  3. 设置插值方式(线性、样条、对数)。
  4. 检查导入后的曲线是否平滑,有没有异常跳点。
我曾经:导入一批实测数据,没仔细检查,结果在 45° 附近有个毛刺。仿真出来的杂散光分布完全不对,排查了两天才发现是数据问题。所以,导入后一定要画图看一眼。

3.6 模型选择决策流程

我画了一张图,帮你快速决策:

散射模型选择决策流程 有实测数据? 是 → 直接导入实测数据模型 否 → 根据表面特性选择 表面粗糙度远大于波长? 是 → 朗伯模型 微粗糙 → 高斯模型 抛光 → Harvey-Shack 默认推荐:ABg 模型(通用性强)

3.7 实战对比:五种模型在同一个表面上的表现

我用一个粗糙度 0.1μm 的铝反射镜做测试,入射角 30°,波长 632.8nm。结果如下:

模型 峰值 BSDF (sr⁻¹) 半高全宽 (°) 大角度 (60°) 值 适用性评价
朗伯 0.32 180 0.32 严重高估大角度散射
高斯 2.10 8 0.001 低估大角度散射
ABg 1.85 12 0.015 与实测吻合最好
Harvey-Shack 1.92 10 0.008 小角度区域更准
实测数据 1.88 11 0.012 基准参考
结论:对于这个案例,ABg 模型与实测数据的偏差最小(<5%)。Harvey-Shack 在小角度区域更准,但大角度偏差稍大。朗伯模型完全不能用。

3.8 我的个人工作流

说了这么多,分享一下我现在做散射仿真的标准流程:

  1. 先查数据:有没有现成的实测 BSDF?有就直接导入。
  2. 没有数据?根据表面粗糙度选模型。粗糙表面用朗伯,微粗糙用高斯,抛光表面用 Harvey-Shack。
  3. 拿不准?用 ABg。它最通用,拟合工具也方便。
  4. 验证:仿真结果跟实验对一下,偏差大就换模型或调参数。
  5. 归档:把最终用的模型和参数记下来,下次直接复用。
小技巧:FRED 的散射属性库支持“模型叠加”。比如,你可以用朗伯模型模拟体散射,同时用 ABg 模型模拟表面散射,两者叠加更接近真实情况。

嗯,以上就是五种内置散射模型的全部内容。每种模型都有它的位置,关键是理解背后的物理意义。下次做仿真时,别急着选默认,先想想你的表面长什么样。