经纬志
首页 / three.js / API 文档

AmbientLight

先看结论

全局环境光,从各个方向均匀照亮所有物体,用来抬起暗部、避免纯黑。

最后验证 2026-11-03 · three.js 0.160.0 · 更新 2026-10-28 · 引用本文
new THREE.AmbientLight(color, intensity) → AmbientLight

构造参数

参数默认说明
color0xffffff环境光颜色,偏蓝代表天光,偏暖代表地面反射
intensity1强度,常取 0.2 到 0.6,过高会洗掉明暗对比

属性

属性说明
colorColor 实例,支持 setHex、setHSL 等方法
intensity标量倍数,直接相加到每个片元的环境项
isAmbientLight只读标记
position / rotation继承自 Object3D,但对环境光没有任何影响

方法

方法说明
dispose()释放灯光相关资源,移除时调用
clone()复制一份灯光,属性独立
copy(source)把源灯光的颜色与强度复制进来

基本用法

// 冷色天光抬暗部,强度压低,保留主光的方向感
const ambient = new THREE.AmbientLight(0x89a7c4, 0.35);

// 环境光不需要位置,直接加到场景即可
scene.add(ambient);

环境光没有位置也没有方向,每个面接收到的亮度完全相同。 因此它不会产生高光,也不会产生阴影,只负责把纯黑的背光面提到可见。

与 HemisphereLight 的分工

HemisphereLight 按法线朝上或朝下混合两种颜色, 天空色作用于朝上的面,地面色作用于朝下的面,因此仍有上下之分。 环境光则是彻底均匀的一层底色。室外场景用半球光更自然, 室内顶灯环境或需要压掉所有方向差异的示意图才用环境光。

// 天空偏蓝、地面偏土黄,强度 1.1,比环境光更有体积感
scene.add(new THREE.HemisphereLight(0xbcd8ff, 0x1a2418, 1.1));

强度怎么定

环境光与主光相加,两者都调高就会过曝。常见配比是主光 2.0 到 3.0、 环境光 0.3 到 0.5;如果使用 scene.environment 提供环境反射, 环境光通常可以直接去掉,因为环境贴图已经承担了这部分补光。

需要严格的日照与阴影分析时,环境光会让背光面也变亮, 从而削弱地形起伏的判读。这类场景应当降低环境光,改用更强的平行光与阴影。

环境光不能当补光用。它无法区分正面与背面,也无法参与阴影计算。 想补亮某个方向,应增加一盏低强度的平行光或点光源,而不是继续提高环境光强度。

three.js 是三维渲染库,不是地图库。环境光只参与像素着色, 不决定底图、注记或要素样式,也不做任何坐标转换。

引用本文

经纬志(2026)。《AmbientLight》。https://www.jingweizhi.com/three/api/ambient-light.html(访问日期 2026-11-03)。