Language:
Page Info
Tags:
Engine Version:
Share

矢量域

除效率之外,GPU粒子最有趣的特性是矢量域。矢量域是一个由影响粒子运动的矢量组成的统一网格。矢量域作为Actor放置在场景中(整体矢量域),可以像任何其他Actor一样进行平移、旋转和缩放。它们是动态的,可以在任何时候移动。域也可以放置在级联中(局部矢量域),限制其对与其相关联的发射器的影响。当粒子进入矢量域的边界时,粒子的运动将受到矢量域的影响,当粒子离开边界时,矢量域的影响将消失。

默认情况下,矢量域会对其中的粒子施力。矢量域还有一个“紧密度”参数。此参数控制粒子如何直接跟随域中的矢量。当紧密度设置为1时,粒子直接从域中读取其速度,从而准确地跟随域。

静态矢量域是矢量网格永不改变的域。这些域可以从Maya导出并作为体积纹理导入。静态域资源占用低,可以用来向粒子添加有趣的运动,特别是通过对域本身的运动设置动画。

此外,还可以从二维图像重新构建矢量域。在这种情况下,可以导入一个非常类似于法线贴图的图像,通过挤压它或将其围绕体积旋转来重新构建体积纹理。在此重新构建的基础上,可以添加一个静态矢量域,引入一些噪点和随机性。此外,可以通过在图谱纹理中存储单独的帧来对2D图像设置动画。这样做让您可以离线执行流体模拟,并以极低的成本实时重新构建运动。

整体矢量域

如上所述,整体矢量域(Global Vector Fields) 可以作为Actor放置在关卡中。但是,它们不能仅仅从 内容浏览器(Content Browser) 中拖出。为了在关卡中建立一个矢量域,需要添加一个矢量域体积Actor,并且需要将适当的矢量域资源与之关联。

矢量域体积Actor

矢量域体积Actor(Vector Field Volume Actor) 不是传统意义上的体积。要创建一个矢量域体积Actor,在类查看器中找到矢量域体积并将其拖放到关卡中。然后,通过Actor的属性从 内容浏览器(Content Browser) 中指定矢量域。添加后,可以对域进行定位、旋转和缩放。

VFScaled.png

任何包含整体矢量域模块 的GPU sprite粒子系统都可以使用此整体矢量域。

GlobalVectorFieldsSystem.png

GameModeVFV.png

在此图中,只有大约自发光体积的一半长度的粒子与矢量域体积交集。

局部矢量域

与整体矢量域相反,局部矢量域(Local Vector Fields) 完全存在于粒子系统中,而未放置在场景中。这意味着,局部矢量域只能影响它们被指定给的粒子发射器,与整体矢量域不同,整体矢量域可以影响任何带有整体矢量域模块 的粒子系统。

局部矢量域是通过局部矢量域模块 添加的。

LocalVectorField.png

Tags