SpotLight
大约 3 分钟组件文档组件SpotLight
SpotLight———聚光灯组件,光线从一个点沿一个方向射出,随着光线照射的变远,光线圆锥体的尺寸也逐渐增大。例如,模拟汽车车灯。
创建
import { Vector3 } from 'three';
import { SpotLight } from '@fantasy3d/core';
const { rootEntity } = scene;
// 在场景根实体上添加聚光灯组件
rootEntity.addComponent( SpotLight, {
color: '#ffffff', // 聚光灯颜色
intensity: 600.0 * Math.PI, // 聚光灯强度
distance: 100.0, // 聚光灯照射距离
position: new Vector3( 0.0, 20.0, 0.0 ), // 聚光灯位置
target: new Vector3( 0.0, 0.0, 0.0 ) // 聚光灯目标点
} );
提示
SpotLight 组件初始化参数,详见 SpotLightOptions。
阴影
SpotLight 组件支持阴影,可以在初始化时设置阴影参数,如下所示:
import { Vector3 } from 'three';
import { SpotLight } from '@fantasy3d/core';
const { rootEntity } = scene;
// 在场景根实体上添加聚光灯组件
rootEntity.addComponent( SpotLight, {
color: '#ffffff', // 聚光灯颜色
intensity: 600.0 * Math.PI, // 聚光灯强度
distance: 100.0, // 聚光灯照射距离
position: new Vector3( 0.0, 20.0, 0.0 ), // 聚光灯位置
target: new Vector3( 0.0, 0.0, 0.0 ), // 聚光灯目标点
castShadow: true, // 开启阴影投射
// 阴影参数
shadow: {
bias: -0.005,
mapSize: 2048,
camera: {
near: 0.1,
far: 1000.0
}
}
} );
提示
阴影参数,详见 LightShadowOptions。
重要
引擎(Engine)创建时,需要启用阴影图,否则灯光阴影不生效,如下所示:
import { PCFSoftShadowMap } from 'three';
import { Engine } from '@fantasy3d/core';
// 创建引擎对象
const engine = new Engine( {
gl: {
........
// 阴影图参数
shadowMap: {
eanbled: true, // 启用阴影图
type: PCFSoftShadowMap // 阴影图类型
}
........
}
} );
属性
intensity - 设置聚光灯强度,单位:candela(坎德拉),只写属性。
power - 设置聚光灯光通量,单位:lumen(流明),只写属性。
watts - 设置聚光灯辐射通量,单位:watts(瓦),只写属性。
- angle - 设置聚光灯光线照射范围的角度,单位:弧度,只写属性。
注意
该属性取值范围在 [ 0 ~ Math.PI/2 ] 之间。
distance - 设置聚光灯衰减距离,当设置为零时,表示永不衰减。当值不为零时,光线会先按照平方反比定律衰减,直到距离截止点附近,然后线性衰减到0。只写属性。
penumbra - 设置聚光灯照明区域在边缘附近的平滑衰减速度,只写属性。
注意
该属性取值范围在 [ 0 ~ 1 ] 之间。
方法
- setTarget - 设置聚光灯目标位置。
提示
setTarget 第二个参数定义“目标位置”是本地坐标系还是世界坐标系,默认 false 本地坐标系。
- translateTargetOnAxis - 将聚光灯沿指定方向(本地坐标系)平移一段距离。
按现代光通量的定义,波长为555nm的1watts辐射通量,有683lumen的光通量。人眼对555nm波长的光最为敏感,即
。 ↩︎