Research on Skeletal Animation (Another one)

Copied from 天蠶蛾,Recently immersed in Skeletal Animation,many transshipments from other authors,these articles really helped me a lot at the beginning of the proj,thanks.
 

骨骼動畫(Skeletal Animation)又叫Bone Animation,它與關鍵幀動畫(Key-frame Animation)相比,佔用空間小,因爲它不需要象關鍵幀動畫那樣要存儲每一幀的各個頂點的數據,而是只需要存儲每一幀的骨骼,骨骼與頂點相比,當然要少得多。所以骨骼動畫有很多優勢,當然其技術難度也很高。我個人覺得動畫在計算機圖形學中是一個十分重要的內容,不管是在遊戲、電影動畫還是虛擬現實中,生動逼真的動畫(人、動物等)會使之增色不少。所以我決定今後的研究方向就是計算機動畫。目前在研究Skeletal Animation,這是目前動畫技術中的主流。歡迎同好與我交流,共同提高!

    骨骼動畫的實現思路是從我們人的身體的運動方式而來的(所以VR就是對現實世界的虛擬嘛 :-))。動畫人物的身體(肉、皮膚)是一個網格(Mesh)模型,網格的內部是一個骨架結構。當人物的骨架運動時,身體就會跟着骨架一起運動。骨架是由一定數目的骨骼組成的層次結構,每一個骨骼的排列和連接關係對整個骨架的運動有很重要的影響。每一個骨骼數據都包含其自身的動畫數據。和每個骨架相關聯的是一個“蒙皮”(Skin)模型,它提供動畫繪製所需要的幾何模型(Vertex,Normal,etc)和紋理材質信息。每個頂點都有相應的權值(Weight),這些權值定義了骨骼的運動對有關頂點的影響因子。當把動畫人物的姿勢和全局運動信息作用到骨架上時,這個“蒙皮”模型就會跟隨骨架一起運動。如下圖所示:

    所以關鍵是對骨架進行動畫生成,生成的方法也是用關鍵幀。關鍵幀動畫是對人物的網格(Mesh)模型採用關鍵幀生成動畫;而骨骼動畫則是對人物的骨架採用關鍵幀生成動畫,然後再讓網格(Mesh)模型跟隨骨架運動。關鍵幀動畫實現的2個關鍵點是:關鍵幀的選取和中間幀的插補。

    關鍵幀的指定有2種基本的方法:前向動力學(FK)和逆向動力學(IK)。前向動力學用一組節點的角度來找到末端受動器的位置;而逆向動力學則是找到將末端受動器置於所要位置所需的一組節點角度。前向動力學的優點是:計算簡單,運算速度快,缺點是:需指定每個關節的角度和位置,而由於骨架的各個節點之間有內在的關聯性,直接指定各關節的值很容易產生不自然協調的動作;逆向動力學的優點是:只需指定主要關節點的位置,負擔輕,缺點是:計算模型比較複雜,開發者需要機械運動和動力學、幾何學以及向量數學等方面的相關知識。

    中間幀的插值分2步:(1) 根據當前時間,通過插值計算出每個骨骼的旋轉、平移等值,形成中間幀的骨架。插值算法一般採用四元數(Quternion)的球面線性插值(Spherical linear interpolation)SLERP,SLERP特別適合在兩個方位之間進行插值,不會出現像對歐拉角插值那樣出現萬象鎖的現象,而且這種插值能產生更平滑和連續的旋轉,表達方式也很簡潔;(2) 根據骨架的變化情況,插值計算出骨架的“蒙皮”模型的各個頂點的位置變化。對於某個特定骨骼,“蒙皮”模型的頂點變換矩陣=初始姿勢的變換矩陣的逆×姿勢變換後的矩陣。另外還要考慮頂點可能受多個骨骼運動的影響。這時我們對每個與當前頂點相關聯的骨骼,將其運動姿勢變換矩陣×當前頂點相對於該骨骼的偏移向量×該骨骼對當前頂點的影響因子(即權重Weight),對所有與當前頂點相關聯的骨骼都這麼處理,然後相加,就得到當前頂點的新位置。

    由此看出,如何設置各關鍵幀的骨架的各節點的位置和骨骼的轉向(也就是骨架的POSE)是其中的關鍵,有2種方法:一種是由動畫師手工放置,這個對動畫師的技術要求就比較高,要求動畫師對現實生活中的人和動物等的動作有細心的觀察。否則設置的骨架動作就會不自然、不協調;另外一種是基於運動捕捉(Motion Capture)的方法,就是在人的各個關節處安置運動捕捉傳感器,當人做各種動作時,捕捉儀器就將各節點的位置數據記錄下來,這樣我們就可以根據這些節點數據進行骨架建模。由於這是捕捉的真實的人的動作,所以這種方式得到的動畫就很自然、很真實,但捕捉儀器造價昂貴,國內估計只有很少幾家有財力的遊戲公司才購置了這些設備吧。

    目前有好多3D模型格式支持Skeletal Animation,像Microsoft的.X格式、MilkShape的MS3D格式、Half Life的MDL格式、ID Software的MD5格式等。我準備首先研究一下MS3D格式,因爲它有公開的格式說明文檔,閱讀起來比較容易,而且應用很廣。當然,首先要深入學習Skeletal Animation的底層技術,打好堅實的基礎,呵呵! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章