粒子光源

概述

有这样一种功能,它可以向场景中添加无数个光源,但是仅当把它添加到允许您生成上百个光源的系统中才有效,所以我们想为什么不把它们添加到粒子系统中哪? 于是就创建了 Particle Lights(粒子光源) 。通过在 Cascade 中向粒子系统中添加一个单独的模块,您可以给无数个粒子相应地附加一个点光源。

准备工作

在开始投入使用粒子光源之前,您应该考虑您正在尝试实现什么效果。尽管像虚幻引擎4中使用了这样不同的渲染器,它可以处理大量的光源,但是所处理的大部分光源都是固定光源,不需要像可移动光源或动态光源那样每帧进行重复计算。这是个需要技巧处理的工具,要想在视觉效果和其性能消耗之间达到很好地平衡,需要花一些功夫。

PL_Sparks_2.gif PL_flow_2.gif

作为参考,这里是上面仅具有粒子光源发射器的动画的一些静态图片。

PL_system_01_still.png PL_system_02_still.png

在第一章图片中,粒子光源用于加强一个已经稳定的粒子系统,使得火花和闪光感觉更加真实。进一步讲,在任何给定时刻仅存在少量粒子光源。在第二张图片中,光源向系统添加了体积和位置,但是使用了更多的粒子光源来达到这个效果(超过200个)。

尽管第二张图片中的系统看上去性能消耗非常高,但由于该张图片中的大部分粒子都是GPU粒子,且使用延迟渲染来处理所有的这些光源,所以它的性能消耗仅比第一张图片略高一点。

应用

向粒子系统中添加光源是非常简单的:

  1. 在 Cascade 中打开粒子系统。

  2. 右击 您想添加光源的发射器的任何地方。

  3. 在模块列表中鼠标向下移动到 Lights(光源) -> Light(光照)

  4. 设置您的新光照模型。

记住: Light(光照) 模型仅能用于CPU粒子上,所以GPU粒子不能和它协同使用。如果您向GPU发射器中添加模块,这并不会中断该系统,但是也不会起任何作用,您会在列表中的模块上看到一个大红差 X

属性

PL_lightModuleProperties.png

属性 描述
Use Inverse Squared Falloff(应用平方反比衰减) 如果启用该项, 将会忽略 Light Exponent(光源指数) ,以便获得基于光源半径的更加真实的衰减效果。
Preview Light Radius(预览光源半径) Preview(预览) 窗口中,该项将会以线框球体形式显示光源半径。
Spawn Fraction(粒子光源生成百分比) 定义附加光源的粒子的百分比。1.0是指所有粒子, 0.5指一半粒子,0.1指10%的粒子。
Color Scale Over Life(在整个生命周期中颜色的缩放比例) 和Radius Scale一样,输入到这项中的值将会和光源颜色相乘,来基于粒子颜色调整光源颜色。
Brightness Over Life(在整个生命周期中的光源亮度) 允许您修改光源在其整个生命周期中的亮度。
Radius Scale(半径缩放比例) 这是一个乘数,基于粒子的大小定义了光源的范围。在X轴上使用乘数1来缩放粒子,将会使得光源半径等于 Radius Scale 的值;但是在X轴上使用乘数10来缩放粒子,粒子光源的半径将是 Radius Scale 的10倍。
Light Exponent(光源指数) 如果禁用了 Use Inverse Squared Falloff(应用平方反比衰减) ,那么则使用该项来控制光源的衰减情况,数值越高,随着光照接近于光源半径,会呈现出更加好的渐变衰减;数值越低,就会在光源半径附近产生突然地衰减效果。

和反射进行交互

值得注意的是,具有可渲染的平面粒子的粒子光源可以和某些类型的反射进行交互。但是,由于反射返回的效果和光源返回的效果是不同的,所以这可能并不是期望的效果。也就是说,要想发生这种效果需要以下几点要求:

  1. 使用以下方法使反射体发生反射: Screen Space ReflectionsScene Capture 2DScene Capture Cube 。这三种方法是实时的,且可以捕获可渲染的粒子。

    • 静态反射捕获不能反映任何动态的物体。

  2. 可渲染粒子的材质必须是Masked(蒙板材质)或Opaque(不透明的)。

立方体捕获物和平面捕获物都将会显示可渲染的粒子,就像它们显示任何可渲染的对象(静态对象或动态对象)一样,但是它们的反射效果可能会和光源高光分离。