第一章 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里找到散射属性库,有两条路:

  1. 菜单路径:Edit → Scatter Properties → Scatter Property Library
  2. 快捷方式:在系统树(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 本章知识结构图

下面这张图帮你理清本章的核心逻辑:

FRED散射基础知识结构 FRED散射基础 · 知识体系 散射现象 本质:能量重分配 数学描述:BSDF 模型分类 表面粗糙度 折射率差异 入射角/波长 BRDF(反射散射) BTDF(透射散射) 经验模型 物理模型 数据驱动模型 入口:Edit → Scatter Properties → Scatter Property Library 或右键表面 → Scatter → Open Library

1.6 本章小结

这一章我们走通了FRED散射仿真的底层逻辑:

  • 散射是光与物质相互作用的物理必然,不是误差
  • BSDF是描述散射的标准语言,FRED里所有模型都在算它
  • FRED提供了三类模型:经验型快、物理型准、数据型真
  • 属性库的入口就在Edit菜单和右键菜单里,别走错