第一章 FRED散射基础:从现象到属性库入口
各位工程师朋友,欢迎来到《实战掌握FRED散射属性库应用》的第一章。
散射,说白了就是光打到粗糙表面或颗粒介质后,不再乖乖沿着镜面方向走,而是朝四面八方乱跑的现象。你想想看,为什么磨砂玻璃是半透明的?为什么白纸看起来是白的?为什么车漆有哑光和亮光之分?背后都是散射在起作用。
在FRED里做光学仿真,散射模型选对了,结果就准了八成。我刚开始用FRED那会儿,就吃过散射模型的亏——一个激光雷达接收系统仿真,怎么算信噪比都不对,折腾了两天,最后发现是散射模型选错了。嗯,从那以后我再也不敢随便选个“默认散射”就跑了。
1.1 散射现象的本质
散射的本质,是光与物质微观结构之间的电磁相互作用。从工程角度看,我们可以把散射理解为:入射光能量在空间上的重新分配。
影响散射的主要因素有三个:
- 表面粗糙度:微观起伏越大,散射越强。我见过一个案例,镀膜表面RMS粗糙度从2nm变成10nm,杂散光水平直接翻了三倍。
- 材料折射率:折射率差异越大,界面散射越明显。
- 入射角度与波长:同一表面,不同波长、不同角度,散射特性完全不同。
核心认知:散射不是“噪声”,而是物理规律。在FRED中,我们不是消除散射,而是精确描述它。
1.2 BRDF与BSDF——散射的数学语言
FRED里描述散射,离不开两个核心函数:BRDF和BSDF。
| 函数 | 全称 | 描述对象 | 单位 |
|---|---|---|---|
| BRDF | 双向反射分布函数 | 反射散射 | sr⁻¹ |
| BTDF | 双向透射分布函数 | 透射散射 | sr⁻¹ |
| BSDF | 双向散射分布函数 | 反射+透射 | sr⁻¹ |
简单理解:BRDF告诉你“从某个方向看过去,这个表面有多亮”。BSDF则是BRDF和BTDF的总和。
我个人习惯把BSDF想象成一个“能量分配表”——入射光进来1瓦,BSDF告诉你每单位立体角分到多少能量。数值越大,那个方向就越亮。
小技巧:在FRED中查看BSDF曲线时,注意纵轴通常是对数坐标。因为散射能量往往跨越好几个数量级,线性坐标根本看不清楚。
1.3 FRED中的散射模型分类
FRED内置了十几种散射模型,我按使用频率把它们分成三类:
1.3.1 经验模型(最常用)
- ABg散射:FRED的默认模型,参数少、速度快。适合大多数工程表面。
- 高斯散射:适合描述光滑表面的微小散射。
- 朗伯散射:理想漫反射,各方向亮度相同。白板、积分球内壁常用。
1.3.2 物理模型(精度高)
- Harvey-Shack:基于表面功率谱密度,适合光学元件表面散射。
- K-correlation:适合描述分形表面,比如粗糙金属。
1.3.3 数据驱动模型(实测数据)
- BSDF数据导入:从实际测量设备(如散射仪)导出的数据文件。
- 用户自定义DLL:适合特殊散射特性,我曾在某个项目中用C++写过一个各向异性散射DLL。
避坑指南:我曾经在仿真一个高精度望远镜系统时,直接用ABg模型代替实测BSDF数据,结果杂散光分析偏差超过30%。后来老老实实导入实测数据才搞定。记住:能用实测数据就别用经验模型,除非你只是做概念验证。
1.4 散射属性库的入口
在FRED里找到散射属性库,有两条路:
- 菜单路径:
Edit → Scatter Properties → Scatter Property Library - 快捷方式:在系统树(System Tree)中右键点击任意表面,选择
Scatter → Open Library
打开后你会看到这样一个界面:
┌─────────────────────────────────────────────┐
│ Scatter Property Library │
│ ┌─────────────────────────────────────────┐ │
│ │ Name │ Type │ Parameters │ │
│ │─────────────────────────────────────────│ │
│ │ ABg_Default │ ABg │ A=1e-5... │ │
│ │ Lambertian_White │ Lambert │ TIS=0.9 │ │
│ │ Harvey_Shack_01 │ Harvey │ s=2.0... │ │
│ │ ... │ ... │ ... │ │
│ └─────────────────────────────────────────┘ │
│ [New] [Edit] [Copy] [Delete] [Import] │
└─────────────────────────────────────────────┘
这个库是全局的,你创建的所有散射属性都会保存在这里。我建议你养成好习惯:给每个散射属性起个有意义的名字,比如“Lens_AR_Coating_Scatter”而不是“Scatter1”。不然项目一多,你自己都分不清哪个是哪个。
个人经验:我习惯在项目开始时,先把常用的散射属性导入库中。比如标准朗伯体、典型镀膜表面的ABg参数、还有之前项目实测的BSDF数据。这样后面建模时直接调用,省时省力。
1.5 本章知识结构图
下面这张图帮你理清本章的核心逻辑:
1.6 本章小结
这一章我们走通了FRED散射仿真的底层逻辑:
- 散射是光与物质相互作用的物理必然,不是误差
- BSDF是描述散射的标准语言,FRED里所有模型都在算它
- FRED提供了三类模型:经验型快、物理型准、数据型真
- 属性库的入口就在Edit菜单和右键菜单里,别走错