AmbientLight 环境光光源

—> Light —> Object3D

AmbientLight 光源会影响整个场景, 没有方位, 改变 position 中的 x、y、z, 效果不变. 下面使用了三种接收光照的材质: MeshLambertMaterialMeshStandardMaterialMeshPhongMaterial, 材质的颜色均为 0xffffff, 可见环境光是什么颜色, 物体便整体的都呈现出这种颜色, 不具阴影. 任随物体如何旋转, 任何部位的颜色都一致, 所以一般情况下, 不会将它作为场景中的唯一光源.

function AmbientLight( color, intensity ) { } var light = new THREE.AmbientLight(0xffff00); scene.add(light); var cubeMaterial = new THREE.MeshLambertMaterial({color: 0xffffff}), sphereMaterial = new THREE.MeshStandardMaterial({color:0xffffff}), fishMaterial = new THREE.MeshPhongMaterial({color: 0xffffff, side:THREE.DoubleSide});

Attributes

type : String

Default value : 'AmbientLight'
Description : 类型.

isAmbientLight : Boolean

Default value : true (只读)
Description : 类型是否为AmbientLight.

castShadow : Boolean

Default value : false
Description : 是否投影.

图解API

光的颜色怎么作用于物体的材质Material上呢?当光的颜色是0xffffff时, 物体的材质是什么颜色, 最终物体就会呈现什么颜色;当物体的材质的颜色是0xffffff时, 光是什么颜色, 最终物体也会呈现什么颜色, 如上图的最左边的黄球. 实际上, 计算机所生成的最终画面, 分别由物体和光的R、G、B分量相乘得到. 当光的颜色为0xffff00时, 与0xff0000相乘, 可以保留红色分量;与0x00ff00相乘, 可以保留绿色分量;但与0x0000ff相乘时, 光的红绿分量在物体中为0, 物体材质的蓝色分量在光的对应分量上也为0, 所得最终结果是R、G、B分量全为0 —— 黑色. 所以黄光照在红球和绿球上, 都能呈现材质的原有颜色, 但照在蓝球上, 我们只能看到一个黑球. 点开查看

var light = new THREE.AmbientLight( 0xffff00 ); scene.add(light); var geometry = new THREE.SphereGeometry(3, 40, 40); createMesh(0xffffff, -15); createMesh(0xff0000, -5); createMesh(0x00ff00, 5); createMesh(0x0000ff, 15); function createMesh(c, x){ var mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({ color:c })); scene.add(mesh); mesh.position.x = x; }