一、基类Light和Object3D
看文档
SpotLight
、DirectionalLight
、环境光AmbientLight
等光源对象都有一个共同的基类Light
, 光源Light
t也有一个基类Object3D
。也就是说three.ts
环境光、点光源等子类光源可以继承Light
和Object3D
两个父类的属性和方法。
1. 光源位置属性
- 光源对象继承父类
Object3D
的位置属性.position
。 - 以点光源
PointLight
为例,PointLight
的基类是Light
,Light
的基类是Object3D
,点光源自然继承对象Object3D
的位置属性.position
。javascriptconst point = new THREE.PointLight(0xffffff);//点光源 // 设置点光源位置 // 光源对象和模型对象的position属性一样是Vector3对象 point.position.set(400, 200, 300);
- 光源对象的
.add()
方法同样继承自基类Object3D
javascript// 环境光对象添加到scene场景中 scene.add(ambient); // 点光源对象添加到scene场景中 scene.add(point);
2. 光源颜色属性.color
和强度属性.intensity
- 查看光源光源
Light
文档,可以看到该类定义了光源颜色属性.color
和强度系数属性.intensity
。 - 光源颜色属性
.color
默认值是白色0xffffff
,强度属性.intensity
默认1.0
,光照计算的时候会把两个属性值相乘。 - 比如环境光颜色设置为
0xffffff
,强度系数设置为0.5
,把0.5
设置为0.8
,three.ts
场景中模型会变得更明亮。调节环境颜色你可以直接设置不同颜色值,比如0x44444
、0xddddddd
, 也可以使用更为方便的强度系数去调节。对于点光源、聚光源和环境光一样继承基类Light
强度系数属性.intensity
。javascript// 环境光:颜色设置为`0xffffff`,强度系数设置为0.5 const ambient = new THREE.AmbientLight(0xffffff,0.5); scene.add(ambient);