首页 / three.js / 使用示例
物理光照
三盏功率完全相同的点光源,分别挂在 2.5、6、11 个单位的灯杆上。 地面出现三个亮度差异巨大的光斑,左下角把照度按距离的衰减次方算给你看。
源码与运行效果
强度单位变了
0.160 默认使用物理光照单位:PointLight 的强度是坎德拉,
照度按 1 / 距离² 衰减。decay 为 2 就是平方反比,
调到 1 则是线性衰减,可用滑杆直接对照。
过去那套写意强度(强度 1 就足够亮)已经不再适用。灯要照亮十米外的地面, 强度得给到几百,与真实世界里的灯泡参数同量级。 从旧项目迁移时,几乎所有灯光强度都要乘上几十倍。
| 参数 | 取值 | 说明 |
|---|---|---|
intensity | 380 cd | 滑杆 20 – 400 再乘 2.1 |
decay | 2.0 | 平方反比,可调到 0.6 |
distance | 0 | 0 表示不做截断 |
| 灯高 | 2.5 / 6 / 11 | 照度相差约二十倍 |
为什么暗部还能看见
场景里只放了一盏极弱的半球光,强度 0.9 的百分之一量级, 它不参与物理衰减计算,负责把纯黑区域抬到可辨认的层次。 真实照明设计里,环境光就是干这个的:不制造光影,只保证轮廓可读。
灯具数量与衰减要一起算。平方反比下,照度随高度衰减得很快, 要照亮同一片地面,灯高一倍强度就得四倍。 城市夜景里密集的低杆灯往往比少量高杆灯更有效。