前言
之前提到过Vector Field(矢量场)的有关内容,这期我们研究如何为Unity制作矢量场。VectorField大致类似于预先计算的力场,为粒子提供速度。在Unity中,它被实现为视觉效果图的Vector Field Force(矢量场力)块。(它也应该在2017.3 Shuriken粒子系统中)。Unity官方发布了一款Houdini专门使用的工具VFXToolBox,可以用来制作点缓存和矢量场。Houdini这个软件,Up没学过,所以我们只能想其它办法来制作矢量场。这个方法稍微有一点麻烦,需要下面两种插件。

事前准备
1.Blender Vector Field Editor
下载地址:https://github.com/isathar/Blender_UE4_VectorFieldEditor
UE4(虚幻4)引擎在矢量场模块被实现为可以导入扩展.fga的文件,但在Unity的里面必须转换成3D纹理。 这个Blender插件就是专门给UE4制作矢量场的,它输出的格式是.fga,Unity是无法使用的。所以我们还需要下面一款Unity用的插件。
2.FGAImporter
这个Unity插件可以将.fga文件转换成Unity使用的矢量场文件。
下载地址:https://github.com/the40san/FGAImporter

具体操作
在Blender中制作矢量场
首先我们将下载的Blender_UE4_VectorFieldEditor-master.zip文件解压,放入Blender的Scripts/Addons文件夹里面。

打开User Preferences(用户设置),点击Add-ons选项卡,输入fga找到FGA Vector Field Tools插件,将其勾选,点击下面的Save User Settings(保存用户设置)按钮。

这时可以在界面左侧看到Particle Simulation的选项卡,点击打开FGA Tools界面,点Create按钮打开创建窗口,勾选No gravity(无重力),点击Generate(生成)按钮。

基本的矢量场已经产生,但是目前它的内部还没有任何力的作用。下面我要在里面添加Force(力)。

按Shift+A键打开创建菜单,我们选择Force Field(力场)>Force(力)。

我们切换到物理分页,将力的Strength(强度)提升到5。

我们点击矢量场,选中里面的粒子。


在粒子分页中,将Lifetime(生命周期)设置的长一点(提升可以幅度大一些)。

点击播放按钮,可以看到粒子扩散的更远了。

我们打开Display选项,勾选Velocity的话,可以看到粒子运行的方向。

先点到动画的某一帧,打开粒子的Cache扩展栏,点击Bake烘培动画。再次点击Free Bake。

然后在FGA Tools中展开Edit扩展栏,点击Calculate按钮。

如果你没有看到任何变化,点击Display扩展栏里面的Show按钮,我们就能看到矢量的计算结果。


我们再用同样的方法,这次我们使用其它Vector工具,比如Turbulence。

我们点击粒子分页,在Cache扩展栏中,点击Free Bake按钮。我们再次点击FGA Tools里面Edit扩展栏的Calculate按钮。我们可以看到里面的Vector都发生了变化 ,像一些Noise。

现在我们导出UE4 Vector Field(.fga)文件。

将FGA导入Unity并将其用作视觉效果图的矢量场
我们将下载好的FGAImporter解压。找到.unitypackage文件,双击导入Unity。
VectorField烘焙为.fga导入到Unity

安装后,在Window菜单下的Visual Effects里面找到FGAImporter,点击打开。

当你按下时,将要求你输入导入源VectorField(.fga)和转换的目标3DTexture资源(.asset),因此请指定任意位置。 烘焙完成后,就可以将其放入视觉效果图的矢量场力块的Vector Field(矢量场) 中。


另外,Unity还有一些插件可以制作矢量场。比如Mega Flow,Vector Field Maker。Vector Field Maker有Pro和Lite两款。这里只有Lite是免费的,Up试了一下,它的功能比较简单。相对我还是推荐自己去研究在Blender里面如何去创建矢量场。

