如何为UE4的例子系统创建VectorField矢量场(教程)

Posted on

原文(英文):https://wiki.unrealengine.com/Creating_Vector_Fields_(Tutorial)

概览

在UE4中,矢量网格是3维网格,其被细分为单独的体积像素或“体素”,其中每个体素存储速度矢量(在x,y和z中)。此网格很有用,因为Cascade可以将其视为可以影响其内部粒子运动的场。将矢量场视为空间中的体积可能会有所帮助,其中包含可能影响穿过它的粒子的“风”。

存在两种类型的矢量场:居住在粒子系统内的局部矢量场,以及居住在世界中的全局矢量场,如果那些粒子系统具有全局矢量场模块的场,则可能影响位于其边界框内的任何粒子系统。比例参数设置大于1。

本文的重点是创作一个局部矢量场。

创建矢量场

目前无法在UE4中创建矢量场,但是有一些选项允许您在引擎外创建它们。

  1. VectorayGen – 由JangaFX制作的实时矢量场生成器。
  2. Maya Fluids MEL脚本

以下详述这两个选项。

您可以以任何方式创建矢量场,但VectorayGen是生成矢量场的简单方法,矢量场以.FGA文件(流体网格ASCII)格式导出。此文件是一个文本表,您可以根据需要手动编辑。

另一种方法是使用Maya液体。为简化此过程,我们编写了一个MEL脚本,该脚本仅从Maya的流体容器中导出速度数据,并将它们存储为.FGA文件(Fluid Grid ASCII)。如上所述,这个文件是一个文本表格,如果需要,您可以手动编辑。

VectorayGen

使用VectorayGen创建矢量场并在UE4中使用它们

如果您不想使用Maya或Blender插件/脚本编辑矢量场,请访问https://jangafx.com/software-downloads/并下载VectorayGen的评估版。它是专为实时编辑矢量场而构建的工具。无需等待流体模拟,易于学习和使用。

VectorayGen具有强大的内置节点编辑器,实时视图端口以及模拟数百万个粒子和矢量的能力。

要查看VectorayGen的其他教程,请访问:https://jangafx.com/vectoraygen-starter-tutorial-series/

MAYA流体插件

安装’UE4_FX’Maya架和FGA导出脚本

注意:此Maya工具架中包含的Fluid Grid导出脚本已使用Maya 2012 x64进行了测试。

1.在Shelf窗格中,单击左侧下拉箭头并选择Load Shelf ..

LoadShelf VF.jpg

2.在文件浏览器中,导航至: [UE4Root]\Engine\Extras\MayaVelocityGridExporter\

LoadShelfWindow VF.jpg

3.单击打开后,您将找到一个名为UE4_FX的新Shelf选项卡,其中包含一个按钮。单击此图标将弹出一个对话框以及各种FGA导出选项。

默认情况下,Shelf包含了一个使用了占位符图标的按钮。../UE4/Engine/Extras/FX_tools/Maya2012_x64/UE4_FX_Tools/Prefs/Icons/fgaClean.png如果您想使用自定义图标,则会出现该图标。要安装自定义图标,只需将其复制到Maya用户首选项目录(例如,`C:/ Users / [User] / Documents / maya / 2012-x64 / prefs / icon`)。

InstalledFGAShelf VF.jpg

4.现在已安装并准备使用将Maya流体容器导出为UE4流体网格格式的工具。

设置Maya流体容器

在Maya中创建矢量场需要使用Fluid容器。

1.切换到 dynamics major mode 模式,然后从FluidEffects菜单中选择“创建3D容器”。这将在透视视口中放置一个Maya流体容器。首先要做的是选择它,然后在属性编辑器中选择“保持体素方形”复选框。

ContainerProperties VF.png

注意:由于UE4的速度网格级联模块在GPU上运行,因此Maya流体容器需要具有2次幂分辨率值(体素计数),任何一个轴的最大体素数为128。

2.通过进入其属性并更改尺寸设置来调整流体容器的比例:

SizeProperty VF.jpg

基本分辨率现在表示最长边的分辨率,而另一边的分辨率与其相对尺寸成比例。这是一个矩形16x32x16网格的例子,它满足了需要是2的幂的要求。

Grid VF.png

3.将网格的所有边界条件设置为** _ None _ **; 允许流体模拟“超出”流体容器。

4.最后,我们需要启用速度向量的显示,以便我们可以看到要导出到UE4的数据。在流体容器的** Display **部分中,选中** Velocity Draw **复选框。

将属性发布到容器中并模拟

必须将发射器添加到流体容器中,以便发出能干扰网格值的各种属性。

1.选择流体容器,然后从“流体效果”菜单中选择“ 添加/编辑内容”>“发射器”

AddEmitter VF.png

2.在Emiter Fluid属性中,将Heat / Voxel / Sec设置为“250”。这意味着发射器将热量散发到容器中。热量会导致密度上升。

3.现在选择发射器并将其放大,然后将其向下移向容器底部。

ScaleEmitter VF.png

4.为了使容器网格对动态热做出反应,必须将Maya流体容器温度方法设置为动态网格。此设置位于容器网格形状上。

TemperatureProperty VF.png

5.现在回放时间线以查看模拟。你应该得到类似下图的东西。我还在容器属性中添加了一些噪音。你可以通过更改流体容器的“内容详细信息”部分中的速度旋流,噪声和湍流强度以及频率参数来完成此操作。

6.结果看起来应该类似于:

结果VF.png

从Maya流体容器导出速度值

在该示例中,导出模拟的单个帧以用作UE4中的 static velocity field (静态速度矢量场)。

1.选择您的流体容器,然后单击** UE4_FX **工具架中的FGA图标。将出现** UE4 Velocity Grid Exporter **对话框。

ExportDialog VF.png

2.设置您喜欢的起始帧以及目标文件夹。

3.点击导出,你会在磁盘上看到一个文件。这是您要导入UE4的文件。

FgaFile VF.png

将.FGA文件导入UE4

1.启动UE4,打开内容浏览器。单击“新建”按钮并选择“_Import_”,或右键单击并从上下文菜单中选择_import_。

ImportOption VF.png

2.在文件浏览器中,导航到之前保存的FGA。

ImportDialog VF.png

注意:如果同一目录中有大量文件,则可以将文件浏览器的过滤器设置为_Fluid Grid Ascii_。

3.在内容浏览器中,您现在应该看到_VectorField Static_资产。

VectorFieldAsset VF.png

使用局部矢量场设置粒子系统

1.在内容浏览器中创建新的粒子系统。创建后,将出现Cascade窗口。

2.右键单击发射器模块上方的黑色空间,并将粒子系统dataType转换为GPU Sprites

3.接下来,添加一个Cylinder位置模块,其高度轴设置为Y.将Spawn模块Rate属性增加到50左右。然后删除Initial Velocity,因为粒子运动将来自局部矢量场。你应该有类似的东西:

CylinderExample VF.png

4.在现有模块下方单击鼠标右键,然后将本地矢量场模块添加到发射器。

LocalVectorFieldModule VF.png

当局部矢量场模块物理位于局部矢量场模块的边界框内时,它将影响粒子的运动。

5.将矢量场资源分配给局部矢量场模块。您可能希望通过选择Cascade主菜单中的**视图>矢量场**来可视化视口中的矢量场速度。

VisualizeVectorFields VF.png

6.在其参数中,将矢量场的相对比例缩放为2 2 2,并使用当选择局部矢量场模块时出现在级联预览窗口中的矢量场Gizmo转换网格。

7.现在,您应该看到粒子在预览窗口中移动,由矢量场速度驱动。

运动VF.png

局部矢量场模块参数

局部向量场级联模块有2个主要参数:

ModuleProperties VF.png

强度:这是局部矢量场对粒子的运动产生影响的强度值 

密封性: 描述了粒子与流体网格中存储的速度有多接近 。设置为0时,矢量场表现为一种外力,它将速度加到粒子的当前速度上。设置为1时,矢量场速度将完全取代粒子的运动速度。

发表评论

电子邮件地址不会被公开。 必填项已用*标注