This commit is contained in:
Zane
2025-12-22 12:51:38 +08:00
parent 7ad76a94e5
commit 295bf98b3a
9 changed files with 96 additions and 2 deletions

View File

@@ -0,0 +1,37 @@
### 蒙皮动画原理
- 网格顶点可以绑定多根骨骼
- 所以网格顶点在运行时就可以确定为根骨骼的**空间矩阵** * **骨骼混合权重** * **网格空间坐标**
- 世界坐标系下 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**和骨骼**索引**,如果索引超出,无法创建
---

View File

@@ -0,0 +1,7 @@
### 顶点动画原理
- 将蒙皮**网格**基于根骨骼的相对位移Vector3都写进一张图片中
- 在运行时在Shader中根据根骨骼空间矩阵算出每个顶点
### 烘焙阶段
- 采样Clip在根骨骼的GameObject上的动画
- 将采样到的每一帧网格顶点Vector3写进图片里
- 另外烘焙一份uv1进网格用来存储顶点索引