天空光照(Sky Light)采集关卡的远处部分并将其作为光源应用于场景。这意味着,即使天空来自大气层、天空盒顶部的云层或者远山, 天空的外观及其光照/反射也会匹配。您还可以手动指定要使用的立方体贴图。
场景采集
天空光照将仅在某些情况下才采集场景:
对于 静态天空光照(Static Sky Lights),构建光照时会自动进行更新。
对于 静止(Stationary) 或 可移动天空光照(Movable Sky Lights),在加载时更新一次,只有调用 重新采集天空(Recapture Sky) 时才会进一步更新。这可以通过 详细信息(Details) 面板或通过游戏中的蓝图调用执行。
如果您更改了天空盒使用的纹理,天空盒不会自动知道要进行更新。您需要使用上述方法之一为其进行更新。
应使用天空光照而不是环境立方体贴图来表示天空的光照,因为天空光照支持局部阴影,局部阴影可以防止室内区域被天空照亮。
移动性
与其他光源类型类似,天空光照可以设置为以下 移动性 之一:
移动性 |
说明 |
---|---|
静态(Static) |
游戏中不能更改光照。这是最快的渲染方法,并且允许烘焙的光照。 |
静止(Stationary) |
构建光照时,将仅从静态几何体采集阴影和光照反射。所有其他光照都将为动态。该设置还允许光线在游戏中更改颜色、强度和立方体贴图,但它不会移动且允许局部烘焙光照。 |
可移动(Movable) |
可以根据需要在游戏中移动和更改光照。 |
静态天空光照
设置为 静态(Static) 的天空光照将被完全烘焙到关卡中的静态对象的光照图中,因此不需要任何成本。在对该光源的属性进行编辑后,所做的更改将不可见, 直至为关卡重新构建了光照。
对于移动开发,这是唯一一种受支持的天空光照。
使用静态天空光照时,将仅采集关卡中移动性设置为 静态(Static) 或 静止(Stationary) 的Actor和光源,并且将仅使用它们进行照明。此外,为了避免反馈循环, 使用静态天空光照时,只能采集材质的自发光贡献部分。因此,请确保任何天空盒具有设置为 无光照(Unlit) 的材质。
静止天空光照
与设置为静态(Static)的天空光照一样,设置为 静止(Stationary) 的天空光照从全局光照获得烘焙阴影。您在关卡中放置了静止天空光照后, 您必须至少重新构建光照一次,才能生成和显示烘焙阴影。
与其他静止光源一样,一些属性可以在运行时通过 蓝图(Blueprint) 或 Sequencer 进行更改。这意味着,您可以调整 此天空光照的 强度(Intensity) 或 颜色(Color),而无需重新构建整个关卡的照明。然而,间接光照将被烘焙到光照图中,并且无法在运行时进行修改。间接光照量 可以使用 间接光照强度(Indirect Lighting Intensity)来控制。
使用静止天空光照时,将仅采集关卡中移动性设置为 静态(Static) 或 静止(Stationary) 的Actor和光源,并且将仅使用它们进行照明。此外,为了避免反馈循环, 使用静止(Stationary)天空光照时,只能采集材质的自发光贡献部分。因此,请确保任何天空盒具有设置为 无光照(Unlit) 的材质。
可移动天空光照
设置为 可移动(Movable) 的天空光照不使用任何形式的预计算。当设置为采集场景时,它采集具有任何移动性的组件和光源。
距离场环境遮挡
该功能在默认情况下未开启,但可使用距离场功能启用。
可移动天空光照的阴影由距离场环境遮挡从每个刚性对象周围生成的 有向距离场体积提供。距离场环境遮挡支持刚性网格体可以移动或隐藏的动态场景变化,同时它会影响遮挡。
单击图像以查看完整尺寸。
查看如何使用距离场环境遮挡页面了解更多信息和示例。
预计算天空光照
使用烘焙光照和静态或静止天空光照时,照明和阴影数据将存储在光照图中。下面几个小节将讨论 全局光照支持的一些功能。
增强型静态天空光照方向性
在虚幻引擎4.18之前,静态天光通常用带3阶球谐(3rd Order Spherical Harmonic)的全局光照来表示,它无法采集日出或日落时可能出现的细节。 现在使用经过过滤的立方体贴图,默认情况下会得到更高的分辨率。全局光照还会基于最终聚集光线的大小选择相应的立方体贴图MIP, 以避免任何失真。
要查看此类交互的示例,请前往 引擎内容(Engine Content) > 贴图模板(MapTemplates) > 天空(Sky),并选择 SunsetAmbientCubemap,因为它将显示一个很好的示例。
使用Epic的 Robo Recall 中的起始办公室关卡进行改进的示例
最大的区别可以在具有大量亮度和颜色变化之天空光照立方体贴图的严重遮挡场景中看到。
暗箱
随着静态天空光照的方向性增强,现在可以利用一个足够小的开口重新创建针孔相机效果(暗箱)。 开口越小,天空光照就越有方向性。
静止天空光照的环境法线
对于各个光照分开烘焙的静止天空光照,全局光照烘焙的阴影将方向遮挡信息存储在所谓的 环境法线(Bent Normal) 中。这是 从纹素到最不被遮挡方向的方向。大部分被遮挡的区域将此方向而非表面法线用于天空光照,这样便提高了缝隙的质量。
有关更多信息,请访问环境法线贴图页面。
多次反射
通过在 世界场景设置(World Settings) > 全局光照(Lightmass) 中调整 天空光照反射次数(Num Sky Lighting Bounces) 设置,即可支持多次反射全局光照的间接光线。
设置要使用的天空光照反射次数。
为了使天空光照的多次反射明显可见,在大多数情况下,您的材质需要具备高漫反射值。例如,如果漫射值为.18(18%灰色),第二次的天空光照反射将仅贡献 18^3 = 0.006的光发射能量,这很难为肉眼所察觉。如果漫射值为0.5,第二次的天空光照反射将贡献0.125的光发射能量,并且显而易见。
每增加一次反射都会增加非分布式的构建时间,因此当未使用密集(Swarm)分布时要谨慎使用。
属性
天空光照组件的属性分为两类:光源和天空光照。您可以从Actor 详细信息(Details) 面板访问它们。
光源
以下设置在所有光源类型之间通用。
属性 |
说明 |
---|---|
强度(Intensity) |
光源发出的总能量。 |
光源颜色(Light Color) |
指定光源发出的颜色。 |
影响世界场景(Affects World) |
光源是否能影响世界场景,或者光源是否被禁用。 |
投射阴影(Cast Shadows) |
光源是否应投射任何阴影。 |
投射静态阴影(Casts Static Shadows) |
光源是否应从静态对象投射阴影。此外,要求将投射阴影(Cast Shadows)设置为真(True)。 |
投射动态阴影(Casts Static Shadows) |
光源是否应从动态对象投射阴影。此外,要求将投射阴影(Cast Shadows)设置为真(True)。 |
间接光照强度(Indirect Lighting Intensity) |
按比例缩放来自该光源的间接照明贡献。如果该值为0,将禁用来自该光源的任何全局照明(GI)。 |
体积散射强度(Volumetric Scattering Intensity) |
该光源的体积散射的强度。它缩放强度(Intensity)和光源颜色(Light Color)。 |
投射体积阴影(Cast Volumetric Shadow) |
光源是否投下体积雾(Volumetric Fog)阴影。 |
天空光照
以下设置专门针对天空光照。
属性 |
说明 |
||||
---|---|---|---|---|---|
源类型(Source Type) |
是采集远处场景并将其作为光源还是使用指定的立方体贴图。采集场景时,任何与天空光照位置的距离超过SkyDistanceThreshold的部分都将被包括在内。
|
||||
立方体贴图(Cubemap) |
如果源类型(Source Type)设置为SLS_SpecifiedCubemap,指定天空光照要使用的立方体贴图。 |
||||
源立方体贴图角度(Source Cubemap Angle) |
当源类型(Source Type)设置为SLS指定立方体贴图(SLS Specified Cubemap)时,为旋转源立方体贴图的角度。 |
||||
立方体贴图分辨率(Cubemap Resolution) |
经过最顶级处理的立方体贴图MIP的最大分辨率。它还必须是2次幂的纹理。 |
||||
天空距离阈值(Sky Distance Threshold) |
与天空光照的距离,在此处,任何几何体都应被视为天空的一部分(亦为反射采集所使用)。 |
||||
仅采集自发光(Capture Emissive Only) |
仅采集自发光材质。跳过所有照明,使采集更便宜。当使用采集每一帧(Capture Every Frame)时,建议使用此方法。 |
||||
下半球为纯色(Lower Hemisphere is Solid Color) |
是否所有来自下半球的照明都应设置为零。这有助于防止从下半球泄漏。 |
||||
重新采集场景(Recapture Scene) |
当天空光照Actor设置为SLS_CapturedScene时,这将重新采集天空光照用来照亮场景的图像。 |
来自可移动对象的阴影
使用胶囊体阴影(对于骨架网格体)或 距离场间接阴影(对于刚性网格体),可实现从可移动对象到环境上的软阴影。它们需要单独设置才能正常工作。
限制
这些功能对天空光照很有用,但尚未实现:
为静态变体和可移动变体动态重新采集场景。天空光照组件上有一个名为RecaptureSky()的蓝图函数可以使用。然而,这会造成卡顿。
静态天空光照
具有 静态移动性(Static Mobility) 的天空光照将被完全烘焙到静态对象的光照图中,因此不需要任何成本。在移动设备上,这是唯一一种受支持的天空光照。在再次构建光照之前,对该光源所做的编辑将不可见。
注:只有具有 静态(Static) 或 静止移动性(Stationary Mobility) 的组件和光源将被采集并用于采用静态天空光照的照明。此外,为了避免反馈循环,使用**静态天空光照**时,只能采集材质的自发光贡献部分。请确保天空盒具有无光照材质。
静止天空光照
具有 静止移动性(Stationary Mobility) 的天空光照从 全局光照(Lightmass) 获得烘焙阴影。当您在关卡中放置了静止天空光照后,您必须至少重新构建光照一次,才能获得烘焙阴影。然后,您可以根据需要更改天空光照,而无需重新构建。
全局光照(Lightmass) 烘焙的天空光照阴影将方向遮挡信息存储在所谓的 环境法线(Bent Normal) 中。这是从纹素到最不被遮挡方向的方向。大部分被遮挡的区域将此方向而非表面法线用于天空光照,这样便这大大提高了缝隙的质量。
第一个图像仅显示了具有AO的天空光照。第二个图像则显示了具有环境法线遮挡的天空光照。注意缝隙中的表面如何针对光照的产生位置’达成一致’。
注:只有具有 静态(Static) 或 静止移动性(Stationary Mobility) 的组件和光源将被采集并用于采用静止天空光照的照明。
与所有类型的 静止光源 一样,在运行时可通过 蓝图(Blueprint) 或 日场(Matinee) 更改直接光照的颜色。然而,间接光照将被烘焙到光照图中,并且无法在运行时进行修改。间接光照量可以使用IndirectLightingIntensity
来控制。
可移动天空光照
可移动天空光照 不使用任何形式的预计算。当设置为采集场景用作天空光照源时,它采集具有任何移动性的组件和光源。
距离场环境遮挡
可移动天空光照的阴影由名为距离场环境遮挡(Distance Field Ambient Occlusion)的新功能从每个刚性对象周围预计算的有向距离场体积提供,该功能生成环境遮挡。它支持动态场景变化 — 刚性网格体可以移动或隐藏,同时它会影响遮挡。该功能在默认情况下为关闭状态,并且有若干设置步骤。
限制
这些功能对天空光照很有用,但尚未实现:
从可移动对象(字符)到环境上的软阴影。
为 静态 变体和 可移动 变体动态重新采集场景。SkyLightComponent上有一个名为RecaptureSky()的蓝图函数可以使用,然而这会造成卡顿。
天空光照属性
天空光照组件的属性分为2类:光源和天空光照。
光源
属性 |
说明 |
---|---|
强度(Intensity) |
光源发出的总能量。 |
光源颜色(Light Color) |
指定光源发出的颜色。 |
影响世界场景(Affects World) |
光源是否能影响世界场景,或者光源是否被禁用。 |
投射阴影(Casts Shadows) |
光源是否应投射任何阴影。 |
天空光照
属性 |
说明 |
---|---|
源类型(Source Type) |
是采集远处场景并将其作为光源还是使用指定的立方体贴图。采集场景时,任何与天光位置的距离超过 |
立方体贴图(Cubemap) |
如果源类型(Source Type)设置为 |
天空距离阈值(Sky Distance Threshold) |
与天空光照的距离,在此处,任何几何体都应被视为天空的一部分(亦为反射采集所使用)。 |
下半球为黑色(Lower Hemisphere is Black) |
是否所有来自下半球的照明都应设置为零。这有助于防止从下半球泄漏。 |
重新采集场景(Recapture Scene) |
当天空光照Actor设置为 |