同步笔记
This commit is contained in:
46
4Archives/海量渲染战斗/GPU动画工程/GPU蒙皮动画.md
Normal file
46
4Archives/海量渲染战斗/GPU动画工程/GPU蒙皮动画.md
Normal file
@@ -0,0 +1,46 @@
|
||||
### 蒙皮动画原理
|
||||
- 网格顶点可以绑定多根骨骼
|
||||
- 所以网格顶点在运行时就可以确定为根骨骼的**空间矩阵** * **骨骼混合权重** * **网格空间坐标**
|
||||
- 世界坐标系下 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**和骨骼**索引**,如果索引超出,无法创建
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user