Houdini 旗帜微动动画

  • ~3.07K 字
  1. 1. 目的
  2. 2. 涉及核心知识点
  3. 3. 模型处理
    1. 3.1. 根据属性删除
    2. 3.2. Connectivity 创建删除组
    3. 3.3. Winding Number 选择删除部分
  4. 4. 动画部分
    1. 4.1. Soft Transform 软变换
    2. 4.2. Motion FX 运动特效
      1. 4.2.1. 启用曲线
      2. 4.2.2. 调整参数
        1. 4.2.2.1. 基本调整
        2. 4.2.2.2. 进阶调整
      3. 4.2.3. 禁用曲线控制
  5. 5. 动画导入 Unreal
    1. 5.1. .abc 导入动画
    2. 5.2. 使用 VAT 将动画导入虚幻
      1. 5.2.1. Houdini导出处理
        1. 5.2.1.1. 参数配置
        2. 5.2.1.2. 输出 VAT
      2. 5.2.2. Unreal 配置
        1. 5.2.2.1. 1、安装插件
        2. 5.2.2.2. 2、导入 VAT
        3. 5.2.2.3. 3、配置材质
        4. 5.2.2.4. 4、创建材质实例,引用 VAT 图
  6. 6. 模拟部分
    1. 6.1. 冻结部分模型
      1. 6.1.1. 解决办法
  7. 7. 遗留问题

Houdini 版本:20.5.278

SideFXLabs 版本:20.5.253

HoudiniEngineForUnreal 版本:2.2.0

unreal版本:5.4.4

目的

对已有模型添加轻微飘动的动画,具体来说:

一开始以为是飘动,要风模拟,后来才知道不需要,只是简单的动画。但也涉及到很多新领域,故记录一下。

同时,也会包含一些模拟方面的探索。

最终效果示例:

涉及核心知识点

  1. 模型处理:删除 UE 导出后生成的外包围框的三种方法。
  2. 动画部分
    1. Soft Transform | 软选择:相比其它建模软件更灵活的工具
    2. Motion FX | 运动特效:通过曲线控制节点参数
  3. 动画导出到 UE
  4. 模拟部分
    1. 在模拟中“冻结”部分

模型处理

UE导出模型时,会添加一个外包围框,希望有一个程序化的方式,可以用一定条件,自动删除这个多余部分。
外包围框

根据属性删除

这个场景下的最优选择。

UE会给外包围框添加独立属性,即:Primitives 层级的 name 属性值为:“UCX_【模型名称】”的部分,为包围框。

接着,使用 Blast 指定删除外包围框即可。指定值删除可以在 Blast 节点的 Group 属性中填写以下 HScript 代码:

1
@name="UCX_guofengchangjing_Painting_002_1"

数据可视化可以参考:自定义属性可视化

UCX:即:Unreal Collision,虚幻碰撞体。

Connectivity 创建删除组

很怪的解法,但是万一有用呢?

  • 背景知识:Connectivity 节点基于顶点索引,从小到大添加唯一整数序号。
  • 虚幻特性:添加的外包围框索引序号最大,所以 Connectivity 节点产生的序号也最大。
  • 解法:删除 Class 中最大的部分,类似这个解法:找出最高的几个面片
    1. Connectivity 节点,为每个拓扑完整的模型分配唯一序号,默认储存在属性 class 中。
    2. Attribute Promote 属性提升,将 class 属性中最大的值存储到 detail 层级
    3. Attribute Transfer 属性转移,还原 Primitives 中记录的 class 值。
    4. Blast 通过比对属性,删除序号最大的部分,也就是包围框。Group 参数中的 HScript 如下:
1
@class=`detail(0,"MaxClass",0)`

Winding Number 选择删除部分


此时,winding_number <= 0 的部分就是法线向内,即包围盒部分。

动画部分

基本思路:通过软变换选择,使用 Motion FX 创建循环动画

Soft Transform 软变换

快速理解:其他软件 “软选择 + 变换“ 操作的结合,可以对变换进行更灵活的调整。

核心参数:

  • Group | 组:选择从哪些点开始,是控制的基础
  • Translation部分:控制变换
  • Soft Radius | 软半径:控制软选择范围

Motion FX 运动特效

快速理解:通过曲线控制节点的参数

启用曲线

右键要控制的参数:Reference - 【选择使用的模式】

调整参数

基本调整

选择基本类型后,可以在弹出窗口中控制参数细节:

  • 上方:细节参数
  • 下方:曲线示例,参数会根据曲线变化而变化

进阶调整

右键参数,跳转到 Motion FX 节点内部:

在内部可以对参数进行细致调整:Houdini 提供了控制节点

同时可以打开 New Pane Tab Type - Views - Motion FX View 面板,查看对应曲线预览。

禁用曲线控制

取消勾选右键菜单 - Reference - Enable Effect

动画导入 Unreal

两种方法:.abc 格式 和 VAT 顶点动画贴图

.abc 导入动画

几何体缓存,一种常用的动画保存方式。

默认仅导出当前帧,需要修改为:Valid Frame Range - Render Frame Range (有效帧范围 - 渲染帧范围)

其他属性基本默认即可

使用 VAT 将动画导入虚幻

VAT,即 Vertex Animation Texture ,顶点动画贴图。将顶点变化记录在一张贴图上,是一种轻量化的动画解决方案。

Houdini 不仅支持导出,同时为不同的引擎(Unreal、unity)提供了方便使用 VAT 的插件。

参考链接:houdini中各类型通过vat顶点动画导入ue - 哔哩哔哩

Houdini导出处理

在 out 网络面板中,使用 Labs Vertex Animation Textures 节点进行导出,这是一个 SideFXLabs 扩展节点。

参数配置

基础配置:

  • Mode /Target Engine | 模式/目标引擎:配置VAT类型
    • Mode 包含:刚体、流体、布料、粒子

      Settings 设置:
  • Input Geometryls cached to Integer Frames:如何有做缓存就勾选,否则不勾。
  • All Modes - Texture Format:图片格式,选择导出的 VAT 图片格式。

  • Input 设置:查看输入属性
  • Required | 必要属性:P、pivot、orient
    Export 设置:
  • 配置输出位置、名称、包含内容

输出 VAT

点击上面的 Render All 按钮即可,最后输出的是两个文件夹,需要全部导入 UE。

Unreal 配置

1、安装插件

在 Houdini 的 Labs Vertex Animation Textures 节点中的 Real-Time Shaders 选项卡中,打开 Unreal Engine content Plugin and Guides(Unreal Engine 内容插件和指南)

打开后会显示各个引擎版本的插件,将内部的对应文件夹移动到项目目录下的 Plgins 目录(与 Content 文件夹同级)中,然后启用即可。

2、导入 VAT

就是上面生成的两个文件夹,全部导入UE

然后需要对图片执行蓝图脚本操作,执行类型需要和选择的贴图格式一致:

这些脚本会自动调整贴图到正确的采样方式等。同时,最好打开图片一次,或使用其他方法,刷新引擎,让贴图改动生效

3、配置材质

  • 取消勾选:切线空间法线
  • 创建自定义 UV 数:与插件提供的 UV 接口数量一致

4、创建材质实例,引用 VAT 图


如果需要在sequence里面k帧 需要把auto playback选项后面勾去掉,然后display frame上面k的曲线一定是线性(linear)

模拟部分

冻结部分模型

让模型一部分,参与整体模拟,但是这部分模型本身不模拟。

具体来说:希望模型最下面卷起来的部分,参与模拟,但是不要散开:

解决办法

使用 Vellum Constraints节点的 Constraint Type - Shape Match (约束类型 - 形状匹配)配置,锁定末端形状。

参考教程:028_shapematch形状匹配_黑白纹理的Discovering Vellum笔记_哔哩哔哩_bilibili

遗留问题

  1. Winding Number 节点的使用细节
  2. 模拟部分
    1. 风的自定义使用方法
    2. 可控
赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!