4. 材料光学属性:反射率、透射率、吸收率、BRDF、BSDF、表面粗糙度与散射
做照明仿真这么多年,我越来越觉得一个道理:灯光本身只是半条命,另一半在材料上。你想想看,同样的 LED 灯带,打在磨砂白墙上和打在镜面黑玻璃上,效果天差地别。这背后的核心,就是材料的光学属性。
这一章,咱们就把这些属性掰开揉碎了讲清楚。反射率、透射率、吸收率,这是最基础的三个数。BRDF、BSDF,这是描述光怎么“弹”和“穿”的函数。表面粗糙度,则是决定一切真实感的开关。
4.1 三大基础比率:能量守恒的基石
光打到材料表面,无非三种结局:被弹回去(反射)、穿过去(透射)、被吃掉(吸收)。这三者的能量总和,永远是 100%。这叫能量守恒,是仿真软件的底层铁律。
| 属性 | 符号 | 定义 | 典型值(白漆) |
|---|---|---|---|
| 反射率 | ρ | 反射光通量 / 入射光通量 | 0.80 ~ 0.90 |
| 透射率 | τ | 透射光通量 / 入射光通量 | 0.00 |
| 吸收率 | α | 吸收光通量 / 入射光通量 | 0.10 ~ 0.20 |
核心公式: ρ + τ + α = 1.0
任何材料在仿真软件里都必须满足这个等式。如果不满足,软件会自动归一化,或者直接报错。
我个人习惯,拿到一个新材料,先看这三个数。比如一块 3mm 厚的超白玻璃,透射率大概 0.91,反射率 0.08,吸收率 0.01。加起来正好是 1。如果供应商给的数据加起来是 1.05,那肯定有问题,要么测量误差,要么把表面反射算了两次。
小技巧: 在 Dialux 或 Relux 里调材料时,如果只给了反射率,软件通常会默认吸收率 = 1 - 反射率,透射率 = 0。对于不透明材料,这没问题。但半透明材料一定要手动检查透射率。
4.2 BRDF:光是怎么“弹”回来的
BRDF,全称 Bidirectional Reflectance Distribution Function,双向反射分布函数。名字很吓人,说白了就是描述一束光从某个方向打过来,会往哪些方向反射出去,每个方向反射多少。
为什么叫“双向”?因为它有两个方向变量:入射方向(ωi)和出射方向(ωr)。函数值 fr(ωi, ωr) 表示反射光的亮度分布。
我在项目中遇到过最典型的例子:汽车内饰的仪表盘。白天开车,阳光从挡风玻璃射进来,如果仪表盘表面 BRDF 没调好,反射光会直射驾驶员眼睛,造成眩光。那时候我们反复调整表面涂层的粗糙度参数,才把反射峰值移开视线方向。
4.2.1 理想反射 vs 真实反射
- 理想镜面反射: 入射角 = 出射角,光只往一个方向走。BRDF 是一个狄拉克 delta 函数。现实中只有完美抛光镜面接近这个状态。
- 理想漫反射: 光往所有方向均匀反射。BRDF 是一个常数。朗伯体就是这种,比如硫酸钡白板。
- 真实材料: 既有镜面峰,又有漫反射基底。比如塑料、油漆、石材。BRDF 是两者的混合。
避坑指南: 我曾经在仿真一个展厅时,把所有墙面都设成了理想漫反射(朗伯体)。结果算出来的照度均匀度非常完美,但实际建好后,墙面有微弱的光泽,导致局部出现亮斑。后来我改用实测的 BRDF 数据,才把仿真校准到 95% 以上吻合度。
记住:真实世界没有绝对的朗伯体。除非是特殊标准板,否则别偷懒用理想漫反射。
4.3 BSDF:加上透射,才是完整故事
BRDF 只处理反射。如果材料是半透明的(比如磨砂玻璃、灯罩、薄膜),光还会穿过去。这时候就需要 BSDF——Bidirectional Scattering Distribution Function,双向散射分布函数。
BSDF = BRDF(反射部分)+ BTDF(透射部分)。BTDF 就是 Bidirectional Transmittance Distribution Function。
你想想看,一块磨砂玻璃。从正面看,它有点模糊;从侧面看,它透光但看不清对面。这就是 BSDF 在起作用。入射光在玻璃内部被微颗粒散射,出射方向变得杂乱。
4.3.1 BSDF 的三种典型模式
| 模式 | 描述 | 常见材料 |
|---|---|---|
| 纯镜面透射 | 光直线穿过,方向不变 | 透明平板玻璃 |
| 定向散射透射 | 光主要沿原方向,但有轻微扩散 | 磨砂玻璃、薄纱 |
| 均匀漫透射 | 光向所有方向均匀透射 | 乳白亚克力、灯罩 |
仿真中的关键: 在 LightTools 或 TracePro 里设置 BSDF 时,通常需要导入实测的散射数据文件(.bsdf 格式)。如果没有实测数据,可以用 Harvey-Shack 模型或 ABg 模型来近似。我个人习惯用 ABg 模型,参数少,调起来快。
4.4 表面粗糙度:决定一切真实感的“开关”
为什么同样是不锈钢,拉丝面和镜面反射效果完全不同?答案就是表面粗糙度。粗糙度决定了微观表面的起伏程度,进而决定了反射光的扩散程度。
在仿真软件里,粗糙度通常用两个参数描述:
- Ra(算术平均粗糙度): 表面轮廓偏离平均线的绝对值的平均。单位 μm。
- Rq(均方根粗糙度): 表面轮廓偏离平均线的均方根值。单位 μm。Rq 对尖峰更敏感。
我记得有一次做博物馆照明仿真,展柜里的金器需要表现出那种“温润的金属光泽”。一开始我用默认的镜面材质,结果仿真图里金器亮得像镜子,完全不像文物。后来我把表面粗糙度从 0.01μm 调到 0.5μm,再配合微弱的漫反射层,效果一下子就对了。
4.4.1 粗糙度与散射模型的关系
粗糙度直接影响 BRDF 的形状。表面越光滑,BRDF 的镜面峰越尖锐;表面越粗糙,镜面峰越扁平,最终退化为漫反射。
常用的粗糙度-散射模型有:
- Cook-Torrance 模型: 基于微面元理论,适合金属和塑料。参数包括粗糙度、折射率、菲涅尔项。
- Oren-Nayar 模型: 适合粗糙漫反射表面,比如石膏、混凝土。
- Ward 模型: 各向异性版本,适合拉丝金属、CD 盘面。
我的经验: 在照明仿真中,不要盲目追求高精度 BRDF 模型。对于大多数建筑照明场景,用 Phong 模型或 Blinn-Phong 模型就足够了。只有在做车灯、光学镜头等高精度设计时,才需要上 Cook-Torrance 或实测 BSDF。
4.5 知识体系总览
下面这张图,把本章的核心概念串起来了。你可以把它当作一个快速索引。
4.6 实战中的参数设置建议
说了这么多理论,最后给点实在的。下面这张表是我自己总结的常见材料参数参考值,你可以直接拿去用。
| 材料 | 反射率 ρ | 透射率 τ | 粗糙度 Rq (μm) | BRDF 模型建议 |
|---|---|---|---|---|
| 白色乳胶漆墙面 | 0.82 | 0.00 | 2.0 ~ 5.0 | Oren-Nayar |
| 镜面不锈钢 | 0.60 | 0.00 | 0.01 ~ 0.05 | Cook-Torrance |
| 磨砂不锈钢 | 0.55 | 0.00 | 0.5 ~ 1.5 | Cook-Torrance |
| 3mm 超白玻璃 | 0.08 | 0.91 | 0.005 | BSDF (镜面透射) |
| 磨砂玻璃 | 0.10 | 0.85 | 0.5 ~ 2.0 | BSDF (定向散射) |
| 乳白亚克力灯罩 | 0.30 | 0.60 | 3.0 ~ 8.0 | BSDF (均匀漫透射) |
| 黑色哑光塑料 | 0.05 | 0.00 | 1.0 ~ 3.0 | Phong |
重要提醒: 上表中的数值是典型参考值,实际项目一定要以供应商提供的实测数据为准。尤其是透射率,不同厚度、不同工艺的玻璃或亚克力,透射率可能差 10% 以上。我曾经因为用了默认的玻璃透射率 0.92,结果实际装上去只有 0.85,导致展厅照度低了 8%,最后不得不加灯。
嗯,材料光学属性这部分,说到底就是三个字:守恒、分布、粗糙度。把这三个点抓住了,大部分照明仿真场景你都能搞定。下次遇到奇怪的光效,先别急着调灯光,回头看看材料参数——八成是那里出了问题。