Files
obsidian-notes/1Project/海量渲染战斗/GPU动画工程/GPU蒙皮动画.md
2025-12-22 12:51:38 +08:00

1.4 KiB
Raw Blame History

蒙皮动画原理

  • 网格顶点可以绑定多根骨骼
    • 所以网格顶点在运行时就可以确定为根骨骼的空间矩阵 * 骨骼混合权重 * 网格空间坐标
      • 世界坐标系下 RootTRS * 骨骼混合TRS * ResetPoseTRS

为什么要升级到蒙皮动画

  • 可以做动画混合
  • IK
  • 动态挂点
  • 节省贴图
    • 只需要渲染一张所有网格的顶点不再需要每个clip都渲染全顶点贴图

混合架构:近处用 GPU Skinning远处用顶点动画

这是很多项目最终的策略:

  • Camera 近处:角色很重要 → GPU Skinning可以混合、IK、物理

  • Camera 中远距离:角色只占几像素 → 提前烘成顶点动画、帧数降采样或干脆用 BillBoard

你的当前顶点动画管线可以直接作为“LOD 动画层”保留,不与 GPU Skinning 冲突,只要切换 Renderer/Material 即可。

蒙皮动画需要记录的数据有哪些?

  • 一张原始网格的Vector3数据贴图
  • 收集骨骼和骨骼索引
  • 重映射后的骨骼索引
    • 如果之前
  • 一个动作
    • 该动作中骨骼每帧的坐标旋转
      • 会在Shader中计算混合骨骼后的TRS * 原始网格的TRS

蒙皮动画不同部位索引的问题

  • 蒙皮的骨骼索引在cpu中无问题在gpu中有问题
  • Unity在创建骨骼的时候会检查骨骼bindpose和骨骼索引,如果索引超出,无法创建