杜平川
(四川大學(xué)計算機學(xué)院,成都610065)
隨著角色動畫技術(shù)的發(fā)展,基于動作捕捉的角色動畫被廣泛的應(yīng)用到游戲、電影、藝術(shù)數(shù)字化等多個領(lǐng)域。如在電影《指環(huán)王》中的“咕?!薄㈦娪啊缎汕蜥绕稹分械摹皠P撒”、游戲《戰(zhàn)神4》中的大量游戲場面等,都是先基于動作捕捉設(shè)備捕捉真實演員的肢體及面部運動數(shù)據(jù),再通過動畫技術(shù)來模擬肢體和面部數(shù)據(jù)等特征,從而使得角色動畫更加栩栩如生。而在上述電影級別要求的動畫制作中,所采用的軟件仿真系統(tǒng)很大程度上都比較復(fù)雜,相對開發(fā)的成本也比較高,因此在一些畫質(zhì)要求相對較低的動畫系統(tǒng)中并不適用。本文針對上述工業(yè)級角色動畫系統(tǒng)存在的缺點,提出并實現(xiàn)了一種低成本的基于OptiTrack運動捕捉的像素化角色動畫系統(tǒng)。
運動捕捉(Motion Capture)是指通過跟蹤和記錄真實的人體運動過程中,各個標(biāo)記點在世界空間坐標(biāo)系下的位置變換過程,以運動數(shù)據(jù)的形式保存下來,再基于得到的運動數(shù)據(jù)驅(qū)動虛擬人運動[1]。目前存在并廣泛應(yīng)用的主流運動捕捉設(shè)備一般包括傳感器、信號捕捉設(shè)備、信號處理設(shè)備以及數(shù)據(jù)傳輸設(shè)備四個部分。根據(jù)其中傳感器和信號捕捉設(shè)備的原理不同,又可以被分為機械式、聲學(xué)式、電磁式和光學(xué)式。但通過對比捕捉數(shù)據(jù)的靈敏度及精確度,光學(xué)式運動捕捉設(shè)備要遠(yuǎn)優(yōu)于其他三種。因此在本文提出的系統(tǒng)中,采用了由美國OptiTrack公司所涉及研發(fā)的大空間光學(xué)追蹤系統(tǒng),整套設(shè)備主要由8個OptiTrack公司生產(chǎn)的Prime 13系列攝像頭(如圖1、表1)、穿戴式光學(xué)定位工具及部分配件組成。見圖1。
圖1 OptiTrack Prime13攝像機
表1 OptiTrack Prime13攝像機參數(shù)
本文搭建的動作捕捉系統(tǒng)實驗工作地點室內(nèi)場地如圖2所示。由于動作捕捉系統(tǒng)設(shè)備環(huán)境要求將攝像頭安裝在300cm以上高度,實驗采用圓形橫截面金屬材料桿搭建了攝像頭平臺,考慮到不同實驗場景下攝像頭的位置調(diào)整需求,攝像頭平臺安裝在了距離地面和屋頂分別約300cm及50cm的位置。然后將攝像機安裝在設(shè)備所配置的三維云臺底座上,再將云臺固定到攝像頭平臺的金屬材料桿上。根據(jù)光學(xué)式運動捕捉原理將云臺及攝像頭調(diào)整到合適的角度和朝向,并調(diào)節(jié)攝像頭的幀頻、曝光時間、LED光源亮度等參數(shù),使得攝像機捕獲區(qū)域內(nèi)不存在過高亮度的干擾點。見圖2(圖中光色光圈為攝像頭LED環(huán))。
圖2 OptiTrack搭建場景示意圖
通過均勻布置在場地四周的光學(xué)式攝像頭,記錄穿戴有光學(xué)標(biāo)記點的運動物體的運動軌跡,并將運動數(shù)據(jù)以圖像的形式記錄下來。然后使用計算機對該圖像數(shù)據(jù)進(jìn)行處理,即可以得到并輸出在每一幀圖像的時間點上每一個光學(xué)標(biāo)記點的空間三維坐標(biāo)(X,Y,Z)如表2所示,見表2。
表2 動作捕捉光學(xué)點坐標(biāo)數(shù)據(jù)格式
同時,當(dāng)捕捉的運動對象是人體時,OptiTrack官方提供的Motive還可以輸出相應(yīng)的骨骼節(jié)點位置及旋轉(zhuǎn)等數(shù)據(jù)如表2所示,使得所捕獲的運動數(shù)據(jù)能正確地應(yīng)用在其他平臺上。見表2。
為了能使用基于運動捕捉系統(tǒng)得到的真實人體運動數(shù)據(jù)驅(qū)動虛擬人角色運動,需要通過動畫重定向的方式將真實人體運動數(shù)據(jù)重新映射到虛擬人角色上。2009年,Poirier等人[2]提出了通過匹配給定的谷歌運動信息與虛擬角色Mesh之間的拓?fù)潢P(guān)系來使得谷歌適應(yīng)角色模型的方法,但是這種辦法要求輸入的人形模型保持特定的某種姿勢,如T-pose或者A-pose。這種前提條件不滿足普適性。所以在此基礎(chǔ)上Pantuwong等人[3]在2012年提出了一種通過提取輸入3D模型的骨骼解剖學(xué)信息,自動生成角色逆運動學(xué)骨架并與已有的骨骼模板對應(yīng)綁定的算法。解決了Poirier等人提出的方法中的輸入模型特定姿勢限制。此外,Abdul-Massih等人[4]在2017年提出一種將角色Mesh分成多個獨立的身體組(Group of bodies),再通過身體組映射實現(xiàn)動畫重定向的方法。劃分出的身體組相對獨立,因此還需要添加約束并進(jìn)行更多的計算才能得到較好的重定向結(jié)果。這兩種方法相對來說效果更好,但與此同時,相應(yīng)的成本開銷也就更大。為了達(dá)到以較小的代價實現(xiàn)動畫重定向效果,本文提出的系統(tǒng)采用了Unity引擎中提供的特定動畫重定向方案。該方案要求用于動畫重定向的必須是人形(Humanoid)的骨骼系統(tǒng),它在內(nèi)部定義了一套骨骼模板,并要求所有的角色動畫骨骼都必須映射到這套模板上才能由同一個運動數(shù)據(jù)來驅(qū)動并產(chǎn)生動畫。
表3 OptiTrack輸出骨骼節(jié)點數(shù)據(jù)格式
人形(Humanoid)骨骼的類似性,滿足了動畫從一個類人骨架映射到另一個類人骨架的需求。在Unity引擎中,可以選擇Humanoid方式導(dǎo)入類人骨骼系統(tǒng),這種導(dǎo)入方式提供了自動綁定功能,自適應(yīng)地將導(dǎo)入的人形骨骼通過關(guān)節(jié)點及關(guān)鍵骨骼數(shù)據(jù)一一對應(yīng)的方式與所需要復(fù)用到的類人骨骼模型文件相映射。從而達(dá)到運動數(shù)據(jù)復(fù)用的效果。
在數(shù)字圖形及角色動畫表現(xiàn)方法中,像素表現(xiàn)方式是較為基本和常見的一種。如在游戲《我的世界》(Minecraft)中,整體的角色模型以及世界場景構(gòu)建都是由像素組成。本文提出的系統(tǒng)也參考了像素藝術(shù)及其表現(xiàn)手法,選擇了基于動作捕捉的運動數(shù)據(jù)構(gòu)建像素角色動畫。相比于傳統(tǒng)如游戲《我的世界》中的像素動畫,由動作捕捉數(shù)據(jù)驅(qū)動的運動模型更具有真實性,保留了像素藝術(shù)這一表現(xiàn)手法的基礎(chǔ)上同時提高了動畫質(zhì)量。在本文提出的系統(tǒng)中,主要通過體素化的方式,將普通的Mesh文件進(jìn)行實體體素化后,再通過骨骼動畫的形式由骨骼驅(qū)動體素化粒子運動從而得到像素化的角色動畫。
體素化是將物體的幾何形式表示轉(zhuǎn)換成最接近該物體的體素表示形式,輸出包含體素位置的體素數(shù)據(jù)集合。體素化的主要過程為:首先計算模型包圍盒,根據(jù)包圍盒決定劃分的網(wǎng)格數(shù)量。然后遍歷每一個網(wǎng)格,通過遍歷三角形計算三角形到提速網(wǎng)格中間的距離,再與設(shè)定好的閾值對比來確定是否被占用。從而得到模型體素化后的數(shù)據(jù)。主要實現(xiàn)如下:
骨骼動畫,也被稱為骨骼蒙皮動畫,主要是指由骨骼運動數(shù)據(jù)驅(qū)動的角色動畫技術(shù)。Thalmann等人[5]早在1987年就提出了一種針對局部皮膚運動進(jìn)行插值計算的皮膚變形算法(Skeleton Driven Deformation,SDD)。Lander J等人[6]于1998年提出了線性混合蒙皮算法,通過求解每一個頂點在每一塊骨骼影響下的位置變換,并對所有的位置變換加權(quán)求平均得到最終結(jié)果。但這種算法其缺陷在于,對于旋轉(zhuǎn)角度較大的關(guān)節(jié)處,混合后的新頂點丟失了向量長度信息,因此會產(chǎn)生失真如皮膚塌陷、“糖紙效應(yīng)”等現(xiàn)象。此后為了改善線性混合蒙皮算法的缺陷,Weber等人[7]提出通過在關(guān)節(jié)處增加輔助骨骼來抵消過大的旋轉(zhuǎn)角度的方法。上述方法也是目前工業(yè)界常用的骨骼蒙皮動畫技術(shù)。在本文提出的系統(tǒng)中,主要是基于Lander J等人提出的線性混合蒙皮方法,并且由于采用了像素化的表現(xiàn)形式,較好地避免了如皮膚塌陷等現(xiàn)象。主要實現(xiàn)方式是先采用Dijkstra最短路徑算法將模型的表面體素與經(jīng)過動畫重定向后的模型骨骼綁定。再通過IK((Inverse Kinematics)反向動力學(xué),基于模型骨骼的運動數(shù)據(jù)計算表面體素的每一幀所在位置。
由于涉及到了大量位置的計算,所以在實際的系統(tǒng)開發(fā)過程中,本文將體素位置計算的過程放在Computer Shader中,通過GPU并行的方式進(jìn)行計算加速。計算主要過程如下述代碼:
完成運動數(shù)據(jù)捕捉并解決了運動數(shù)據(jù)復(fù)用的情況下,本文基于Unity引擎開發(fā)了三維角色動畫系統(tǒng)。本系統(tǒng)主要分為四個模塊:動作捕捉模塊、動畫重定向模塊、體素化模塊、骨骼動畫模塊。通過動作捕捉模塊捕獲真實人體運動數(shù)據(jù),再基于Unity引擎的動畫重定向方案將人體運動數(shù)據(jù)與虛擬角色綁定,最后基于體素化及骨骼蒙皮動畫繪制出了像素化的角色動畫。所得到的虛擬像素化角色運動效果如圖3所示。
圖3 基于OptiTrack動作捕捉的像素化角色動畫系統(tǒng)效果
本文給出了基于動作捕捉的像素化角色動畫系統(tǒng)中主要算法如體素化、骨骼動畫的實現(xiàn),并基于Opti-Track動作捕捉系統(tǒng)設(shè)備搭建和實現(xiàn)了像素化角色動畫系統(tǒng),本系統(tǒng)相對于普通的像素動畫來說能更加方便快捷地實現(xiàn)更加真實的像素角色動畫,并可以達(dá)到動畫自定義的效果,具有一定的實際意義。