UnityVATTool/README.md

7.0 KiB
Raw Blame History

UnityVATTool

一套 Unity 编辑器工具集,用于把 SkinnedMesh + 动画 烘焙成 VAT顶点动画贴图 静态网格,并附带 减面Mesh Decimation 流程,最终输出一个仅靠 Shader 采样贴图来播放动画的低开销 Prefab可在大规模同屏小怪海、群体单位等场景下显著降低 SkinnedMeshRenderer/Animator 的 CPU 消耗。


一、目录结构

Assets/
├── Plugins/
│   └── AnimMapBaker/                                  # 工具核心
│       ├── Scripts/
│       │   ├── AnimMapBaker.cs                        # 烘焙核心(采样动画 → 顶点位置写入 EXR
│       │   ├── VATAnimationController.cs              # 运行时 VAT 动画控制器(驱动 Shader
│       │   ├── VATClipDatabase.cs                     # 烘焙生成的 Clip 元数据(起止帧 / 时长)
│       │   └── Editor/
│       │       ├── AnimMapBakerWindow.cs              # 原始单文件烘焙窗口
│       │       ├── MeshDecimatorWindow.cs             # 步骤 1减面工具UnityMeshSimplifier
│       │       └── SelectiveVATBakerWindow.cs         # 步骤 2选择性烘焙窗口减面 + 多 clip + VAT
│       ├── Shaders/
│       │   ├── AnimMapShader.shader                   # 内置管线BuiltInVAT Shader
│       │   └── AnimMapWithShadowShader.shader         # 带阴影版本
│       └── Documentation.pdf                          # 原始作者文档
└── Common/
    └── Scripts/Editor/                                # 上层批量入口Tools/OctoberStudio/VAT/...
        ├── MonsterVATBatchBaker.cs                    # 一键批量烘焙(按 Resources/Role/Monster 全量)
        ├── EnemyVATConverter.cs                       # Enemy 类型 prefab → VAT Variant
        ├── CharacterVATConverter.cs                   # Character 类型 prefab → VAT Variant
        ├── MonsterOrientationCheck.cs                 # FBX 朝向(站立/Z-up一键体检
        ├── OrientationCalibrator.cs                   # 朝向 + 缩放 + 偏移交互式校准
        └── ImportMonsterPackageAndClean.cs            # 自动导入 unitypackage 并清理夹带文件

二、依赖

依赖 版本 / 来源 必需性
Unity 2022 LTS 及以上(建议 2022.3+ 必需
UnityMeshSimplifier (Whinarn) 任意稳定版 必需(减面用)
渲染管线 BuiltIn / URP 均可Shader 分别提供 必需

安装 UnityMeshSimplifier(任选其一):

  • 通过 UPM 直接拉 gitPackages/manifest.json 加:
    "com.whinarn.unitymeshsimplifier": "https://github.com/Whinarn/UnityMeshSimplifier.git"
    
  • 或本地克隆后 file: 引用:
    "com.whinarn.unitymeshsimplifier": "file:../_thirdparty/UnityMeshSimplifier"
    

三、典型使用流程

方案 A单只手动 —— 一步到位(推荐)

  1. 菜单:Tools/VAT Pipeline/1. Decimate SkinnedMesh
    • 选择带 SkinnedMeshRenderer 的 Prefab/场景对象
    • 设置 Quality保留三角形比例0.3 = 留 30%
    • 可选保留边缘、表面曲率等
    • 输出:减面后的 .asset Mesh并可选替换原 sharedMesh
  2. 菜单:Tools/VAT Pipeline/2. Bake Selected VATSelectiveVATBakerWindow
    • 选择对象上的 Animation 组件
    • 勾选要烘焙的 clip(默认匹配 Idle / Ready / Run / Die
    • 选择目标 ShaderBuiltIn / URP
    • 输出:*_VAT.prefab + *_VATClips.asset + *_VAT_Atlas.exr + Material

方案 B批量小怪 —— 一键烤全部

  • 把美术 prefabAnimation + SkinnedMeshRenderer)整理到
    Assets/Resources/Role/Monster/*.prefab
  • 菜单:Tools/OctoberStudio/VAT/Bake ALL Monsters in Resources
  • 产物默认输出到:Assets/_VAT_Baking/Output/<name>/

方案 C从原始 FBX 批量烤(带 @Run.FBX 附加动画文件)

  • 把美术 <name>.FBX 放在 Assets/_External/Monsters/<name>/
  • 同目录放一份 <name>@Run.FBXLegacy 动画)
  • 菜单:Tools/OctoberStudio/VAT/Bake Selected Monsters (Run-only)

辅助工具

  • Tools/OctoberStudio/VAT/Orientation Calibrator:交互式调整朝向/缩放/偏移并 apply 回 prefab
  • Tools/OctoberStudio/VAT/Monster Orientation Check:批量体检 _External/Monsters_External/Bosses 下所有 FBX 的站立朝向,输出报告

四、运行时使用

烘焙产物 *_VAT.prefab 内已挂好 VATAnimationController,通过它切换/播放 Clip

var ctrl = instance.GetComponent<VATAnimationController>();
ctrl.Play("Run");         // 按 Clip 名播放
ctrl.PlayByIndex(0);      // 或按索引
ctrl.SetSpeed(1.5f);

实际播放靠 Shader 在顶点阶段从 _AnimMap 采样 → 不再走 SkinnedMeshRenderer 蒙皮CPU 几乎为零。


五、注意事项与坑点

  1. 必须 Legacy 动画:批量烤 FBX 那条流程要求 FBX 的 animationType = 1 (Legacy),不是 Generic / Humanoid。Mecanim 流程请改用 SelectiveVATBakerWindow + 手动 prefab。
  2. 顶点数 × 帧数 ≤ 单贴图限制:贴图宽 = 顶点数,高 = 帧数总和。顶点过多请先减面。
  3. 朝向:源 FBX 若是 Z-up会以 X=-90° 旋转烘入 Mesh 节点;如不符预期请用 OrientationCalibrator
  4. URP 阴影AnimMapShader 默认无阴影投射,需要阴影请用 AnimMapWithShadowShader,并确认 Project Settings 中阴影距离/级联。
  5. 采样精度:动画位置编码为 EXR HALF位移过大>1000 单位)会出现可见抖动,模型请在烘焙前居中到原点附近。

六、菜单速查

菜单 入口脚本 功能
Tools/VAT Pipeline/1. Decimate SkinnedMesh MeshDecimatorWindow 减面
Tools/VAT Pipeline/2. Bake Selected VAT SelectiveVATBakerWindow 选择性 VAT 烘焙
Tools/OctoberStudio/VAT/Bake mon1001 (Test Sample) MonsterVATBatchBaker 测试单只
Tools/OctoberStudio/VAT/Bake ALL Monsters in Resources MonsterVATBatchBaker 批量 Resources 怪物
Tools/OctoberStudio/VAT/Bake Selected Monsters (Run-only) MonsterVATBatchBaker 选中 FBX 烘焙
Tools/OctoberStudio/VAT/Import Monster Package Auto Clean ImportMonsterPackageAndClean 导入并清理 monster.unitypackage
Tools/OctoberStudio/VAT/Import Role Package Auto Clean ImportMonsterPackageAndClean 导入并清理 role.unitypackage
Tools/OctoberStudio/VAT/Orientation Calibrator OrientationCalibrator 朝向校准
Tools/OctoberStudio/VAT/Monster Orientation Check MonsterOrientationCheck 批量朝向体检

七、致谢