首页 / three.js / API 文档
AmbientLight
先看结论
全局环境光,从各个方向均匀照亮所有物体,用来抬起暗部、避免纯黑。
new THREE.AmbientLight(color, intensity) → AmbientLight
构造参数
| 参数 | 默认 | 说明 |
|---|---|---|
color | 0xffffff | 环境光颜色,偏蓝代表天光,偏暖代表地面反射 |
intensity | 1 | 强度,常取 0.2 到 0.6,过高会洗掉明暗对比 |
属性
| 属性 | 说明 |
|---|---|
color | Color 实例,支持 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)。