王春兵
(常州紡織服裝職業(yè)技術(shù)學(xué)院,江蘇 常州 213100)
動(dòng)作捕捉(以下簡(jiǎn)稱動(dòng)捕)技術(shù)是一種通過特定的設(shè)備采集人體的運(yùn)動(dòng)數(shù)據(jù)并將其轉(zhuǎn)化為數(shù)字模型的技術(shù)。在動(dòng)畫制作領(lǐng)域,動(dòng)捕技術(shù)已成為一種重要的制作手段。通過動(dòng)作捕捉,制作人員能夠?qū)⒈硌菡哒鎸?shí)的動(dòng)作轉(zhuǎn)化為數(shù)字?jǐn)?shù)據(jù),然后在動(dòng)畫中再現(xiàn)這些動(dòng)作[1]。近年來,三維人體運(yùn)動(dòng)數(shù)據(jù)捕捉技術(shù)已經(jīng)進(jìn)入實(shí)用化階段,越來越多的研發(fā)機(jī)構(gòu)相繼推出了多種商品化的運(yùn)動(dòng)捕捉設(shè)備,如Qualisys、Sega Interactive、MAC、X-Ist、Filmbox、Motion Analysis、VICON、青瞳視覺及NOKOV 等,成功地用于虛擬現(xiàn)實(shí)交互、模擬訓(xùn)練、醫(yī)療、數(shù)字游戲及人體智能工程學(xué)研究等領(lǐng)域。本文以某項(xiàng)目中三維動(dòng)畫角色動(dòng)作制作為例,深入探究如何使用動(dòng)捕系統(tǒng)完成動(dòng)畫制作,使用有效檢索方法提高運(yùn)動(dòng)數(shù)據(jù)庫檢索應(yīng)用效率。
人體共有206 塊骨骼,已明確命名的關(guān)節(jié)共有78 個(gè)。人體呈現(xiàn)的運(yùn)動(dòng)動(dòng)態(tài)多樣,骨骼、肌肉等構(gòu)造十分復(fù)雜。在運(yùn)動(dòng)學(xué)中,骨骼伸展與肌肉伸縮共同控制整個(gè)人體的運(yùn)動(dòng)狀態(tài)。通過采集身體肌肉細(xì)微的變化來制作動(dòng)畫,無疑增加了制作的難度[2]。因此,通常會(huì)選擇能表征人體行為的關(guān)鍵身體部位形成簡(jiǎn)化骨骼模型,來表現(xiàn)人體整體動(dòng)態(tài)。在實(shí)際項(xiàng)目創(chuàng)建中一般捕測(cè)15 個(gè)左右的關(guān)節(jié)點(diǎn),建立人體骨骼模型,用來表征人體運(yùn)動(dòng)。這種骨架模型通常以髖關(guān)節(jié)作為根節(jié)點(diǎn)(即根骨骼),其他節(jié)點(diǎn)均為根節(jié)點(diǎn)的子節(jié)點(diǎn),一起構(gòu)成一種樹狀枝干結(jié)構(gòu)。人體運(yùn)動(dòng)時(shí),根關(guān)節(jié)點(diǎn)的運(yùn)動(dòng)狀態(tài)帶動(dòng)子關(guān)節(jié)運(yùn)動(dòng),具有聯(lián)動(dòng)關(guān)系。運(yùn)動(dòng)狀態(tài)體現(xiàn)在三維虛擬空間中各坐標(biāo)軸坐標(biāo)的數(shù)值變化。當(dāng)然,在影視動(dòng)畫制作中,如果需要精細(xì)的動(dòng)作捕獲設(shè)備,就要采集面部、指節(jié)等肢體部位非常細(xì)節(jié)的骨骼點(diǎn)。
通常,先將人體動(dòng)作捕獲的數(shù)據(jù)由動(dòng)作捕獲設(shè)備傳感器采集傳輸?shù)綌?shù)據(jù)系統(tǒng),再對(duì)數(shù)據(jù)進(jìn)行分析,核查三維人體運(yùn)動(dòng)姿態(tài)顯示的節(jié)點(diǎn)遺漏、數(shù)據(jù)錯(cuò)誤及數(shù)據(jù)跳動(dòng)幅度較大等狀況,可用平滑濾波與數(shù)據(jù)約束對(duì)三維姿態(tài)數(shù)據(jù)進(jìn)行處理優(yōu)化,完善關(guān)節(jié)點(diǎn)信息,將捕捉的數(shù)據(jù)進(jìn)行處理后更貼近人體運(yùn)動(dòng)狀態(tài)[3]。通過數(shù)據(jù)判斷分析、修復(fù)、優(yōu)化和平滑數(shù)據(jù)4 個(gè)過程對(duì)人體三維數(shù)據(jù)進(jìn)行處理。根據(jù)該方法,能很好地解決數(shù)據(jù)波動(dòng)、遺漏、殘缺等情況下的節(jié)點(diǎn)錯(cuò)誤等問題。
動(dòng)畫驅(qū)動(dòng)技術(shù)實(shí)現(xiàn)動(dòng)捕數(shù)據(jù)驅(qū)動(dòng)虛擬人模型,將動(dòng)作數(shù)據(jù)轉(zhuǎn)化為動(dòng)畫。利用關(guān)鍵幀插值、逆向運(yùn)動(dòng)學(xué)和BlendShape 技術(shù),控制虛擬體的運(yùn)動(dòng)軌跡,制作流暢生動(dòng)的動(dòng)畫效果。動(dòng)畫驅(qū)動(dòng)關(guān)鍵技術(shù)主要有關(guān)節(jié)動(dòng)畫技術(shù)、運(yùn)動(dòng)編輯技術(shù)及角色造型技術(shù)3 類。關(guān)節(jié)動(dòng)畫技術(shù)包括骨架控制、關(guān)節(jié)骨架系統(tǒng)、設(shè)置和控制角色關(guān)節(jié)點(diǎn)動(dòng)畫以及分層系統(tǒng),采用運(yùn)動(dòng)學(xué)方法數(shù)據(jù)驅(qū)動(dòng)控制點(diǎn)。運(yùn)動(dòng)編輯技術(shù)可以彌補(bǔ)運(yùn)動(dòng)捕捉結(jié)果中的問題,通過編輯數(shù)據(jù)精確重建運(yùn)動(dòng),給動(dòng)畫師帶來極大的便利。角色造型技術(shù)利用曲面模型,增強(qiáng)層次模型真實(shí)感。
2.1.1 關(guān)鍵幀插值生成動(dòng)畫
人體骨骼模型可以根據(jù)父子關(guān)系來計(jì)算動(dòng)作狀態(tài),運(yùn)用運(yùn)動(dòng)學(xué)的解算來驅(qū)動(dòng)人體動(dòng)畫,但人體運(yùn)動(dòng)模型處理速率最高為20 f·s-1,很難順暢地播放模型運(yùn)動(dòng),因此還需要使用關(guān)鍵幀插值算法,以提高處理速率,產(chǎn)生更好的動(dòng)畫效果[4]。關(guān)鍵幀插值算法的原理是選定關(guān)鍵幀,由插值算法生成中間過渡幀,模擬過程動(dòng)畫。一般先由技術(shù)較好的動(dòng)畫原畫師制作關(guān)鍵幀,再讓助手中間畫師根據(jù)關(guān)鍵動(dòng)畫來制作中間動(dòng)畫。中間過渡部分已經(jīng)可以由計(jì)算機(jī)自動(dòng)生成。位置、旋轉(zhuǎn)角度等作為參數(shù)實(shí)現(xiàn)插值方法,得到中間動(dòng)畫。
2.1.2 逆向運(yùn)動(dòng)學(xué)生成動(dòng)畫
研究者們?cè)O(shè)計(jì)了許多以物理運(yùn)動(dòng)原理為基礎(chǔ)的模擬人體運(yùn)動(dòng)的方法,如力學(xué)中比較經(jīng)典的運(yùn)動(dòng)學(xué),包括正向運(yùn)動(dòng)學(xué)和逆向運(yùn)動(dòng)學(xué)等。運(yùn)動(dòng)學(xué)中的骨骼點(diǎn)之間具有層級(jí)關(guān)系,這與骨骼模型有些共同點(diǎn)。而正向運(yùn)動(dòng)學(xué)是以設(shè)置明確的關(guān)節(jié)角度信息來調(diào)整身體關(guān)節(jié)的空間位置和動(dòng)作,與骨骼模型相似的是子骨骼的信息是根據(jù)設(shè)定的父層級(jí)骨骼點(diǎn)的位置、縮放、旋轉(zhuǎn)等數(shù)據(jù)來進(jìn)行計(jì)算的。以根節(jié)點(diǎn)為起點(diǎn),沿著樹形結(jié)構(gòu)鏈一次求解各子節(jié)點(diǎn)相對(duì)于父節(jié)點(diǎn)的旋轉(zhuǎn)位移信息。每骨骼位置都由父節(jié)點(diǎn)的狀態(tài)決定[5]。根據(jù)逆向運(yùn)動(dòng)學(xué),可以根據(jù)子節(jié)點(diǎn)帶動(dòng)所有父節(jié)點(diǎn),一層一層地傳遞運(yùn)動(dòng)約束。較少的迭代次數(shù)實(shí)現(xiàn)快速且穩(wěn)定的運(yùn)算。其旋轉(zhuǎn)角度被控制在生理約束范圍之內(nèi),能得到符合人體運(yùn)動(dòng)規(guī)律的運(yùn)動(dòng)數(shù)據(jù)。
動(dòng)畫驅(qū)動(dòng)系統(tǒng)生成不同類別的動(dòng)畫效果,通過處理面部表情動(dòng)畫、姿態(tài)動(dòng)畫、融合動(dòng)畫來獲得。這種系統(tǒng)的主要優(yōu)勢(shì)在于利用雙相機(jī),無須表演者穿戴特殊設(shè)備就可以同步捕獲人體表情,普通用戶就能使用,而且能夠驅(qū)動(dòng)生成動(dòng)畫來自3ds MAX 等模型系統(tǒng)創(chuàng)建的通用模型,適應(yīng)性廣泛。除此之外,系統(tǒng)還可以實(shí)時(shí)生成虛擬動(dòng)畫,不需要經(jīng)過復(fù)雜的中間處理環(huán)節(jié)。
2.3.1 虛擬人姿態(tài)驅(qū)動(dòng)
虛擬人體動(dòng)作動(dòng)畫驅(qū)動(dòng)主要是通過導(dǎo)入虛擬體模型和采集的表演者運(yùn)動(dòng)數(shù)據(jù),創(chuàng)建對(duì)應(yīng)的映射關(guān)系,使得人體姿態(tài)數(shù)據(jù)與虛擬人骨架名稱對(duì)應(yīng)。之后將人體運(yùn)動(dòng)數(shù)據(jù)處理后的三維坐標(biāo)數(shù)據(jù)導(dǎo)入U(xiǎn)nity 引擎,將對(duì)應(yīng)的骨骼位置數(shù)據(jù)附加到虛擬人體模型骨骼。對(duì)人體姿態(tài)數(shù)據(jù)可用關(guān)鍵幀插值方法進(jìn)行處理,使得模型運(yùn)動(dòng)狀態(tài)正常。再用IK 動(dòng)畫解算讓動(dòng)作變得平滑,防止因數(shù)據(jù)波動(dòng)差異過大出現(xiàn)模型交錯(cuò)、鄰近關(guān)節(jié)不融合等問題。最后,按照發(fā)送幀率刷新處理綁定好的模型骨骼數(shù)據(jù),就能獲得模型的動(dòng)畫驅(qū)動(dòng)效果。
2.3.2 面部表情動(dòng)畫驅(qū)動(dòng)
人的臉部骨骼比較復(fù)雜,若使用骨骼點(diǎn)方式來控制大量骨骼運(yùn)動(dòng),很難獲得生動(dòng)的面部表情動(dòng)畫。在3ds MAX 或者M(jìn)aya 軟件中對(duì)角色模型面部進(jìn)行骨骼綁定,再創(chuàng)建BlendShape 表情控制器,映射對(duì)應(yīng)計(jì)算出來的AU。在Unity 引擎中導(dǎo)入角色模型,捕獲時(shí)選擇面部行為單元模塊,捕捉的面部動(dòng)作數(shù)據(jù)通過傳輸控制協(xié)議(Transmission Control Protocol,TCP)網(wǎng)絡(luò)通信導(dǎo)入U(xiǎn)nity 引擎。通過設(shè)置各種表情權(quán)值參數(shù)來驅(qū)動(dòng)關(guān)聯(lián)的控制器,就可以獲得實(shí)時(shí)的表情動(dòng)畫。人體模型可鏈接兩個(gè)及以上的表情變形器,根據(jù)調(diào)整設(shè)置“變形器重力”參數(shù)對(duì)AU 的權(quán)重進(jìn)行設(shè)置。建立好控制參數(shù)與模型的映射關(guān)系,動(dòng)畫的變化只與控制參數(shù)相關(guān),與模型本身沒有關(guān)系。通常情況下,可使用相同組參數(shù)來控制不一樣的面部骨骼,因此表情數(shù)據(jù)的通用性在一定程度上得到增強(qiáng)。
本節(jié)通過某項(xiàng)目三維動(dòng)畫來分析討論三維人體運(yùn)動(dòng)捕捉檢索與驅(qū)動(dòng)技術(shù)。該需要制作一個(gè)男孩角色在三維空間中走路和擺臂的動(dòng)作。首先使用Xsens 慣性動(dòng)捕系統(tǒng),通過Xsens 軟件進(jìn)行數(shù)據(jù)采集,獲取人體不同部位的動(dòng)作數(shù)據(jù)。其次,將采集到的數(shù)據(jù)進(jìn)行處理,清除噪聲,優(yōu)化數(shù)據(jù)。導(dǎo)入動(dòng)捕數(shù)據(jù),需要理解動(dòng)作捕捉數(shù)據(jù)的應(yīng)用,將數(shù)據(jù)賦予動(dòng)畫角色。通過使用Xsens 動(dòng)捕系統(tǒng),制作團(tuán)隊(duì)成功捕捉到表演人員的系列動(dòng)作,并將動(dòng)捕數(shù)據(jù)應(yīng)用到動(dòng)畫角色的身上。最終動(dòng)畫角色的動(dòng)作不僅逼真流暢,而且生動(dòng)活潑,如圖1、圖2 所示。這里的關(guān)鍵問題是,要想完成有效的運(yùn)動(dòng)數(shù)據(jù)捕獲以及檢索和動(dòng)畫驅(qū)動(dòng),需要搭建一套系統(tǒng)的開發(fā)平臺(tái),從而生成數(shù)據(jù)并進(jìn)行數(shù)據(jù)驅(qū)動(dòng)技術(shù)相關(guān)設(shè)定。
圖2 三維動(dòng)畫數(shù)據(jù)驅(qū)動(dòng)參數(shù)設(shè)置
3.1.1 三維人體運(yùn)動(dòng)數(shù)據(jù)捕獲系統(tǒng)平臺(tái)
根據(jù)采集方式的不同,動(dòng)捕技術(shù)可分為慣性動(dòng)作捕捉、光學(xué)動(dòng)作捕捉和面部表情捕捉等。Xsens慣性動(dòng)捕系統(tǒng)是一種廣泛應(yīng)用于動(dòng)畫制作領(lǐng)域的動(dòng)作捕捉系統(tǒng),采用了慣性傳感器與專門的分析軟件相結(jié)合的方式,能夠?qū)崟r(shí)捕捉人體的動(dòng)作數(shù)據(jù)并將其轉(zhuǎn)化為動(dòng)畫。Xsens 慣性動(dòng)作捕捉系統(tǒng)能夠真實(shí)地捕捉到人體的動(dòng)作,使動(dòng)畫角色的動(dòng)作更加真實(shí)、自然、生動(dòng),提高動(dòng)畫的逼真度,具有高精度、可靠性、穩(wěn)定性以及易于操作的特性,還具有實(shí)時(shí)渲染能力,可以幫助制作人員更好地掌握動(dòng)畫的制作進(jìn)度,提高工作效率。例如,Xsens MVN 系統(tǒng)量身定制的軟硬件可確保實(shí)時(shí)、可靠、準(zhǔn)確的人體運(yùn)動(dòng)分析,Xsens 的微型運(yùn)動(dòng)追蹤器能夠捕捉到身體高動(dòng)態(tài)運(yùn)動(dòng)中出現(xiàn)的極小的抽搐,從而確保3D 運(yùn)動(dòng)分析的完整性;專用信號(hào)通道可以處理實(shí)時(shí)且強(qiáng)大的數(shù)據(jù)連接,經(jīng)過驗(yàn)證的MVN Analyze 生物力學(xué)模型和傳感器融合算法可確保高質(zhì)量的運(yùn)動(dòng)分析,即使在具有挑戰(zhàn)性的磁干擾環(huán)境中也是如此。
3.1.2 動(dòng)作捕獲數(shù)據(jù)驅(qū)動(dòng)三維模型動(dòng)畫平臺(tái)
Unity 是一款兼容性較強(qiáng)的引擎交互設(shè)計(jì)開發(fā)平臺(tái),工程設(shè)計(jì)師可以將其用在制作電影動(dòng)畫、游戲界面交互、虛擬現(xiàn)實(shí)設(shè)計(jì)、醫(yī)療康復(fù)以及體育虛擬仿真模型等領(lǐng)域。該平臺(tái)支持C#和JavaScript 程序語言,設(shè)計(jì)人員可以用Unity 根據(jù)項(xiàng)目要求進(jìn)行相關(guān)場(chǎng)景建設(shè),擁有系統(tǒng)的開發(fā)工具和全面的技術(shù)社區(qū)服務(wù)。Unity 開發(fā)的游戲可以應(yīng)用在Windows系統(tǒng)、安卓系統(tǒng)等多種平臺(tái),可以將3ds MAX 或Maya 等軟件制作的場(chǎng)景文件導(dǎo)入平臺(tái)中,將項(xiàng)目模塊中的虛擬角色模型、場(chǎng)景模型、道具模型按照項(xiàng)目開發(fā)運(yùn)行要求進(jìn)行參數(shù)設(shè)定與調(diào)試,從而完成動(dòng)畫驅(qū)動(dòng)程序。將Xsens 慣性動(dòng)作捕捉系統(tǒng)平臺(tái)捕獲后處理的數(shù)據(jù)進(jìn)行分析檢索,以數(shù)據(jù)驅(qū)動(dòng)三維模型動(dòng)畫,核心技術(shù)是使用運(yùn)動(dòng)學(xué)等方法結(jié)合關(guān)節(jié)點(diǎn)位置或相對(duì)旋轉(zhuǎn)信息求解人體姿態(tài)。在本次項(xiàng)目中,利用計(jì)算優(yōu)化好的人體動(dòng)態(tài)數(shù)據(jù),在Unity 引擎中設(shè)定參數(shù)驅(qū)動(dòng)動(dòng)畫角色的運(yùn)動(dòng)。
本文搭建了在Maya 中建立場(chǎng)景角色模型,利用Xsens 慣性動(dòng)作捕捉系統(tǒng),與Unity 引擎程序開發(fā)平臺(tái)連接,實(shí)現(xiàn)實(shí)時(shí)性驅(qū)動(dòng)三維動(dòng)畫的系統(tǒng)。與其他捕捉設(shè)備系統(tǒng)相比,該系統(tǒng)的主要優(yōu)勢(shì)包括:第一,非置入性。Xsens 動(dòng)作捕捉技術(shù)采用非侵入性的傳感器對(duì)人的動(dòng)作進(jìn)行捕捉和分析,無須對(duì)表演者進(jìn)行任何形式的置入性操作。第二,高精度。Xsens 動(dòng)作捕捉技術(shù)采用先進(jìn)的傳感器和算法,可以對(duì)人體的細(xì)微動(dòng)作進(jìn)行高精度的捕捉和分析。第三,實(shí)時(shí)性。Xsens 動(dòng)作捕捉技術(shù)可以實(shí)時(shí)地對(duì)人體的動(dòng)作進(jìn)行捕捉和分析,為虛擬動(dòng)畫制作提供及時(shí)的信息反饋和調(diào)整建議。第四,個(gè)性化。Xsens動(dòng)作捕捉技術(shù)可以根據(jù)動(dòng)畫的具體動(dòng)作要求制定個(gè)性化的人體動(dòng)作軌跡方案,提高動(dòng)畫制作效果與效率。
針對(duì)大規(guī)模運(yùn)動(dòng)捕獲數(shù)據(jù)的運(yùn)動(dòng)檢索問題,本文研究了三維人體運(yùn)動(dòng)捕獲數(shù)據(jù)的分析檢索與驅(qū)動(dòng)技術(shù)。在計(jì)算機(jī)虛擬現(xiàn)實(shí)制作項(xiàng)目乃至元宇宙構(gòu)建中,利用動(dòng)作捕捉數(shù)據(jù)驅(qū)動(dòng)虛擬動(dòng)畫技術(shù)成為科技領(lǐng)域研究的熱點(diǎn)之一。本文研究了三維人體運(yùn)動(dòng)數(shù)據(jù)有效性分析處理、利用動(dòng)畫驅(qū)動(dòng)技術(shù)進(jìn)行動(dòng)畫制作以及實(shí)時(shí)驅(qū)動(dòng)虛擬人模型生成動(dòng)畫的方法,并在此基礎(chǔ)上建立了人體三維數(shù)據(jù)捕獲檢索途徑,對(duì)運(yùn)動(dòng)捕獲數(shù)據(jù)進(jìn)行處理、傳輸、歸類、儲(chǔ)存與提取,集合運(yùn)動(dòng)力學(xué)等運(yùn)動(dòng)形態(tài)進(jìn)行數(shù)據(jù)驅(qū)動(dòng)。通過某項(xiàng)目中三維角色動(dòng)作數(shù)據(jù)應(yīng)用實(shí)例,可以客觀論證有效性檢索與動(dòng)畫驅(qū)動(dòng)技術(shù)自身的重要價(jià)值。