学习在Houdini中导出VAT(Vertex Animation Texture)给UE
前言
主要参考资料是 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模型拖入场景中,指定上材质实例,就可以看到顶点动画了:
学习在Houdini中导出VAT(Vertex Animation Texture)给UE相关推荐
- VAT (Vertex Animation Texture) on Unity HDRP examples
VAT (Vertex Animation Texture) on Unity HDRP examples VAT 使用Houdini 和SideFX Labs. 实现. https://github ...
- 虚幻引擎图文笔记:使用VAT(Vertex Aniamtion Texture)制作破碎特效(Houdini,UE4/UE5)上 Houdini端
免责声明: Houdini小白,现学现卖,纯笔记.如有误导不负任何责任.本文参考了Houdini官方的<Lightning Strike FX>教程 文章目录 效果演示(UE4/5) 什么 ...
- 3dmax顶点动画导入unity_Mesh Vertex Animation In Unity | Unity中顶点动画
最后的效果,左为顶点shader,右为蒙皮 10根骨骼 有些远景动画.小动画,用骨骼蒙皮来做太费了.一个好的办法是用顶点动画.比如在顽皮狗GDC的分享Technical Art Techniques ...
- 学习从USGS中下载真实世界高度图并导入Houdini
目标 参考 Downloading Digital Elevation Data (SRTM) from USGS EarthExplorer - YouTube 学习从USGS上下载真实世界高度图数 ...
- 总结Houdini中各方面数据的传递方式
Houdini中"数据"的"传递" 在我看来,Houdini中有多处存在着"数据",并且他们可以相互"传递". 明面上的 ...
- 手把手教你如何用Python从PDF文件中导出数据(附链接)
作者:Mike Driscoll :翻译:季洋:校对:丁楠雅 本文约4000字,建议阅读10分钟. 本文介绍了在提取出想要的数据之后,如何将数据导出成其他格式的方法. 有很多时候你会想用Python从 ...
- 每天学习一个Android中的常用框架——0.目录
文章目录 1.前言 2.环境 3.目录 3.1 持久化 3.1.1 Litepal 3.1.2 GreenDao 3.1.3 Realm 3.1.4 DBFlow 3.2 网络传输 3.2.1 OkH ...
- java web中的导出excel_JAVA语言之怎么在JavaWeb中导出Excel
本文主要向大家介绍了JAVA语言之怎么在JavaWeb中导出Excel,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 怎么在JavaWeb中导出Excel? 代码自解释 1,依赖包 ...
- svga插件_【SVGA扩展】在AE或Animate中导出SVGA文件的设计师工具(mac+win)及安装教程...
SVGA扩展 – 在AE或Animate中导出SVGA文件的设计师工具 什么是SVGA SVGA 是一种全新的古文字体歌曲音乐swf转换,华为ipad华为ipad手机手机省电模式古风字体播放体验,SV ...
最新文章
- 每日一皮:在同一个项目上工作2年的样子...
- ubuntu 18.04 设置中文输入法
- 读书笔记《高性能网站建设指南:前端工程师技能精髓》
- 【51nod】1227 平均最小公倍数
- 解决Jquery Kendo.xxx is not a function 的方法
- 药大保研计算机要求,药物分析专业保研经验贴
- Apache Kafka + Spark Streaming Integration
- css单行文本和多行文本溢出实现省略号显示
- Keil软件的汇编使用
- Could not find artifact com.oracle:ojdbc7:pom:12.1.0.2 in central (https://r......的解决方案
- 如何在S函数中对变量或者输入信号进行求导
- 6.0 增加京东支付
- BugkuCTF –备份是个好习惯
- 【Redis笔记】一起学习Redis | 如何利用Redis实现一个分布式锁?
- php整型的最大值,php整型(Integer)
- 安卓逆向007之安卓系统架构
- Oracle 使用DBMS_JOB和DBMS_SCHEDULER 创建定时任务 创建管理job示例
- 2022嵌入式工程师面经(2023年1月更新)
- 一个女孩主动加你微信,不说话也不打招呼是因为啥呢?
- C99:C标准库接口的头文件集和功能定义参考