2. 光源定义与建模:光源类型、光谱、空间分布与功率设置
光源,说白了就是非序列系统的起点。光从哪来、往哪去、带多少能量,全看这一步怎么设。我见过不少新手,系统跑出来结果离谱,最后发现是光源参数随手填的——嗯,这种事我也干过。
这一章咱们把光源拆开揉碎了讲。点光源、面光源、体光源怎么选,光谱怎么配,角度和位置怎么控,功率和能量又该怎么设。一个一个来。
2.1 光源类型:点、面、体
非序列模式里,光源就三种基本形态。选错了,后面的优化全白搭。
| 光源类型 | 适用场景 | 典型参数 | 我踩过的坑 |
|---|---|---|---|
| 点光源 | LED 近似、小尺寸光源、远场模拟 | 位置 (X,Y,Z)、发光角度、功率 | 点光源离透镜太近时,光线追迹会炸,记得加最小距离 |
| 面光源 | 显示屏、导光板、灯具出光面 | 面形状 (矩形/圆形)、发光面尺寸、光线数量 | 面光源光线数设太少,照度图会有颗粒感,我一般设 10 万条起步 |
| 体光源 | 荧光灯管、太阳模拟器、体积发光材料 | 体形状 (圆柱/立方体)、发光体积、散射模型 | 体光源内部光线自吸收容易忽略,结果亮度偏低 |
我的习惯: 能当面光源用的,绝不用点光源。面光源的物理真实性更高,调试时也更容易发现问题。点光源我只在概念验证阶段用。
2.2 光源光谱设置
光谱不是随便选个波长就完事的。真实光源有带宽,有相对强度分布。你用单色光去模拟白光 LED,结果能准才怪。
光谱设置通常有两种方式:
- 单波长:适合激光、单色 LED。速度快,但别用在宽谱系统里。
- 光谱文件导入:用 .dat 或 .txt 文件,存波长-相对强度对。我习惯从厂家 datasheet 里扒光谱曲线,采样点 20~50 个就够了。
关键点: 光谱采样点不是越多越好。超过 100 个点,追迹速度明显下降,但精度提升微乎其微。我一般控制在 30 个点左右。
举个例子,一个典型的白光 LED 光谱文件长这样:
# 波长(nm) 相对强度
380 0.02
420 0.08
460 0.35
500 0.60
540 0.85
580 1.00
620 0.75
660 0.40
700 0.15
740 0.05
780 0.01
导入后,软件会自动插值。注意文件里不要有中文或特殊字符,我吃过这个亏——软件直接报错不跑。
2.3 光源空间分布
空间分布决定了光往哪个方向走。你想想看,一个朗伯体发光的 LED 和一个聚光手电,角度分布能一样吗?
2.3.1 角度分布
常见的角度分布模型有这些:
- 朗伯分布:cosθ 分布,典型扩散光源。我 80% 的面光源都用这个。
- 高斯分布:中心强、边缘弱,适合激光或准直光源。
- 自定义角度分布:用角度-强度表格导入。有些厂家会给配光曲线文件,直接拿来用最准。
注意: 角度分布的单位要看清。有的软件用度 (°),有的用弧度 (rad)。我曾经把 30° 输成 30 rad,结果光线全飞到天上去了。
2.3.2 位置分布
位置分布控制光线从光源表面的哪个点发出。常见的有:
- 均匀分布:每个点等概率发光。适合大多数情况。
- 随机分布:蒙特卡洛采样,避免周期性伪影。
- 自定义位置权重:某些区域发光强,某些区域弱。比如 LED 芯片的电极下方不发光,就得用这个。
2.4 光源功率与能量设置
功率和能量,这两个概念容易混。我简单说一下:
| 参数 | 单位 | 含义 | 典型设置 |
|---|---|---|---|
| 辐射通量 (Radiant Flux) | W (瓦特) | 光源每秒发出的总能量 | 1W LED 设 1W,但注意实际出光效率 |
| 光通量 (Luminous Flux) | lm (流明) | 人眼感知的亮度 | 1000lm 约等于 60W 白炽灯 |
| 辐射强度 (Radiant Intensity) | W/sr | 单位立体角内的辐射通量 | 激光常用,点光源也常用 |
| 辐照度 (Irradiance) | W/m² | 单位面积上的辐射通量 | 接收面分析时看这个 |
设置时有个原则:先定总功率,再分到每条光线上。软件会自动把总功率均分给所有追迹光线。所以光线数越多,单条光线能量越小,统计噪声越低。
避坑指南: 我曾经做一个太阳能集热器模拟,光源功率设了 1000W,但光线只设了 1000 条。结果每条光线带 1W 能量,打到接收面上直接局部过热——物理上根本不可能。后来我把光线数提到 100 万条,结果就正常了。
2.5 知识体系总览
下面这张图把光源定义的几个维度串起来了。你照着这个框架去设参数,基本不会漏。
2.6 实操建议
最后给几个我自己的实操习惯,你参考着用:
- 先粗后细:先用点光源 + 单波长跑通系统,再换成面光源 + 真实光谱做精仿。
- 光线数从 1 万起步:太少有噪声,太多跑不动。1 万条是性价比最高的起点。
- 功率先归一化:调试阶段把总功率设成 1W,方便看能量分布比例。最后再改成真实值。
- 光谱文件备份:不同厂家的 LED 光谱我建了个库,每次新建项目直接调用,省得重复找 datasheet。
再啰嗦一句: 光源定义是整个非序列仿真的地基。地基歪了,楼盖得再高也得塌。我见过有人花了两周优化一个导光板网点,最后发现光源角度分布设错了——全部重来。别走这条路。