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

骨骼的初始狀態(tài)

變換后的骨骼

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