- 相關推薦
基于運動捕獲數據的三維角色動畫設計藝術論文
摘要本文研究了怎樣把現有的人體運動數據重新定向到新的動畫角色對象上,并實現了一個原型系統——盼盼三維角色動畫系統。通過這種方法, 用戶只需要從動畫庫中選擇所需的人體運動,便可方便地控制任意三維動畫角色的運動和變形,從而重用現存的人體運動數據去控制新的角色,創作出一些夸張的動畫效果。
關鍵詞運動重用 三維角色 計算機動畫 人體動畫
Key words motion retargeting 3D character computer animation human animation;
一、引言
在近十幾年里,計算機動畫技術得到了突飛猛進的發展,以動畫卡通、網絡游戲、手機游戲、多媒體產品等為代表的動漫產業是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.
【基于運動捕獲數據的三維角色動畫設計藝術論文】相關文章:
基于矢量數據的三維航跡規劃方法05-01
基于CCGIS的三維城市模型數據生產04-27
基于梯度數據的三維面形重建方法04-30
基于PDA的三維地形數據實時繪制方法研究04-29
EnKF整合三維地震數據和動態數據的應用04-27
基于三維地圖視覺變量理論的三維符號設計04-27