前言

主要参考资料是 VAT 3 | Soft Body | Unreal。不过在效果的复杂度上做了简化,只保留VAT相关的最基本操作。

0. 创建测试用动画

这里我的动画很简单。

首先创建一个Sphere。将 Primitive Type 改为Polygon,将 Frequency 改为10——以便将顶点增多些。
在这里插入图片描述
然后创建一个 Attribute Wrangle 节点,vex代码为:

@P+=@N*flownoise(@P,0.1*@Frame);

其功能就是使用 flownoise 这个噪声函数将每个顶点向着法线方向移动一个噪声长度。这个函数的第二个参数范围为 0.0~1.0 ,所以我这里的0.1*@Frame将会使动画在1~10帧间循环。

效果如下:
在这里插入图片描述

1. 渲染VAT(Vertex Animation Texture)

注意:
渲染VAT需要用到SideFX Labs中的节点(安装方式可参考之前的博客)。

/out下创建一个 Labs Vertex Animation Textures 节点:
在这里插入图片描述
之后有些参数需要设置:
在这里插入图片描述

其中:

Mode / Target Engine(模式/目标引擎)
Mode 有四种:

  • Soft-Body Deformation (Soft): the surfaces have consistent topologies; they simply deform.(表面有不变的拓扑结构,只是变形)
  • Rigid-Body Dynamics (Rigid): packed pieces with RBD simulation data.(将碎片打包到刚体模拟数据中)
  • Dynamic Remeshing (Fluid): the surfaces are potentially remeshed every frame with dynamic topologies.(表面每一帧都有潜在的remesh可能性,拓扑结构是动态的)
  • Particle Sprites (Sprite): points with particle simulation data.(代表粒子模拟数据的点)

这里,我的表面虽然在变化,但是拓扑结构没有变(即顶点没有增删且连接关系不变)。所以我选择Soft-Body Deformation (Soft)

Start/End(开始与结束帧)
正如之前所说,我的动画是1~10帧循环,所以我这里是1和10。

Input Geometry(输入几何体)
选择之前创建的动画的几何体节点。

Target Texture Width(目标贴图尺寸)
关于VAT的的原理可以参考这个官方视频:VAT 1 | What are Vertex Animation Textures
在这里插入图片描述
在当前我的例子中,我的几何体顶点数目是 1002 个。总共有 10 帧,所以总共需要 1002×10=10020 个像素。所以我选择了贴图宽度为128,因为 128×128=16384 个像素,可以容纳下我的数据,再大的尺寸会造成浪费。(后续发现:精确计算似乎不是必须的,因为贴图的长度会自动进行调整,比如这里的贴图最终尺寸为128×80)


以上都设置好了之后,就可以准备导出了,转到Export分页:
在这里插入图片描述

其中:
Export Path是导出的文件的路径。
Asset Name是导出的文件的前缀。
Include是导出的数据文件包括哪些。这里我只需要几何体以及顶点的位置,所以我选择 Geometry, Position(s) 。

最后,点击 Render All

将会在路径的 geotex 文件夹下分别生成几何体和贴图。
在这里插入图片描述

2. 将资源导入进UE

将上一步中产出的模型与贴图导入到UE中:
在这里插入图片描述
(注意:在原教程中,关于资源的设置还有些讲究。但是在我这个简单的测试中,我的设置保留默认的情况下并没有出现问题。如果以后发现问题应仔细研究下)

3. 建立UE材质

接下来,需要较为复杂的一系列材质节点才能正确读取VAT中的信息。SideFX自然提供了配套的UE材质节点来协助这部分工作,这些材质节点在 “SideFX Labs 插件”中。点击 Labs Vertex Animation Textures 节点中Real-Time Shaders 下的 Unreal Engine Content Plugin and Guides 就可跳转到存放插件的目录了,里面有对应的UE版本:
在这里插入图片描述
按照原教程,是先安装这个插件的,详细操作可见 VAT 2 | Install VAT | Unreal

不过我这里图方便选择直接将所需的材质拷贝到项目中了。我需要MF_VAT_SoftBodyDeformation这个材质函数(在 SideFX_Labs\Content\Materials\MaterialFunctions 下),于是我直接将这一uasset拷贝到了我的项目中。

然后,建立一个材质,加入这个材质函数并将 World Position Offset 相连接。
在这里插入图片描述
然后,为这一材质建立材质实例,设置其 Position Ttexture
在这里插入图片描述
最后,将YaksueTest模型拖入场景中,指定上材质实例,就可以看到顶点动画了:
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐