学习在Houdini中导出VAT(Vertex Animation Texture)给UE
前言主要参考资料是 VAT 3 | Soft Body | Unreal。不过在效果的复杂度上做了简化,只保留VAT相关的最基本操作。0. 创建测试用动画这里我的动画很简单。首先创建一个Sphere。将 Primitive Type 改为Polygon,将 Frequency 改为10——以便将顶点增多些。然后创建一个 Attribute Wrangle 节点,vex代码为:@P+=@N*flow
前言
主要参考资料是 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
!
将会在路径的 geo 和 tex 文件夹下分别生成几何体和贴图。
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模型拖入场景中,指定上材质实例,就可以看到顶点动画了:
更多推荐
所有评论(0)