跳至主要內容

SpotLight

yisky大约 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  // 阴影图类型    

      }

      ........   

  }

} );

属性

  • light - 获取 three.js 原生聚光灯对象(SpotLightopen in new window),只读属性。

  • intensity - 设置聚光灯强度,单位:candela(坎德拉),只写属性。

  • power - 设置聚光灯光通量,单位:lumen(流明),只写属性。

  • watts - 设置聚光灯辐射通量,单位:watts(瓦),只写属性。

提示

辐射通量与光通量转换公式如下所示[1]

power=watts683

光通量与强度转换公式如下所示:

power=4πintensity

强度与辐射通量转换公式如下所示:

intensity=watts683πwidthheight
  • angle - 设置聚光灯光线照射范围的角度,单位:弧度,只写属性。

注意

该属性取值范围在 [ 0 ~ Math.PI/2 ] 之间。

  • distance - 设置聚光灯衰减距离,当设置为零时,表示永不衰减。当值不为零时,光线会先按照平方反比定律衰减,直到距离截止点附近,然后线性衰减到0。只写属性。

  • penumbra - 设置聚光灯照明区域在边缘附近的平滑衰减速度,只写属性。

注意

该属性取值范围在 [ 0 ~ 1 ] 之间。

  • position - 设置聚光灯位置(本地坐标系),只写属性。

  • target - 设置聚光灯目标位置(本地坐标系),只写属性。

  • direction - 设置聚光灯朝向(本地坐标系),只写属性。

方法

提示

setTarget 第二个参数定义“目标位置”是本地坐标系还是世界坐标系,默认 false 本地坐标系。


  1. 按现代光通量的定义,波长为555nm的1watts辐射通量,有683lumen的光通量。人眼对555nm波长的光最为敏感,即 1watts=683lumen↩︎

上次编辑于: