Files
obsidian-notes/4Archives/海量渲染战斗/GPU动画工程/GPU蒙皮动画.md
2026-06-29 00:19:54 +08:00

46 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 蒙皮动画原理
- 网格顶点可以绑定多根骨骼
- 所以网格顶点在运行时就可以确定为根骨骼的**空间矩阵** * **骨骼混合权重** * **网格空间坐标**
- 世界坐标系下 RootTRS * 骨骼混合TRS * ResetPoseTRS
### 为什么要升级到蒙皮动画
- 可以做动画混合
- IK
- 动态挂点
- 节省贴图
- 只需要渲染一张所有网格的顶点不再需要每个clip都渲染全顶点贴图
### 混合架构:近处用 GPU Skinning远处用顶点动画
这是很多项目最终的策略:
- Camera 近处:角色很重要 → GPU Skinning可以混合、IK、物理
- Camera 中远距离:角色只占几像素 → 提前烘成顶点动画、帧数降采样或干脆用 BillBoard
你的当前顶点动画管线可以直接作为“LOD 动画层”保留,不与 GPU Skinning 冲突,只要切换 Renderer/Material 即可。
#### 蒙皮动画需要记录的数据有哪些?
- 一张原始网格的Vector3数据贴图
- 收集[[bindpose]]
- 收集全局骨骼索引
- 根据不同的蒙皮组件需要的骨骼,重新映射索引
- 为什么需要这个?
- 身体的骨骼索引索引分别是1、2、3、4
-
- 肩膀
- 手臂
- 手掌
- 而手臂为索引为3、4
- 手臂
- 手掌
- 该动作中每个网格的顶点计算:
- Root在世界空间坐标的TRS
- 每根骨骼还原[[bindpose]]
- **混合骨骼**后的TRS * 原始网格的TRS
#### 蒙皮动画不同部位索引的问题
- 蒙皮的骨骼索引在cpu中无问题在gpu中有问题
- Unity在创建骨骼的时候会检查骨骼**bindpose**和骨骼**索引**,如果索引超出,无法创建
---