光源组件(LightComponent)

对应3D场景中的光源Actor,包括方向光、环境光、点光源和聚光源Actor,它们都使用灯光组件。无论您选择哪种光源类型,都有一些常用灯光设置属性(如光照颜色、光照强度),还有单独的设置属性。

对于编辑器用户来说,允许自定义创建的光源组件目前共有两种:

  1. 点光源

  2. 聚光灯

不允许用户创建但是允许修改其属性的系统内置的光源有两种:

  1. 方向光

  2. 环境光

这里主要介绍点光源和聚光灯。

1. 属性

1.1. 点光源

属性

  • 颜色: 用于指定点光源的颜色,不同颜色的灯光照亮模型时所表现出的效果不一样:

    设置颜色

  • 强度: 用于指定点光源的光照强度,越强的灯光对于模型的影响越狠:

    设置光照强度

  • 半径: 用于设置光源的照射范围,点光源就像蜡烛一样,距离蜡烛越远的物体被照射的效果越差,直到几乎没有效果,点光源也是:

    设置光照半径

  • 衰减值: 刚刚说过距离点光源越远的物体被照射的效果越差,而这个值就决定了衰减的速度:

    设置衰减值

1.2. 聚光灯

属性

聚光灯相较点光源来说,多了内锥角和外锥角两个参数。对于这两个参数的解释:

  1. 聚光灯内锥角内的物体被强光照射。
  2. 聚光灯内锥角到外锥角范围内的物体,从强光到弱光渐变地照射。
  3. 聚光灯外锥角范围外的物体,不会被照射。

在内锥角和外锥角一样时,只有1, 3两种状态: alt

在内锥角为0时,只有2, 3两种状态: alt

内锥角的定义主要用于定义聚光灯边缘的光照效果的柔软度,

外锥角的定义主要用于定义聚光灯的光照范围:

修改内外锥角

2. 在代码中获取

local comp = lightActor:GetRootComponent()

我们可以通过设置光源的类型, 例如设置类型为环境光或者电光源等.

---设置为平行光 参数: 光色, 方向, 光照强度
comp:SetAsDirLight(vColor, vDir, fLuminance)
---设置为环境光 参数 颜色 索引 光照强度
comp:SetAsEnvLight(vColor, nIndex, fLuminance)
---设置为电光源 参数 XPointLightDesc
local pDesc = XPointLightDesc()
---设置颜色
pDesc.clrColorVal = vColor
---设置光照强度
pDesc:fLuminance = fLuminance
---设置位置
pDesc.vPos = vPos
---设置半径
pDesc.fRadius = fRadius
---设置衰减值
pDesc.fFallOffExponent = fFallOffExponent
comp:SetAsPointLight(pDesc)
---设置为点光源 参数 XSpotLightDesc
pDesc = XSpotLightDesc()
---设置颜色
pDesc.clrColorVal = vColor
---设置光照强度
pDesc:fLuminance = fLuminance
---设置位置
pDesc.vPos = vPos
---设置朝向
pDesc.vDir = vDir
---设置半径
pDesc.fRadius = fRadius
---设置衰减值
pDesc.fFallOffExponent = fFallOffExponent
comp:SetAsSpotLight(pDesc)

对于所有类型的光, 我们都可以设置光的颜色

--获取光源颜色
---@class XCOLORBASE
local color = comp:GetLightColor()
--设置光源颜色
comp:SetLightColor(color)

对于所有类型的光, 我们都可以设置光照强度

--获取光照强度
local fLuminace = comp:GetLightLuminance()
--设置光照强度
comp:SetLightLuminance(fLuminace)

对于点光源和聚光源, 我们可以设光照半径

--获取光照半径
local fRadius = comp:GetLightRadius()
--设置光照半径
comp:SetLightRadius(fRadius)

对于点光源和聚光源, 我们可以设置光源的衰减值

--获取光源衰减值
local fFallOff = comp:GetLightFallOffExponent()
--设置光源衰减值
comp:SetLightFallOffExponent(fFallOff)

对于聚光源, 我们可以设置其内锥角和外锥角

--获取内锥角
local fInnerAngle = comp:GetLight():GetConeInnerAngle()
--设置内锥角
comp:SetLightConeInnerAngle(fInnerAngle)
--获取外锥角
local fOuterAngle = comp:GetLight():GetConeOuterAngle()
--设置外锥角
comp:SetLightConeOuterAngle(fOuterAngle)
@Copyright © cosmos 2019 all right reserved,powered by Gitbook修订时间: 2021-04-12 18:28:14

results matching ""

    No results matching ""