光线追迹基础:光线分裂、光线散射、光线吸收、光线偏振

各位同学,今天我们来聊聊非序列光线追迹里最核心的几个物理过程。说实话,我刚入行那会儿,觉得光线追迹不就是一条线射过去嘛,能有多复杂?直到我接手第一个LED准直透镜项目,才发现事情远没那么简单。

在非序列模式下,光线遇到光学面可不是「撞上就反射或折射」这么简单。它会分裂、会散射、会被吸收,甚至还会改变偏振态。这些效应,你忽略任何一个,仿真结果都可能跟实测差出十万八千里。

光线分裂:一条光线变成多条

什么叫光线分裂?说白了,就是一条入射光线打到某个表面上,同时产生了反射光线和透射光线。在序列模式里,光线只能走一条路;但在非序列模式里,它会同时产生多条子光线。

我记得有一次做分光棱镜的仿真,客户要求分析50:50的分光比。我一开始用序列模式,结果怎么调都跟实测对不上。后来换成非序列模式,把光线分裂打开,一下子就准了。为什么?因为序列模式只算一条路径,而非序列模式把反射和透射两条路径都算进去了。

关键点: 光线分裂的权重由菲涅耳公式决定。S偏振和P偏振的反射率不同,所以分裂后的能量分配也不一样。

在Zemax OpticStudio里,控制光线分裂的参数是Split RaysScatter Rays。我个人习惯把Split Rays设为On,除非我明确知道某个表面不会产生分裂(比如理想吸收面)。

; 非序列模式下开启光线分裂的示例设置
Object 1: 分光棱镜
  Material: N-BK7
  Split Rays: On
  Scatter Rays: On
  Number Of Split: 2  ; 每条入射光线最多产生2条子光线
小技巧: 如果你发现仿真速度太慢,可以限制Number Of Split的值。一般设为2-3就够用了,设太大反而容易让光线数量爆炸。

光线散射:表面粗糙度带来的麻烦

光线散射,嗯,这是个让人又爱又恨的东西。爱的是,没有散射我们就看不到漫反射物体;恨的是,它会让你的仿真变得异常复杂。

散射的本质是什么?是表面微观结构让光线往各个方向乱跑。你想想看,一个理想镜面,入射角等于反射角,干干净净。但实际加工出来的表面,总会有粗糙度,光线就会散开。

我在项目中遇到过最头疼的一次,是设计一个背光模组的导光板。导光板底部有微结构,光线打上去会散射。我一开始用朗伯散射模型,结果亮度分布完全不对。后来换成ABg散射模型,把散射参数调了整整两天,才跟实测吻合。

散射模型 适用场景 我的经验
朗伯散射 理想漫反射表面 简单但太理想化,实测往往有偏差
高斯散射 抛光表面、轻微粗糙 适合镜面反射为主的表面
ABg散射 工程表面、微结构 参数多但最灵活,我常用这个
BSDF测量数据 精确仿真 如果有实测数据,这是最准的
注意: 开启散射后,光线数量会呈指数级增长。我曾经试过把散射光线数设为100,结果仿真跑了8个小时还没结束。建议先从10-20条开始试,确认结果合理再增加。

光线吸收:能量守恒的最后一道关

光线吸收,说白了就是能量被材料「吃」掉了。在非序列追迹里,吸收不是简单的「光线消失」,而是能量逐渐衰减的过程。

为什么会这样?因为光线在介质中传播时,每走一段距离,能量就会按指数规律衰减。这个规律叫比尔-朗伯定律:

I = I₀ × exp(-α × d)

其中:
I₀ = 初始光强
α = 吸收系数(单位:1/mm)
d = 传播距离(单位:mm)

我记得有一次做光纤耦合仿真,怎么算耦合效率都偏高。后来发现,我忘了设置光纤材料的吸收系数。实际的光纤虽然损耗很低,但几米长的距离累积下来,吸收效应不可忽略。加上吸收系数后,仿真结果就跟实测对上了。

在非序列模式里,吸收参数通常设置在材料属性里。比如玻璃材料,除了折射率和阿贝数,还有Coefficient of Absorption这个参数。我建议你养成一个好习惯:每次新建材料,都去查一下它的吸收系数,哪怕很小也要填上。

避坑指南: 我曾经犯过一个低级错误——把吸收系数设成了0,结果仿真出来的能量永远守恒,怎么算都不对。后来才意识到,吸收系数为0意味着材料完全不吸收,这在现实中是不存在的。

光线偏振:被很多人忽略的关键因素

光线偏振,嗯,这个知识点我敢说,至少有一半的光学工程师在仿真时会忽略它。但如果你做的是激光系统、液晶显示或者薄膜干涉,忽略偏振就等于白做。

偏振的本质是什么?是电场矢量的振动方向。自然光是无偏振的,但经过反射、折射或者通过偏振片后,就会变成线偏振、圆偏振或者椭圆偏振。

我在项目中遇到过最典型的例子,是设计一个激光扩束系统。激光本身就是线偏振光,经过几个反射镜后,偏振态发生了变化,导致最后的分光比完全不对。后来我在仿真里开启了偏振追迹,才发现问题出在反射镜的膜层上——不同偏振态的反射率不一样。

在Zemax里,开启偏振追迹的方法很简单:

; 开启偏振追迹
System Explorer → Ray Tracing → Use Polarization: On

; 设置光源偏振态
Source 1: 高斯光源
  Polarization: Jones Vector
  Jones Vector: (1, 0)  ; 水平线偏振
核心要点: 偏振追迹会大幅增加计算量,但精度提升非常明显。我个人的经验是:如果系统中有超过3个反射面,或者有薄膜镀层,一定要开启偏振追迹。

最后说一句,这四个效应——分裂、散射、吸收、偏振——在非序列模式里往往是同时发生的。你想想看,一条光线打到粗糙表面上,它会分裂成反射和透射两条,每条都会发生散射,散射过程中能量被部分吸收,而且偏振态也会改变。这才是真实世界的物理过程。

嗯,今天就讲到这里。下一章我们会聊非序列模式的光源建模,包括各种光源类型和它们的设置技巧。到时候见。