场景光源
最近更新时间: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),移动模型,阴影跟随模型移动,效果如下图: