當(dāng)游戲行業(yè)仍在聚焦探討如何讓AI真正落地、協(xié)助游戲的工業(yè)化制作時(shí),網(wǎng)易互娛AI Lab已基于游戲研發(fā)制作中的痛點(diǎn)交出了一份令人驚艷的答卷。
在游戲中,各個(gè)角色存在大量動(dòng)作動(dòng)畫(huà)資源制作的需求,而讓游戲角色獲得如同真人一般流暢自然的動(dòng)作歷來(lái)是制作者們孜孜不倦追求的目標(biāo)。近年來(lái),伴隨著游戲工業(yè)化的趨勢(shì),光學(xué)動(dòng)捕憑借其真實(shí)性和效率替代了傳統(tǒng)的關(guān)鍵幀制作方式,成為許多大制作端游和手游的首選方案。然而,光學(xué)動(dòng)捕最大的弊端之一便是動(dòng)捕數(shù)據(jù)清理所帶來(lái)的巨大工作量,該過(guò)程需要依賴(lài)人工完成,因此在整個(gè)流程中成本占比也最高。盡管此前已有學(xué)者提出了基于深度人工神經(jīng)網(wǎng)絡(luò)的光學(xué)動(dòng)捕數(shù)據(jù)自動(dòng)清洗和解算方案,但該方法的性能還無(wú)法滿(mǎn)足實(shí)際生產(chǎn)環(huán)境的要求,且針對(duì)動(dòng)作細(xì)節(jié)的保真度也存在一定問(wèn)題。
針對(duì)這一實(shí)際生產(chǎn)環(huán)境中的痛點(diǎn),網(wǎng)易互娛AI Lab提出了一種針對(duì)光學(xué)動(dòng)捕數(shù)據(jù)的自動(dòng)清洗和解算方法,可以直接從包含錯(cuò)誤和噪音的raw markers中預(yù)測(cè)出與之對(duì)應(yīng)的clean markers和骨骼動(dòng)畫(huà)數(shù)據(jù)。算法精度和魯棒性都超越育碧研究院(Ubisoft La Forge)發(fā)表在SIGGRAPH 2018的方法,技術(shù)創(chuàng)新性處于國(guó)際領(lǐng)先水平。利用該方法,傳統(tǒng)光學(xué)動(dòng)捕流程中所需的人工工作量可以被大幅降低。近日,網(wǎng)易互娛AI Lab與清華大學(xué)合作對(duì)該方案進(jìn)行了系統(tǒng)性技術(shù)梳理,并撰寫(xiě)論文《MoCap-Solver:A Neural Solver for Optical Motion Capture Data》,該文章已被SIGGRAPH 2021收錄。
論文地址:https://dl.acm.org/doi/abs/10.1145/3450626.3459681
項(xiàng)目地址:https://netease-gameai.github.io/MoCapSolver
技術(shù)背景
運(yùn)動(dòng)捕捉(Motion Capture),簡(jiǎn)稱(chēng)動(dòng)捕(MoCap),指的是將真實(shí)演員的肢體動(dòng)作轉(zhuǎn)換為三維虛擬角色骨骼動(dòng)畫(huà)的技術(shù)。相比于傳統(tǒng)的關(guān)鍵幀動(dòng)畫(huà)制作方式,運(yùn)動(dòng)捕捉技術(shù)有著巨大的優(yōu)勢(shì),既提升了三維動(dòng)作資源的真實(shí)度,又提升了其生產(chǎn)效率,也因此成為了當(dāng)前影視、游戲行業(yè)三維人形動(dòng)畫(huà)的標(biāo)準(zhǔn)制作方式。
從技術(shù)原理上劃分,運(yùn)動(dòng)捕捉設(shè)備可以分成兩種類(lèi)型,慣性動(dòng)捕設(shè)備和光學(xué)動(dòng)捕設(shè)備。其中慣性動(dòng)捕設(shè)備利用固定在演員關(guān)節(jié)上的加速度傳感器來(lái)獲取演員各個(gè)關(guān)節(jié)的相對(duì)運(yùn)動(dòng)量;而光學(xué)動(dòng)捕設(shè)備則通過(guò)大量不同視角的高速相機(jī)同步拍攝演員動(dòng)作,并利用多視角三維重建技術(shù)計(jì)算貼在演員身上的一批特殊標(biāo)記點(diǎn)(marker)的三維坐標(biāo),之后再基于這些坐標(biāo)解算出演員每個(gè)關(guān)節(jié)點(diǎn)的位置和旋轉(zhuǎn)信息。慣性動(dòng)捕設(shè)備成本較低,但是由于受到慣性傳感器的精度限制,其動(dòng)作捕捉的精度也明顯低于光學(xué)動(dòng)捕設(shè)備。此外,由于慣性動(dòng)捕設(shè)備記錄的是每個(gè)關(guān)節(jié)相對(duì)于上一時(shí)刻的相對(duì)值,無(wú)法獲取演員在三維空間中的絕對(duì)坐標(biāo),這一特性導(dǎo)致慣性動(dòng)捕設(shè)備無(wú)法應(yīng)用于多人同時(shí)動(dòng)捕的場(chǎng)景,因?yàn)槠錈o(wú)法定位不同演員之間的相對(duì)位置關(guān)系。由于以上原因,雖然光學(xué)動(dòng)捕設(shè)備成本高昂,但卻在運(yùn)動(dòng)捕捉領(lǐng)域占據(jù)絕對(duì)統(tǒng)治地位。
利用光學(xué)動(dòng)捕設(shè)備進(jìn)行動(dòng)捕的流程分為以下幾個(gè)步驟:
1.演員裝扮:演員穿著緊身動(dòng)捕服裝,并在衣服表面需要捕捉的關(guān)節(jié)附近粘貼一定數(shù)量的marker點(diǎn)(標(biāo)記點(diǎn)),marker點(diǎn)總數(shù)以及每個(gè)marker點(diǎn)粘貼的位置構(gòu)成一套marker configuration;
2.演員標(biāo)定:構(gòu)建一個(gè)與演員體型相適配的人形模版模型,并獲取粘貼在真實(shí)演員衣服上的每個(gè)marker在該人形模版模型上的位置,模版模型的骨架結(jié)構(gòu)叫template skeleton。構(gòu)建方式一般為捕捉一小段該演員的簡(jiǎn)單動(dòng)作,然后用算法自動(dòng)去擬合模版模型和marker位置,這個(gè)過(guò)程也叫range of motion(ROM)標(biāo)定。當(dāng)然也可以在motion builder等軟件中人工進(jìn)行這種標(biāo)定。
3.動(dòng)作捕捉:演員在被一圈高速紅外相機(jī)圍繞的動(dòng)捕場(chǎng)景內(nèi)按照劇本表演出規(guī)定的動(dòng)作,所有相機(jī)同步進(jìn)行拍攝,然后動(dòng)捕軟件利用多視角幾何和目標(biāo)跟蹤算法,計(jì)算出每一個(gè)時(shí)刻演員身上每個(gè)marker點(diǎn)在三維空間中的坐標(biāo);
4.動(dòng)捕數(shù)據(jù)清洗:由于遮擋、傳感器測(cè)量誤差、重建和跟蹤算法本身的誤差等原因,上一步動(dòng)捕軟件輸出的marker坐標(biāo)中往往存在很多錯(cuò)誤,需要人工對(duì)這些錯(cuò)誤進(jìn)行修復(fù),這個(gè)步驟也叫動(dòng)捕數(shù)據(jù)清洗。清洗過(guò)程需要耗費(fèi)大量人力,因此該步驟也是傳統(tǒng)光學(xué)動(dòng)捕流程中成本最高的部分。
5.動(dòng)捕解算:利用動(dòng)捕解算軟件、基于步驟2中的演員標(biāo)定信息,從捕捉到的marker序列中恢復(fù)人體各個(gè)骨骼關(guān)節(jié)的位置和旋轉(zhuǎn)信息,從而得到三維骨骼動(dòng)畫(huà)數(shù)據(jù)(也叫skeletal motion或簡(jiǎn)稱(chēng)motion)。下圖對(duì)比了從不經(jīng)過(guò)人工清洗的marker數(shù)據(jù)(左,也叫raw markers)和經(jīng)過(guò)人工清洗的marker數(shù)據(jù)(右,也叫clean markers)中解算得到的骨骼動(dòng)畫(huà)的差別。
6.動(dòng)作重定向:將解算得到的骨骼動(dòng)畫(huà)數(shù)據(jù)重定向到不同體型的三維虛擬角色上,變成對(duì)應(yīng)角色的動(dòng)畫(huà)資源。
目前業(yè)界對(duì)光學(xué)動(dòng)捕數(shù)據(jù)的清洗和解算主要依賴(lài)vicon blade、vicon shogun、autodesk motionbuilder等商業(yè)軟件提供內(nèi)置工具,處理流程與前文技術(shù)背景中描述一致,其特點(diǎn)為高度依賴(lài)人工對(duì)動(dòng)捕marker數(shù)據(jù)中的錯(cuò)誤進(jìn)行修正,否則解算出的骨骼動(dòng)畫(huà)數(shù)據(jù)會(huì)存在明顯的缺陷。典型的處理流程為,先對(duì)raw markers進(jìn)行自動(dòng)解算得到存在缺陷的骨骼動(dòng)畫(huà),人工對(duì)得到對(duì)動(dòng)畫(huà)進(jìn)行逐幀預(yù)覽,尋找存在問(wèn)題的區(qū)間,然后人工糾正該區(qū)間內(nèi)導(dǎo)致解算結(jié)果異常的marker點(diǎn)。不斷重復(fù)這一過(guò)程,直到整個(gè)動(dòng)捕動(dòng)作序列都能被正確解算。
為了解決這一實(shí)際生產(chǎn)環(huán)境中的痛點(diǎn),育碧研究院(ubisoft la forge)的研究員Daniel Holden在2018年首次提出了一種基于深度人工神經(jīng)網(wǎng)絡(luò)的光學(xué)動(dòng)捕數(shù)據(jù)自動(dòng)清洗和解算方案,并發(fā)表在圖形學(xué)頂級(jí)期刊TOG上(在SIGGRAPH 2018展示)。然而,育碧的方案雖然可以自動(dòng)清洗和解算,但是該方法的性能還無(wú)法滿(mǎn)足實(shí)際生產(chǎn)環(huán)境的要求。一方面,該方法的魯棒性不足。該方法高度依賴(lài)粘貼在演員軀干上(環(huán)繞胸部和腹部的兩圈)的少量關(guān)鍵marker(也叫參考marker)的質(zhì)量。一旦輸入的raw markers中包含參考marker的錯(cuò)誤,該方法的解算結(jié)果就會(huì)出現(xiàn)明顯錯(cuò)誤。而在實(shí)際動(dòng)捕環(huán)境下,這些參考marker很容易因?yàn)楸凰闹趽醵鴮?dǎo)致捕捉錯(cuò)誤。另一方面,該方法對(duì)動(dòng)作細(xì)節(jié)的保真度也存在一定問(wèn)題。本質(zhì)上來(lái)說(shuō),該方法基于逐幀處理的算法框架,沒(méi)有考慮相鄰動(dòng)作幀之間在時(shí)間和空間上的連續(xù)性,導(dǎo)致其輸出的動(dòng)畫(huà)存在明顯的抖動(dòng)。為了解決這個(gè)問(wèn)題,該方法引入了一個(gè)后處理操作對(duì)輸出的動(dòng)畫(huà)進(jìn)行平滑、從而抑制抖動(dòng)。但是,這個(gè)平滑操作在消除抖動(dòng)的同時(shí)也會(huì)抹去動(dòng)作本身的運(yùn)動(dòng)細(xì)節(jié),降低保真度。
技術(shù)思路
針對(duì)育碧方案存在的問(wèn)題,我們提出了一種全新的算法框架。由于clean markers在三維空間中的位置是由演員體型、動(dòng)捕marker在演員身體(貼在動(dòng)捕服)上的分布和演員的動(dòng)作三方面因素決定的,得到這三個(gè)信息,我們就可以通過(guò)前向動(dòng)力學(xué)(forward kinematics, FK)和線(xiàn)性蒙皮運(yùn)算(linear blend skinning, LBS)完全恢復(fù)出對(duì)應(yīng)的clean markers。
基于這一觀察,我們的核心思路為:利用大量動(dòng)捕數(shù)據(jù),訓(xùn)練一個(gè)從raw markers預(yù)測(cè)上述三方面信息的深度人工神經(jīng)網(wǎng)絡(luò)。為了更好的實(shí)現(xiàn)這一目標(biāo),我們首先設(shè)計(jì)了一個(gè)自編碼器(MoCap-Encoders)結(jié)構(gòu),該自編碼器包含template skeleton、marker configuration和motion三個(gè)分支,分別對(duì)應(yīng)了演員的體型、marker在動(dòng)捕服裝上的分布、以及演員動(dòng)作。在大量動(dòng)捕數(shù)據(jù)上進(jìn)行訓(xùn)練后,該自編碼器可以將將 template skeleton、marker configuration和motion三種數(shù)據(jù)編碼成低維空間的隱向量,也可以從隱向量中恢復(fù)出對(duì)應(yīng)的原始數(shù)據(jù)。也就是說(shuō),MoCap-Encoders從大量數(shù)據(jù)中學(xué)習(xí)出了一種關(guān)于這三方面數(shù)據(jù)的更為高效、緊湊的表達(dá)。之后,我們?cè)儆?xùn)練一個(gè)從raw markers預(yù)測(cè)這三個(gè)分支隱向量的網(wǎng)絡(luò)(MoCap-Solver),從預(yù)測(cè)出的隱向量中可以解碼出對(duì)應(yīng)的 template skeleton、marker configuration和motion。其中的motion就是需要解算的骨骼動(dòng)畫(huà),再通過(guò)前向動(dòng)力學(xué)(forward kinematics, FK)和線(xiàn)性蒙皮運(yùn)算(linear blend skinning, LBS)就可以計(jì)算出對(duì)應(yīng)的清洗后的clean markers。
此外,我們還從真實(shí)數(shù)據(jù)中訓(xùn)練了一個(gè)對(duì)關(guān)鍵參考marker的質(zhì)量進(jìn)行評(píng)估的深度人工神經(jīng)網(wǎng)絡(luò),利用該網(wǎng)絡(luò)挑選raw markers中參考marker可靠性高的幀做剛體對(duì)齊,有效避免了算法精度過(guò)渡依賴(lài)少量參考marker質(zhì)量的問(wèn)題,大幅提升了算法的魯棒性。
技術(shù)實(shí)現(xiàn)
本方法包含訓(xùn)練階段和預(yù)測(cè)階段,預(yù)測(cè)階段直接以光學(xué)動(dòng)捕的raw markers為輸入,自動(dòng)輸出清洗后的clean markers和解算出的骨骼動(dòng)畫(huà)。這里主要介紹訓(xùn)練階段的做法,訓(xùn)練階段包含三個(gè)重點(diǎn)步驟:數(shù)據(jù)準(zhǔn)備、數(shù)據(jù)規(guī)范化(normalization),以及深度人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搭建和訓(xùn)練。
1.數(shù)據(jù)準(zhǔn)備
2.數(shù)據(jù)規(guī)范化
由于真實(shí)運(yùn)動(dòng)包含很多人物根骨骼的全局位移和全局旋轉(zhuǎn),這極大增加了后續(xù)人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的復(fù)雜度。例如,同樣的動(dòng)作在不同的位置、朝著不同的方向做,會(huì)導(dǎo)致捕捉的marker點(diǎn)三維坐標(biāo)存在巨大差距。此外,由于遮擋原因,真實(shí)動(dòng)補(bǔ)數(shù)據(jù)中包含很多跟蹤失敗的點(diǎn),其表現(xiàn)為保持在最后一次被成功跟蹤的位置不動(dòng),隨著人物遠(yuǎn)離該位置,這些點(diǎn)就會(huì)變成毫無(wú)規(guī)律的離群點(diǎn),也會(huì)給后續(xù)網(wǎng)絡(luò)的學(xué)習(xí)造成干擾。所以數(shù)據(jù)規(guī)范化的目標(biāo)有兩個(gè):離群marker的處理和坐標(biāo)系規(guī)范化。
為了處理離群marker,我們首先提取序列中每一幀所有marker之間的距離矩陣(如上圖),該矩陣記錄了所有marker兩兩之間的歐式距離,然后選擇距離矩陣最接近所有幀的距離矩陣平均值的那一幀作為序列的參考幀。之后,將每一幀與參考幀的距離矩陣進(jìn)行對(duì)比,所有導(dǎo)致該幀的距離矩陣與參考幀的距離矩陣存在30厘米以上差異的marker點(diǎn)都被標(biāo)記為離群marker點(diǎn)。離群marker點(diǎn)的坐標(biāo)會(huì)被替換成新的位置,新的位置可以使對(duì)應(yīng)幀的距離矩陣與參考幀的盡量接近。這些新的位置可以通過(guò)簡(jiǎn)單的數(shù)學(xué)優(yōu)化方法得到。
坐標(biāo)系規(guī)范化的目的是消除根骨骼全局平移和旋轉(zhuǎn),因此需要marker的坐標(biāo)由世界坐標(biāo)系轉(zhuǎn)換到局部坐標(biāo)系。為此,我們參考了[1]中的做法,以軀干附近(環(huán)繞胸部和腹部的兩圈)的一批marker為參考marker(如下圖),然后對(duì)序列整體的全局平移和旋轉(zhuǎn)進(jìn)行修正。方法為在序列中選定一個(gè)參考幀,計(jì)算一個(gè)剛體變換使得參考幀的這批參考marker的位置與T-pose下的參考marker的位置盡量對(duì)齊(也叫剛體對(duì)齊)。通過(guò)這個(gè)操作,序列中所有幀的坐標(biāo)系就由世界坐標(biāo)系變換到了由T-pose定義的局部坐標(biāo)系。
但是,這個(gè)操作高度依賴(lài)參考幀中的那批參考marker的質(zhì)量,一旦參考幀的參考marker中存在噪音和錯(cuò)誤,坐標(biāo)系規(guī)范化的效果就會(huì)大打折扣,整套算法的精度和魯棒性都會(huì)大幅降低。為了解決這個(gè)問(wèn)題,本發(fā)明訓(xùn)練了一個(gè)對(duì)參考marker的質(zhì)量進(jìn)行評(píng)估的深度人工神經(jīng)網(wǎng)絡(luò),并利用這個(gè)網(wǎng)絡(luò)挑選參考marker可靠性高的幀做參考幀進(jìn)行剛體對(duì)齊。該網(wǎng)絡(luò)的結(jié)構(gòu)如下:
3.深度人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搭建和訓(xùn)練
接下來(lái),我們利用上述數(shù)據(jù)和規(guī)范化方法訓(xùn)練一個(gè)深度人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)包含兩個(gè)模塊,如下圖所示:
其中MoCap-Encoders為一個(gè)自編碼器,包括三個(gè)分支,分別對(duì)應(yīng)template skeleton、marker configuration和motion。訓(xùn)練完成的自編碼器既可以將 template skeleton、marker configuration和motion三種數(shù)據(jù)編碼成低維空間的隱向量,也可以從隱向量中恢復(fù)出對(duì)應(yīng)的原始數(shù)據(jù)。MoCap-Encoders的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
應(yīng)用/效果展示
本項(xiàng)目的訓(xùn)練數(shù)據(jù)來(lái)源于公司采集的大規(guī)模真實(shí)動(dòng)捕數(shù)據(jù),可以大于30fps的速度對(duì)光學(xué)動(dòng)捕數(shù)據(jù)進(jìn)行自動(dòng)清洗和解算,滿(mǎn)足了工業(yè)上速度要求,解算得到的骨骼動(dòng)畫(huà)的骨骼點(diǎn)平均位置誤差小于1cm,平均旋轉(zhuǎn)誤差小于4度,滿(mǎn)足了游戲動(dòng)畫(huà)制作的精度要求。相比于目前業(yè)界領(lǐng)先算法,本項(xiàng)目算法在動(dòng)作保真度和重構(gòu)marker點(diǎn)精度上領(lǐng)先,統(tǒng)計(jì)得到本算法的預(yù)測(cè)結(jié)果只有低于1%的幀出現(xiàn)了工業(yè)生產(chǎn)不可接受的視覺(jué)瑕疵,而目前業(yè)界領(lǐng)先算法則為10%。另外,本算法的魯棒性?xún)?yōu)于業(yè)界領(lǐng)先算法,實(shí)驗(yàn)結(jié)果表明本算法對(duì)演員軀干附近關(guān)鍵marker點(diǎn)精度的魯棒性比目前業(yè)界領(lǐng)先方法好。目前本項(xiàng)目算法已經(jīng)集成在公司動(dòng)捕數(shù)據(jù)處理的工作流中。