基於運動捕獲資料的三維角色動畫設計論文
摘要:本文研究了怎樣把現有的人體運動資料重新定向到新的動畫角色物件上,並實現了一個原型系統——盼盼三維角色動畫系統。透過這種方法, 使用者只需要從動畫庫中選擇所需的人體運動,便可方便地控制任意三維動畫角色的運動和變形,從而重用現存的人體運動資料去控制新的角色,創作出一些誇張的動畫效果。
關鍵詞:運動重用 三維角色 計算機動畫 人體動畫
一、引言
在近十幾年裡,計算機動畫技術得到了突飛猛進的發展,以動畫卡通、網路遊戲、手機遊戲、多媒體產品等為代表的動漫產業是21世紀知識經濟的核心產業,被稱為21世紀最有希望的朝陽產業,這場“後現代產業浪潮”不僅給全球經濟戰略結構帶來了根本性轉變,也為進入新世紀的中國經濟創造了一次千載難逢的歷史發展機遇。
但是,目前的動畫技術還遠沒達到理想的地步。計算機輔助二維動畫具有製作相對方便、製作成本低、對製作和執行的硬體環境要求較低等優點。但是由於傳統的二維物件缺少顯式的三維資訊,使得自動生成好的中間幀畫面非常困難,比如在變化過程中,特別是那些非平行於畫面的變換,引起的起各幀畫面之間物件的對應問題、剪影輪廓的變化問題、各個部分的自遮擋問題、保持形狀比例和體積問題等等,都是研究者們一直試圖解決的難點問題。
計算機動畫之所以有那麼強大的表現能力,各式各樣逼真的模型扮演著舉足輕重的地位。這些模型大多由獨立的動畫軟體,如3DSMax、Maya、Softimage等進行設計。怎樣給一個靜態的模型賦予生命力,並讓它動起來一直是圖形學研究者感興趣的研究課題。三維動畫製作系統中,使用關節骨架控制三維動畫角色已非常流行,動畫師可以非常容易地設定和控制三維角色關節進行動畫控制。但是準確地控制三維模型的變形和運動使其符合實際的物理規律,特別是想要達到實時的要求,難度很大。一種解決方法為採用自動角色動畫。角色動畫動包括骨骼動畫和頂點動畫。骨骼動畫把整個人體按生理結構分為許多部分(圖1-2), 每個部分都有自己的幾何形體,然後再用資料結構把所有的部分合理地組成為一個有層次的整體,例如,上臂連著前臂, 前臂連著手。骨骼動畫與頂點動畫相比,佔用空間小,因為它不需要象頂點動畫那樣要儲存每一幀的各個頂點的資料,而是隻需要儲存每一幀的骨骼的資料。骨骼的資料量與頂點的資料量相比,要少得多。所以骨骼動畫有很多優勢,不管是在遊戲、電影動畫還是虛擬現實中,生動逼真的動畫(人、動物等)會使之增色不少。當然骨骼動畫處理技術難度也很高,它需要解決的一個重要的問題是:如何得到和模型相關聯的骨架?
本文研究了把現有的人體運動資料重新定向到新的動畫角色物件上。透過這種方法,動畫師能夠利用現存的BVH人體運動資料去創造新的動畫。動畫角色物件常被賦予複雜的非剛體運動方式以達到誇張的效果,我們實現了三維角色的自動繫結,使之能做到區域性的非剛體變形描述。若要生成新的動畫,只需要從動畫庫中選擇使用者所需的人體運動,便可方便地控制新的三維動畫角色的運動和變形。人體的運動資料可以來源於運動捕捉,也可以從現存的動畫和影片影片中透過影象處理和計算機視覺的方法來獲取。基於這些素材,我們可以得到運動的素材庫,作為動畫師創作新動畫的來源,從而豐富動畫產品的多樣化和體現製作者的創造性思維。在如今的計算機動畫中,建立模型的過程已經變得比較簡單。但是如果要讓模型動起來,還需要人們手動去嵌入骨架,並且定義骨架驅動表面皮膚的每一個細節。這個複雜繁瑣的過程只能由專業的動畫師來完成,對於一些初學者來說是可望而不可及的。我們實現的系統可以讓一個靜態的模型可以根據給定的運動資料進行所需要的運動。整個過程由程式自動實現,不需要人手動來操作它。這樣的創新使它能夠表現更加複雜的動畫,因此不僅能夠為專業動畫師所用,而且讓初學者也能體驗到自己設計動畫的樂趣。
二、相關工作
在骨架提取方面,已經有很多自動生成骨架的方法。①②③Baran等的Pinocchio系統創造性地提出了骨架嵌入的方法。在自動角色動畫方面,骨架嵌入比骨架提取要好的原因是對於複雜骨架的角色,骨架提取可能會產生不同的拓撲結構,這就讓使用者很難將原來有的骨架運動資料運用到其中來。雖然可以透過附屬肢體模板來鑑別複雜的附屬肢體,但是由於拓撲結構的複雜性,自動生成時也會產生各種不同的誤差。骨架嵌入相對於骨架提取的另一個優勢就是它能夠在骨架中定義角色所需要的很多的結構資訊,這是在提取的純幾何骨架圖中難以得到的。
幾乎所有的網格變形技術,無論是基於表面的還是基於體積的,都可以用來作為基於骨架運動動畫中的對錶面進行蒙皮。④⑤不幸的是,到目前為止,這些方法都不能實現實時的動畫。Baran等的線性混合蒙皮(LBS)具有簡單高效並且能夠利用GPU進行運算,並可以根據骨架進行子空間變形等優點。雖然在質量上的不能夠達到很好的效果,但是它仍然成為在實踐應用中最常用的方法。所以我們的系統採用該方法。⑥
三、原型系統設計設計過程
對於輸入的三維角色模型,我們首先嵌入骨架,然後透過定義骨骼運動對錶面網格上每個頂點的變化的影響權值,將表面皮膚依附在骨骼上。對於不同的角色,我們建立不同的罰函式去懲罰那些我們不期望的骨架嵌入方式。基於樣本用支援向量機的方法求得最大邊緣解,然後對不同罰函式賦予不同的權值。用人工智慧中A*啟發式的方法在指數級的搜尋空間裡加速尋找最優的骨架嵌入方式。在蒙皮階段用熱擴散方程的方法去計算骨架運動時每一塊骨骼對錶面網格上頂點的影響權值。據骨架的變化情況,插值計算出骨架的“蒙皮”模型的各個頂點的位置變化。對於某個特定骨骼,“蒙皮”模型的頂點變換矩陣=初始姿勢的變換矩陣的逆×姿勢變換後的矩陣。另外還要考慮到一個頂點可能受多個骨骼運動的共同影響。
1.骨架嵌入
由於骨架嵌入需要將骨架重新定義大小和定位使得它能夠正確的嵌入到模型當中,所以它能公式化為一個最佳化的過程:計算關節點的位置和朝向使它能夠更好的適合於給定的模型。但是這個最佳化是一個三維空間的問題,所以連續最佳化的方法是不可行的。因此可以建立一個用頂點表示潛在關節點,用邊表示獨立的骨骼的圖來簡化最佳化問題。建立這樣一個圖是具有一定挑戰的,因為我們可以用未知數量的頂點和邊來表示相同模型的關節和骨架。我們在近似模型垂直等分的平面上建立中軸面,並且建立圓心在中軸面上的圓的一個特定的集合,將這些圖的圓心連線起來形成一個圖。然後使用自定義的離散的罰函式來最最佳化的骨架嵌入這個圖。為了幫助最佳化,在給定的骨架中可以包括一些關節點的額外的資訊。比如說對稱的部位應該以相同的名稱命名,又比如如果一個關節被命名為腳,那麼就表示它應該事在模型中位置最低的一個關節。由於定義的罰函式是獨立於具體的模型的,所以並沒有減弱它的通用性。
2.簡化骨架
前面的步驟建立了幾何圖G=(V, E)來表示骨架,我們需要將它嵌入到我們給定的骨架當中。給定骨架原先是以有s個節點的樹的形式給出(在一般人形的骨架上會取s=18),但是如果這s個節點沒有經過簡化,嵌入的最佳化過程是很難處理的。因此我們需要一個簡單的骨架,所以在嵌入骨架之前,需要將骨架簡化。所有的自由度為2的關節都將被除去(比如說膝關節), 關節兩端的骨骼塊被連在一起。簡化後的骨架將會只有r個連線點。那麼骨架嵌入以後缺少某些必要關節的骨架怎麼讓角色動起來呢?我們根據未簡化骨架上關節在整條邊上的比例,重新計算出該關節在簡化骨架上的位置,然後插入到骨架中。在我們的系統中,簡化的骨架中r=7。簡化後的結果就是我們可以將簡化的骨架嵌入到系統中以最小化罰函式懲罰的物件。否則這樣的工作是很難實現的。
3.離散的嵌入骨架和最佳化
一般不可能計算離散的嵌入方式時使罰函式最小,因為嵌入的數量是指數級的。但是可以用類似分支定界的方法在問題的解空間樹T上搜索問題解。我們使用這樣一種方法:首先根據部分嵌入的下界估計儲存優先順序佇列。然後在每一步,取出在佇列中最好的部分嵌入,將它展開,與下一個關節進行計算,然後將結果儲存在佇列中。所以,第一個被完整展開的嵌入就是最好的嵌入。為了加速演算法並且儘可能少的佔用記憶體,如果部分嵌入有一個很高的下界,那麼它將被立即拒絕並不在嵌入到佇列中。雖然這種演算法在最壞的情況下依然是指數級的,但是在我們測試實際情況它都是很快的。
在骨架嵌入前將骨架進行了簡化,省略了很多的關節,比如說膝關節,但簡單骨架嵌入以後,要讓角色真正的動起來,還是需要重新插入這些關節。在這裡可以透過按比列分割骨架圖中路徑最短的邊來得到。我們希望嵌入後的骨架能夠很好的滿足角色的形態比列,但是,有時候骨架並不能很好的`適應我們的角色。同時,一些小的被忽略的骨骼塊並沒有被賦予正確的朝向。骨架最佳化的過程就是為了解決這些問題的提出的。
4.蒙皮
我們的角色和嵌入的骨架在將皮膚依附到骨架上之前是沒有任何關聯的。骨架並不能夠驅動角色運動。因此我們需要指定骨架運動與角色表面網格變化之間的聯絡。雖然在這裡我們可以用很多的網格編輯技術來進行網格變形,但是我們選擇標準的LBS方法:假設表示網格頂點j的座標,表示第i塊骨骼的變形矩陣,表示第i塊骨骼對第j個網格頂點的變形權值。LBS把j變形後的位置表示為。我們的目標就是找到每一塊骨骼變化對所有頂點的影響權值。我們所期望權值有以下幾個特性:首先它應該與網格的大小無關,其次權值的變化應該平滑,最後關節間兩塊骨骼的移動寬度必須與關節到表面網格的距離成一定的比例。即使有一個方案能夠得到權值使得骨骼能夠滿足這些特性,但是它們很可能失敗因為他們忽略了角色的的幾何學特性。作為代替,我們用熱平衡原理來尋找權值。假設我們把角色的體積認為是一個不佔容積的熱導體,然後我們強迫骨骼i的溫度為1,而其他骨骼的溫度為0。當熱平衡以後,我們就可以把表面上每個頂點的溫度值作為該骨骼對它影響的權值。
四、實驗結果
盼盼動畫系統設計時主要依照三個標準:① 廣泛性。適應於盡可能多的模型。對一些結構比較特殊,或者會產生歧義的模型能夠儘可能的正確嵌入骨架。②質量。關鍵在於蒙皮的技術,讓表面皮膚能根據骨架運動驅動正確的位和形變,以期與影片遊戲中的模型相媲美。③ 效能。執行在大多數的家用計算機上。 在盼盼動畫系統裡對採用的模型進行了一些簡單的限制:模型必須是全封閉的,並且是以最自然的姿勢站立,這樣能大幅度的提高骨架嵌入的準確性。當然模型需要是一個有四肢能被嵌入人體骨架的。
圖3為盼盼三維角色動畫系統的一張截圖畫面。系統主要包括模型選取、BVH運動資料選取、執行、檢視操作、工具條等功能。該系統的執行環境為英特爾酷睿雙核CPU,主頻為1.73Mhz,記憶體為1GB。因為盼盼動畫系統是單執行緒的,所以雙核的CPU幾乎沒有什麼影響。測試發現,計算的主要消耗花費在分離過程中距離場的計算上。
五、展望
雖然盼盼動畫系統在人體動畫領域取得了一定的進展,但是它依然存在著不足,限制著它的應用範圍。在技術方面,建立骨架圖的時候可以用橢圓來建立初始骨架圖。在應用方面,首先它的蒙皮質量在某些地方還可以改進,可以透過在骨架上自動蒙皮的技術來提高質量;其次,它的骨架中的關節與一般人體的關節有出入,不能由一般人體骨架運動的資料來驅動,這樣就不能很好地利用網路上大量的表現複雜運動的運動資料。另外,盼盼動畫系統依然不能夠表現手部動畫、臉部動畫這些需要細節的動作。如果能在後期中加入這些方面的應用,一定能夠得到更為廣泛的應用,並且大大減少人體動畫開發的整個週期。
註釋
①Liu P, Wu F, Ma W, Liang R, Ouhyoung M, “Automatic animation skeleton using repulsive force field”, Proc. of Pacific Graphics’2003, pp. 309-413.
②Teichmann M, Teller S. “Assisted articulation of closed polygonal models.” Proc. of Computer Animation and Simulation’98, pp. 87-102.
③Katz S, Tal A, “Hierarchical mesh decomposition using fuzzy clustering and cuts”, ACM Transactions on Graphics, 2003, 22(3): 954-961.
④Wade L. Automated generation of control skeletons for use in animation. PhD thesis, The Ohio State University, 2000.
⑤Baran I, Popovi? J, “Automatic rigging and animation of 3D characters”, ACM Transactions on Graphics, 2007, 26(3):72.
⑥Kry P, James D, Pai D, “EigenSkin: Real time large deformation character skinning in hardware”, Proc. of Symposium on Computer Animation (SCA)’2003, pp. 153-160.