Houdini 旗帜微动动画

  • ~3.24K 字
  1. 1. Connectivity 创建删除组
  • 动画部分
  • 动画导入 Unreal
    1. 1. 使用 VAT 将动画导入虚幻
      1. 1.0.1. 3、配置材质
      2. 1.0.2. 4、创建材质实例,引用 VAT 图
  • 遗留问题

  • 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 | 运动特效:通过曲线控制节点参数 2. 动画导出到 UE 3. 模拟部分 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. 可控
    赞助喵
    非常感谢您的喜欢!
    赞助喵
    分享这一刻
    让朋友们也来瞅瞅!