《Real Time Rendering》之Vertex Blending/Skinning
02-27
實踐中的骨骼動畫(Skeletal Animation)主要包括如下流程:
- 骨骼矩陣變換(Bone Matrix Transform)
- 蒙皮操作(Skinning)
所謂頂點混合(Vertex Blending)語義上主要指蒙皮操作。
但如下公式4.56中同時包含了骨骼動畫的骨骼矩陣變換及蒙皮操作流程。
令
可簡化上述公式為
公式1為骨骼變換操作,公式2即為蒙皮操作。當將公式1的計算結果 傳入GPU即可以實現GPU Skinning。
- 公式1中 為骨骼的世界空間變換矩陣, 執行世界空間到骨骼空間變換(World Space to Bone Space),兩者連接即計算出骨骼在Bone Space的變換以影響蒙皮點。
- 實踐中可以考慮使用骨骼模型空間(Model Space)變換,即 作為模型空間矩陣, 執行模型空間到骨骼空間編號(Model Space to Bone Space)。
- 通過骨骼父子關係從根骨骼計算至所有子骨骼,子骨骼受根骨骼影響。
- 為骨骼初始變換矩陣(世界空間或模型空間)。
即: 如何快速理解並說明骨骼動畫流程?
- 骨骼矩陣計算,父骨骼影響子骨骼。子骨骼變換包括父骨骼變換和自身變換。(Bone Space -> Model Space)
- 骨骼矩陣逆變換到骨骼空間(Model Space -> Bone Space)
- 骨骼空間里蒙皮進行頂點混合。(Bone Space Skinning)
References
[1] Real Time Rendering
推薦閱讀: