首页 / deck.gl / API 文档
AmbientLight
先看结论
环境光。没有位置和方向,从各个角度均匀照亮物体,决定阴影面、背光面的亮度底线。
new deck.AmbientLight({ color, intensity })
参数
| 参数 | 默认 | 说明 |
|---|---|---|
color | [255, 255, 255] | RGB 数组,取值 0 到 255 |
intensity | 1.0 | 强度倍率,大于 1 会过曝 |
属性
| 属性 | 说明 |
|---|---|
color | 光的颜色,RGB 数组 |
intensity | 强度 |
type | 恒为 'ambient',用于区分光源类型 |
示例
var ambient = new deck.AmbientLight({
color: [235, 240, 255],
intensity: 1.1
});
var lightingEffect = new deck.LightingEffect({
ambientLight: ambient,
directionalLights: [
new deck.DirectionalLight({
color: [255, 250, 235],
intensity: 2.0,
direction: [-3, -9, -1]
})
]
});
强度怎么定
环境光太强时,所有面亮度接近,体块失去立体感,画面像贴纸; 太弱时背光面接近纯黑,建筑的层次被吃掉。 常见做法是把环境光控制在 0.8 到 1.2,让平行光承担主要的明暗对比。 夜间场景反而要压低环境光,只留低强度的冷色,突出灯火效果。
环境光与材质的 ambient 系数相乘。材质写成
ambient: 0.1 时,即使环境光强度为 3,表面也只有 0.3 的亮度贡献。
v9 的不可变更新
光源对象本身可以直接改属性,但 deck.gl 9 的图层实例不可变。
光源调整后要让画面生效,通常把图层 clone 一份再
deckgl.setProps,否则 effect 的变更可能不会触发重绘:
ambient.intensity = 0.6;
deckgl.setProps({
effects: [lightingEffect],
layers: deckgl.props.layers.map(function (layer) {
return layer.clone({});
})
});
一个场景只放一个环境光。LightingEffect 的
ambientLight 是单个对象而不是数组。需要两种色温混合时,
调整 color 与 intensity,不要试图构造多个环境光叠加。
经纬志(2026)。《AmbientLight》。https://www.jingweizhi.com/deckgl/api/ambient-light.html(访问日期 2026-11-03)。