场景光源
最近更新时间:2023-12-26
概述
光源的光线会对物体产生影响,引擎中的光照用于模拟光线在现实世界中的传播和交互。引擎使用了详细模型分析光线的工作原理,以达到更加逼真的效果,或使用简化模型来达到更加风格化的效果。
创建场景光源
在组件编辑器中,依次点击创建游戏对象(Create Game Object)-> 光源对象(Light Source Object),创建一个光源对象。

场景光源设置
在大纲(Hierarchy)面板中选中所创建的光源对象(LLightSource),然后在观察器(Inspector)面板中选中LightSourceComponent0(Inherited),在下方的空间可视对象(VisBase)分类中可进行光源的相关设置。

场景光源类型
引擎提供了不同的类型的光源,可根据应用于不同场景的需求选择合适的光源。
点(Point)光源、聚(Spot)光源、盒(Box)光源和面(Area)光源可通过光源(Light Source)对象的光源类型(Light Type)属性来选择。

点光源
可将点光源看作一个点,从该点发出的光线在空间中辐射出去,均匀地向四面八方发射。点光源通常用于模拟灯泡光源。

在场景中可先添加地形、直接光照(Direct Light)和模型对象,以便查看场景光源的效果。

聚光源
聚光源是一种具有方向性的光源,它从圆锥形中的单个点发出光线,可模拟聚焦光束的效果。聚光源通常用于模拟手电筒、舞台照明灯等光源。

盒光源
可将盒光源看作一个盒子,从盒子内部发出光线。盒光源通常用于模拟室内场景中的灯具、窗户等光源。

面光源
可将面光源看作一个具有面状形状的光源和一个发射光线的表面。面光源通常用于模拟大面积光源,如地板、墙壁等。

场景光源属性
光源基础属性
以下为场景光源的基础属性。

| 属性 | 说明 |
|---|---|
| 颜色(Color) | 光源发出的颜色 |
| 强度(Intensity) | 光源发出的总能量 |
| 高光强度(Specular Intensity) | 调节镜面光强度 |
| 闪烁强度(Flash Intensity) | 闪烁亮度偏移系数(与强度(Intensity)相乘) |
| 闪烁速度(Flash Speed) | 闪烁时淡入淡出的时间 |
| 闪烁停顿时间(Flash Peak Period) | 闪烁时保持最亮状态的时间与保持最暗状态的时间之和 |
| 启用镜头光晕(Enable Lens Flare) | 启用镜头效果,开启后将模拟镜片看向光源时的玻璃模糊效果 |
| 镜头光晕配置(Lens Flare Config) | 镜头效果配置文件 |
| 镜头光晕距离(Lens Flare Distance) | 镜头效果衰减距离 |
基础属性效果
颜色

强度

高光强度
图中展示了点光源照到镜子上后反射的高光效果。

在场景中放置一面镜子,用于查看场景光源照射到镜子后反射的高光效果。
闪烁
可通过修改光源的闪烁强度(Flash Intensity)、闪烁速度(Flash Speed)和闪烁停顿时间(Flash Peak Period)属性来实现不同的闪烁效果。
下图为闪烁强度(Flash Intensity)=1、闪烁速度(Flash Speed)=2、闪烁停顿时间(Flash Peak Period)=0.5的效果。

镜头光晕
若需场景光源产生镜头光晕效果,需先开启全局镜头光晕效果。在编辑器中依次点击菜单栏窗口(Windows) -> 默认效果(Default Effect),在默认效果(Default Effect)窗口中勾选镜头光晕(Lens Flare) -> 代理对象(Proxy Object) -> 镜头光晕(Lens Flare) -> 是否可见(Visible)。

启用光晕效果
勾选光源的启用镜头光晕(Enable Lens Flare)属性,即可看到该光源产生的镜头光晕效果。

镜头光晕配置
从项目(Project)面板中将镜头光晕文件(*.lensflare)拖拽到镜头光晕配置(Lens Flare Config)中,该镜头光晕文件的配置会覆盖全局的镜头光晕配置。

配置完成:

在资源预览窗口空白处右键,依次点击创建资源(Create Res) -> 镜头光晕(Lens Flare)可创建一个镜头光晕文件,双击该文件后可对其进行编辑。

镜头光晕距离
与光源距离一致,不同镜头光晕距离(Lens Flare Distance)的效果。


状态属性
以下为场景光源状态(State)分类下的属性。

| 属性 | 说明 |
|---|---|
| 是否可见(Visible) | 光源是否在场景中显示 |
| 激活(Active) | 启用光源效果 |
| 是否显示光源范围线框(Show Bounding Box) | 是否显示光源范围线框 |
| 是否影响体积雾(Affect Volumetric Fog) | 启用光源照射在雾中的效果 |
| 是否仅影响体积雾(Volumetric Fog Only) | 仅显示光源照射在雾中的效果,不显示光源照射在地面/物体上的效果 |
| 名称(Name) | 光源名称 |
| 当前高光亮度(Current Specular Intensity) | 不可修改 |
| 是否异步加载(Async Load) | 加快贴图加载速度 |
| 动态阴影贴图(Shadow Map Dynamic) | 自动刷新阴影贴图大小 |
| 辅助点名称(Helper Name) | 不可修改 |
点光源属性
以下为设置点光源的相关属性。

| 属性 | 说明 |
|---|---|
| 范围(Range) | 限制光的可见范围 |
| 常数衰减(Constant Attenuation) | 常数衰减因子 |
| 线性衰减(Linear Attenuation) | 线性衰减因子 |
| 径向衰减(Radial Attenuation) | 径向衰减因子 |
| 阴影贴图尺寸(Shadow Map Size) | 创建阴影时呈现的阴影贴图的大小 |
| 调整阴影贴图尺寸(Adapt Shadow Map Size) | 启用后,可以根据视距自动调整阴影贴图的大小 |
| 体积雾内散射强度(Volumetric Fog Inscatter Intensity) | 使用体积雾后,可用来控制体积雾的强度 |
属性效果
下图中为不同范围(Range)的点光源。选中光源后,可看到由线框包围的区域,该区域表示光源的可见范围。


可通过光源的是否显示光源范围线框(Show Bounding Box)属性开启关闭线框。
衰减
常数衰减(Constant Attenuation)、线性衰减(Linear Attenuation)、径向衰减(Radial Attenuation)属性用于调节光照区域内的光照强度。
衰减公式为:
d = max(d + Attenuation Coefficient 0, 0.0F);
float inten = max(0.0F, 1.0F - (Attenuation Coefficient 1 * d + Attenuation Coefficient 2 * d * d));
//如果衰减系数0和2的值都为0将会使用以下公式
float inten = max(0.0F, 1.0F - Attenuation Coefficient 1 * d);
//d是光照区域内的点到光源中心的距离
//以上公式计算的结果是光照强度
其中Attenuation Coefficient 0为常数衰减( Constant Attenuation),Attenuation Coefficient 1为线性衰减(Linear Attenuation),Attenuation Coefficient 2为径向衰减(Radial Attenuation)。
常数衰减
下图为线性衰减(Linear Attenuation)都为1,径向衰减(Radial Attenuation)都为0,不同常数衰减(Constant Attenuation)的效果。

线性衰减
下图为常数衰减(Constant Attenuation)都为0,径向衰减(Radial Attenuation)都为0,不同线性衰减(Linear Attenuation)的效果。

径向衰减
下图为常数衰减(Constant Attenuation)都为0,线性衰减(Linear Attenuation)都为1,不同径向衰减(Radial Attenuation)的效果。

体积雾内散射强度
首先需开启体素体积雾效果。在编辑器中依次点击菜单栏窗口(Windows) -> 默认效果(Default Effect),在默认效果(Default Effect)窗口中勾选体素体积雾(Voxel Fog Volume) -> 属性(Property) -> 是否可见(Visible)。

在大纲(Hierarchy)面板中选中LSceneSettings-1,在观察器(Inspector)面板中勾选上下文配置(Context Config)下的启用分块前向着色(Enable Tiled Forward Shading)属性。

在大纲(Hierarchy)面板中选中光源对象,在观察器(Inspector)面板中选中LightSourceComponent0(Inherited),然后勾选空间可视对象(VisBase) -> 状态(State) -> 是否影响体积雾(Affect Volumetric Fog)。

可通过调整光源的体积雾内散射强度(Volumetric Fog Inscatter Intensity)属性来控制体积雾强度。

在上述基础上,开启、关闭光源状态(State) -> 是否仅影响体积雾(Volumetric Fog Only)属性的效果如下图所示:


聚光源属性
以下为设置聚光源的相关属性。

| 属性 | 说明 |
|---|---|
| 遮罩贴图(Mask Map) | 设置聚光源加载的遮罩贴图 |
| 范围(Range) | 限制光的可见范围 |
| 线性衰减(Linear Attenuation) | 线性衰减因子 |
| 径向衰减(Radial Attenuation) | 径向衰减因子 |
| 内角度数(Inner Degree) | 设置聚光源椎体内部的角度(以度计) |
| 外角度数(Outer Degree) | 设置聚光源椎体外部的角度(以度计) |
| 衰减指数(Falloff Exponent ) | 聚光源强度的指数幂 |
| 阴影贴图尺寸(Shadow Map Size) | 创建阴影时呈现的阴影贴图的大小 |
| 调整阴影贴图尺寸(Adapt Shadow Map Size) | 启用后,可以根据视距自动调整阴影贴图的大小 |
| 体积雾内散射强度(Volumetric Fog Inscatter Intensity) | 使用体积雾后,可用来控制体积雾的强度 |
属性效果
遮罩贴图
遮罩贴图(Mask Map)属性用于修改聚光源照亮区域的模式(Pattern)。
从资源预览窗口中将一个遮罩贴图拖拽到光源对象(LLightSource)的遮罩贴图(Mask Map)中,为该光源添加遮罩贴图。

效果:

范围
范围(Range)属性用于调整光源照亮的区域。选中光源,可看到由线框包围的区域,该区域表示光源的可见范围。


衰减
线性衰减(Linear Attenuation)、径向衰减(Radial Attenuation)属性用于调节光照区域内的光照强度。
衰减公式为:
float attenu = max(0.0F, 1.0F - (Attenuation Coefficient 1 * d + Attenuation Coefficient 2 * d * d));
//如果衰减系数2的值为0将会使用以下公式
float attenu = max(0.0F, 1.0F - Attenuation Coefficient 1 * d);
//d是光照区域内的点到光源中心的距离
//以上公式计算的结果是光照强度
其中Attenuation Coefficient 1为线性衰减(Linear Attenuation),Attenuation Coefficient 2为径向衰减(Radial Attenuation)。
线性衰减
下图为径向衰减(Radial Attenuation)都为0,不同线性衰减(Linear Attenuation)的效果。

径向衰减
下图为线性衰减(Linear Attenuation)都为0,不同径向衰减(Radial Attenuation)的效果。

内角度数
外角度数(Outer Degree)=30,不同内角度数(Inner Degree)的效果。


外角度数
内角度数(Inner Degree)=15,不同外角度数(Outer Degree)的效果。


衰减指数

体积雾内散射强度
有关聚光源的体积雾内散射强度(Volumetric Fog Inscatter Intensity)效果的开启和使用可参考点光源体积雾内散射强度。

盒光源属性
以下为设置盒光源的相关属性。
| 属性 | 说明 |
|---|---|
| 常数衰减(Constant Attenuation) | 常数衰减因子 |
| 线性衰减(Linear Attenuation) | 线性衰减因子 |
| 径向衰减(Radial Attenuation) | 径向衰减因子 |
| 光源盒尺寸(Light Box Scale) | 盒的尺寸 |
属性效果
衰减
常数衰减(Constant Attenuation)、线性衰减(Linear Attenuation)、径向衰减(Radial Attenuation)属性用于调节光照区域内的光照强度。
衰减公式为:
d = max(d + Attenuation Coefficient 0, 0.0F);
float attenu = max(0.0F, 1.0F - (Attenuation Coefficient 1 * d + Attenuation Coefficient 2 * d * d));
//如果衰减系数0和2的值都为0将会使用以下公式
float attenu = max(0.0F, 1.0F - c_Attenu.y * d);
//d是光照区域内的点到光源中心的距离
//以上公式计算的结果attenu将会与光照强度相乘
其中Attenuation Coefficient 0为常数衰减( Constant Attenuation),Attenuation Coefficient 1为线性衰减(Linear Attenuation),Attenuation Coefficient 2为径向衰减(Radial Attenuation)。
常数衰减
下图为线性衰减(Linear Attenuation)都为1,径向衰减(Radial Attenuation)都为0,不同常数衰减( Constant Attenuation)的效果。

线性衰减
下图为常数衰减( Constant Attenuation)都为0,径向衰减(Radial Attenuation)都为0,不同线性衰减(Linear Attenuation)的效果。

径向衰减
下图为常数衰减( Constant Attenuation)都为0,线性衰减(Linear Attenuation)都为0,不同径向衰减(Radial Attenuation)的效果。

光源盒尺寸


面光源属性
以下为设置面光源的相关属性。
| 属性 | 说明 |
|---|---|
| 范围(Range) | 限制光的可见范围 |
| 区高度(Area Height) | 面光源沿局部Y轴的长度 |
| 区宽度(Area Width) | 面光源沿局部Z轴的长度 |
| 照亮角度(Area Angle) | 照亮的区域角度 |
| 阴影贴图尺寸(Shadow Map Size) | 创建阴影时呈现的阴影贴图的大小 |
| 调整阴影贴图尺寸(Adapt Shadow Map Size) | 启用后,可以根据视距自动调整阴影贴图的大小 |
属性效果
范围
范围(Range)属性用于调整光源照亮的区域。

区高度/区宽度
通过区高度(Area Height)和区宽度(Area Width)属性可调整面光源的尺寸大小。


照亮角度

阴影设置
在大纲(Hierarchy)面板中选中LSceneSettings-1,勾选上下文配置(Context Config)下的启用动态阴影效果(Enable Dynamic Shadow)。

点光源、聚光源和面光源使用阴影时需要设置阴影贴图尺寸(Shadow Map Size)的值(必须大于0)。启用调整阴影贴图尺寸(Adapt Shadow Map Size)后,将不使用阴影贴图尺寸(Shadow Map Size)的值,且会自动计算阴影贴图的大小,此时阴影贴图尺寸(Shadow Map Size)的值也必须大于0。
关闭调整阴影贴图尺寸(Adapt Shadow Map Size),设置不同阴影贴图尺寸(Shadow Map Size)的效果如下图所示:

以下为在阴影贴图尺寸(Shadow Map Size)都为1024的面光源照射下,启用、关闭调整阴影贴图尺寸(Adapt Shadow Map Size)的效果。
未启用调整阴影贴图尺寸:

启用调整阴影贴图尺寸:

移动光源下的模型,默认情况下,其阴影会实时跟随模型移动,可通过状态(State) -> 动态阴影贴图(Shadow Map Dynamic)属性来关闭该功能。
使用动态阴影贴图(Shadow Map Dynamic)前,需先依次点击菜单栏窗口(Windows) -> 默认效果(Default Effect),然后在默认效果(Default Effect)窗口中,勾选光照管理器(Light Manager)下的是否优化阴影贴图生成(Shadow Map Optimal)属性,并取消勾选是否使用阴影池(Use Shadow Pool)。

若场景中有LQualityVolume,可直接选中LQualityVolume,然后在观察器(Inspector)面板中选中光照管理器(LightManager),勾选是否优化阴影贴图生成(Shadow Map Optimal)属性,并取消勾选是否使用阴影池(Use Shadow Pool)。

此时,若取消勾选动态阴影贴图(Shadow Map Dynamic),移动模型,阴影不会跟随模型移动,效果如下图:

若勾选动态阴影贴图(Shadow Map Dynamic),移动模型,阴影跟随模型移动,效果如下图:
![]()