1. 程式人生 > >一個3D骨骼動畫 2D版超精簡Demo,原理和實現幾乎同3D一致

一個3D骨骼動畫 2D版超精簡Demo,原理和實現幾乎同3D一致


以前看D3D的時候,就發現骨骼動畫是個有點難以掌握的東西。
但是也可以說,骨骼動畫是3D齊次空間變換的集大成者,掌握了骨骼動畫,差不多3D空間變換你也就掌握了。
其他所有的層級變換,基本上都不會脫離骨骼動畫需要你瞭解的東西。

網上骨骼動畫的demo多如牛毛,我空間想象能力不行,看過無數資料都不大明白骨骼怎麼轉,面板怎麼蒙。況且那些基於DX、基於GL的程式碼都長的不行,難看的明白。

前兩天vczh搞了個C#的弱智版的2D物理Engine,我今天就搞個C#和GDIPlus的低能版骨骼變換。雖然是2D的,但是原理和實現基本和3D的完全一樣。希望這已經簡單到不能再簡單的程式碼能幫助大家搞明白骨骼動畫是咋回事。

程式碼框架上都有註釋了,矩陣使用的是Sharp3D的數學庫,已經在包中了。不過也就用了矩陣乘法和矩陣-向量乘法,還有一些向量加減法。

原始碼在此下載


2樓的回帖給了一個地址,是關於骨骼運動變換的數學推理和理論解釋,還討論了左右手系的問題。理論上有問題的親們可以參照此篇文章

截圖:

骨骼的初始狀態


變換後的骨骼


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