跳至主要內容

PointLight

yisky大约 2 分钟组件文档组件PointLight

PointLight———点光源组件,从一个点向各个方向发射光。例如,模拟一个灯泡发出的光。

创建

import { PointLight } from '@fantasy3d/core';

const { rootEntity } = scene;

// 在场景根实体上添加点光源组件
rootEntity.addComponent( PointLight, {

    color: '#ffffff',               // 点光颜色
    intensity: 600.0 * Math.PI,     // 点光强度
    distance: 100.0                 // 点光照射距离

} );

提示

PointLight 组件初始化参数,详见 PointLightOptions

阴影

PointLight 组件支持阴影,可以在初始化时设置阴影参数,如下所示:

import { PointLight } from '@fantasy3d/core';

const { rootEntity } = scene;

// 在场景根实体上添加点光源组件
rootEntity.addComponent( PointLight, {

    color: '#ffffff',               // 点光颜色
    intensity: 600.0 * Math.PI,     // 点光强度
    distance: 100.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 原生点光源对象(PointLightopen in new window),只读属性。

  • color - 设置点光源颜色,只写属性。

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

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

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

提示

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

power=watts683

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

power=4πintensity

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

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

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


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

上次编辑于: