以前看D3D的時候,就發現骨骼動畫是個有點難以掌握的東西。
但是也可以說,骨骼動畫是3D齊次空間變換的集大成者,掌握了骨骼動畫,差不多3D空間變換你也就掌握了。
其他所有的層級變換,基本上都不會脫離骨骼動畫需要你了解的東西。
網上骨骼動畫的demo多如牛毛,我空間想象能力不行,看過無數資料都不大明白骨骼怎么轉,皮膚怎么蒙。況且那些基于DX、基于GL的代碼都長的不行,難看的明白。
前兩天vczh搞了個C#的弱智版的2D物理Engine,我今天就搞個C#和GDIPlus的低能版骨骼變換。雖然是2D的,但是原理和實現基本和3D的完全一樣。希望這已經簡單到不能再簡單的代碼能幫助大家搞明白骨骼動畫是咋回事。
代碼框架上都有注釋了,矩陣使用的是Sharp3D的數學庫,已經在包中了。不過也就用了矩陣乘法和矩陣-矢量乘法,還有一些矢量加減法。
源代碼在此下載。
2樓的回帖給了一個地址,是關于骨骼運動變換的數學推理和理論解釋,還討論了左右手系的問題。理論上有問題的親們可以參照此篇文章。
截圖:

骨骼的初始狀態

變換后的骨骼

加了一圈子頂點,這個雖然是2D的,但也是貨真價實的蒙皮哈。