基类 Light 和 Object3D
优质
小牛编辑
129浏览
2023-12-01
前面课程对光源的介绍主要是从认识光源的角度介绍的,本节课主要从编写代码角度介绍,根据类的继承关系设置光源对象的相关属性。
你查看文档SpotLight、DirectionalLight、环境光AmbientLight等光源对象都有一个共同的基类Light,光源Light也有一个基类Object3D。也就是说Threejs环境光、点光源等子类光源可以继承Light
和Object3D
两个父类的属性和方法。
光源位置属性
光源对象继承父类Object3D的位置属性.position
。
以点光源PointLight 为例,PointLight
的基类是Light,Light
的基类是Object3D,点光源自然继承对象Object3D
的位置属性.position
。
var point = new THREE.PointLight(0xffffff);//点光源
//设置点光源位置
//
//光源对象和模型对象的position属性一样是Vector3对象
point.position.set(400, 200, 300);
光源对象的.add()
方法同样继承自基类Object3D
//环境光对象添加到scene场景中
scene.add(ambient);
//点光源对象添加到scene场景中
scene.add(point);
光源颜色属性.color
和强度属性.intensity
你查看光源光源Light文档,可以看到该类定义了光源颜色属性.color
和强度系数属性.intensity
。
光源颜色属性.color
默认值是白色0xffffff
,强度属性.intensity
默认1.0,光照计算的时候会把两个属性值相乘。
比如环境光颜色设置为0xffffff
,强度系数设置为0.5,把0.5设置为0.8,threejs场景中模型会变得更明亮。调节环境颜色你可以直接设置不同颜色值,比如0x44444
、0xddddddd
,也可以使用更为方便的强度系数去调节。对于点光源、聚光源和环境光一样继承基类Light强度系数属性.intensity
。
//环境光:颜色设置为`0xffffff`,强度系数设置为0.5
var ambient = new THREE.AmbientLight(0xffffff,0.5);
scene.add(ambient);