DirectionalLight
大约 2 分钟组件文档组件DirectionalLight
DirectionalLight——方向光组件,沿着特定方向发射。这种光的表现像是无限远,从它发出的光线都是平行的。常常用平行光来模拟太阳光的效果。 太阳足够远,因此我们可以认为太阳的位置是无限远,所以我们认为从太阳发出的光线也都是平行的。
创建
import { Vector3 } from 'three';
import { DirectionalLight } from '@fantasy3d/core';
const { rootEntity } = scene;
// 在场根实体上添加方向光组件
rootEntity.addComponent( DirectionalLight, {
color: '#ffffff', // 方向光颜色
intensity: 1.0 * Math.PI, // 方向光强度
position: new Vector3( 20.0, 20.0, 20.0 ), // 方向光位置
target: new Vector3( 0.0, 0.0, 0.0 ) // 方向光目标点
} );
提示
DirectioanlLight 组件初始化参数,详见 DirectionalLightOptions。
阴影
DirectionalLight 组件支持阴影,可以在初始化时设置阴影参数,如下所示:
import { Vector3 } from 'three';
import { DirectionalLight } from '@fantasy3d/core';
const { rootEntity } = scene;
// 在场根实体上添加环境光组件
rootEntity.addComponent( DirectionalLight, {
color: '#ffffff', // 方向光颜色
intensity: 1.0 * Math.PI, // 方向光强度
position: new Vector3( 20.0, 20.0, 20.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,
frustumSize: 1024
}
}
} );
提示
阴影参数,详见 LightShadowOptions。
重要
引擎(Engine)创建时,需要启用阴影图,否则灯光阴影不生效,如下所示:
import { PCFSoftShadowMap } from 'three';
import { Engine } from '@fantasy3d/core';
// 创建引擎对象
const engine = new Engine( {
gl: {
........
// 阴影图参数
shadowMap: {
eanbled: true, // 启用阴影图
type: PCFSoftShadowMap // 阴影图类型
}
........
}
} );
属性
light - 获取 three.js 原生方向光对象(DirectionalLight),只读属性。
color - 设置方向光颜色,只写属性。
intensity - 设置方向光强度,只写属性。
position - 设置方向光位置(本地坐标系),只写属性。
target - 设置方向光目标位置(本地坐标系),只写属性。
direction - 设置方向光朝向(本地坐标系),只写属性。
方法
- setTarget - 设置方向光目标位置。
提示
setTarget 第二个参数定义“目标位置”是本地坐标系还是世界坐标系,默认 false 本地坐标系。
- translateTargetOnAxis - 将方向光沿指定方向(本地坐标系)平移一段距离。