(四川大學計算機學院,成都 610065)
隨著虛擬現(xiàn)實技術走進大眾生活,人們對虛擬替身的獲取手段及逼真程度都提出較高要求,希望能夠通過低成本設備,在日常生活環(huán)境下獲取替身,并應用于虛擬環(huán)境[1]。
目前,動作捕獲生成三維虛擬人動畫的技術在動畫影視、人機交互、虛擬現(xiàn)實等行業(yè)已得到廣泛應用。商業(yè)領域已經(jīng)成功運用復雜的設備及標記點的方法驅動模型,生成動畫。例如,Vicon Cara System、OptiTrack Expression 等動作捕獲系統(tǒng),利用光學傳感器,為人體貼上多個標記跟蹤點,可對人類全身運動及面部表情進行準確捕捉,最優(yōu)捕捉精度可達到20 μm。這類設備采集過程有侵入性、價格昂貴、應用場景復雜,難以進一步在日常生活中應用。
對普通用戶而言,單目相機相對動作捕獲設備價格更低,操作更靈活,能在大多數(shù)人機交互場景應用。因此,如何利用單目相機跟蹤人體運動,生成自然逼真的動畫,是近年來計算機視覺和人體運動仿真的一個研究熱點。
圍繞單目相機實時跟蹤人體運動生成動畫的問題,本文展開了深入的研究。首先,采用傳輸控制協(xié)議(Transmission Control Protocol,TCP)網(wǎng)絡時間戳實現(xiàn)雙相機時間同步,使用張正友標定法[2]實現(xiàn)雙相機空間同步;然后,通過同步后的雙相機分別采集面部表情及人體姿態(tài),獲得模型驅動數(shù)據(jù);最后,在虛幻引擎4(Unreal Engine 4,UE4)中驅動三維虛擬人生成動畫。從實驗生成的虛擬人動畫效果來看,本文提出的方法能實時捕獲人體、面部的運動,可以獲得姿態(tài)、表情動作一致的動畫效果,有較好的用戶視覺體驗。
近年來,研究者們對捕獲人體姿態(tài)與面部表情生成動畫問題進行了大量的研究。
人體姿態(tài)估計方面,Cao 等[3]設計了OpenPose,可以在一個圖像中實時檢測多個人體姿態(tài),在多相機場景下預測關節(jié)點置信度和部分親和場向量,并由2D 檢測姿態(tài)結果匹配3D信息,取得了較好的魯棒性。Güler 等[4]提出使用蒙皮多人線性模型(Skinned Multi-Person Linear model,SMPL)擬合密集三維人體方法,構建DensePose 網(wǎng)絡對人體表面進行回歸,將圖像的人體像素映射成3D 人體表面。Mehta 等[5]提出基于單目相機實時穩(wěn)定的姿態(tài)估計方法,該方法實時檢測速度高;但部分場景下,對關節(jié)預測不夠精確,無法解決肢體遮擋問題。王志勇等[6]提出利用Kinect 相機和彩色相機同步采集面部表情及身體姿態(tài)方法,使用Kinect Fusion 掃描得到人物模型,使用Robust Icp 方法實現(xiàn)姿態(tài)估計,重建人臉得到面部動畫;但Kinect采集過程中易引入噪聲,導致出現(xiàn)抖動情況。
面部表情動畫方面,Cao 等[7-8]構建了FaceWarehouse 三維表情庫,回歸預測3D 特征點,實時跟蹤人臉表情,配準生成3D 人臉,能結合BlendShape 生成逼真的人臉表情動畫,提高了三維表情動畫的精確度;但其離線訓練階段,需要對每一個人臉采集數(shù)據(jù),且生成的人臉模型較為粗糙。
上述研究在人臉面部表情動畫驅動及人體姿態(tài)估計方面取得了顯著成果,但未考慮到使用單目相機同時采集面部及身體圖像,提取運動數(shù)據(jù)的情況;且部分方法對頭部運動采集效果較差,得到的數(shù)據(jù)驅動模型時,幾乎無法還原頭部運動情況。攝像頭距離人體較遠時,不易捕捉細微的表情變化;距離較近時,不能完整捕獲人體的肢體信息。得到的數(shù)據(jù)驅動三維動畫時,無法同時得到面部表情與身體姿態(tài)一致的動畫效果,表達人體的行為及情緒。部分方法通過掃描或重建3D模型生成動畫,不能利用數(shù)據(jù)驅動多種模型,模型通用性差,無法復用。因此本文提出了使用單目相機捕捉人體面部表情及身體姿態(tài),生成同步的動作表情捕獲數(shù)據(jù),驅動建立的虛擬模型,得到三維動畫的方法。
在人體姿態(tài)采集過程中,相機距離人體面部較遠,處理細微面部表情的能力較差。為解決該問題,本文采用兩個單目相機分別對面部和身體姿態(tài)數(shù)據(jù)進行采集;但是,兩個相機同時采集會產(chǎn)生時間空間不同步問題,導致后續(xù)面部數(shù)據(jù)與姿態(tài)估計數(shù)據(jù)融合求解過程中產(chǎn)生誤差,因此,需要對相機進行時間同步及空間對齊。
為了保證兩個相機采集的人物數(shù)據(jù)的空間坐標保持一致,本文采用張正友標定法對兩個相機進行空間標定;為保持時間同步,采用TCP 網(wǎng)絡時間戳方法對面部和身體信息進行同步融合。
相機標定的目的是修正相機畸變參數(shù),矯正圖像。根據(jù)標定法,將兩個相機對同一棋盤圖片的不同方向拍照,得到相機各自的內參、外參及其畸變系數(shù)。
為了解決相機時間不同步問題,本文提出了一種使用TCP 網(wǎng)絡傳輸時間戳的同步方法,將表情與姿態(tài)數(shù)據(jù)進行同步融合。TCP 是一種面向連接提供可靠有序數(shù)據(jù)傳輸?shù)膫鬏攲訁f(xié)議,但在傳輸過程中可能存在丟包、粘包等情況。為解決程序發(fā)送接收過程中出現(xiàn)類似的問題,根據(jù)傳輸數(shù)據(jù)類型,始終在發(fā)送端將每個數(shù)據(jù)包封裝為固定長度。根據(jù)處理幀率,在發(fā)送端調用sleep 方法,保證TCP 發(fā)送速率,在接收端設置相同的動畫刷新速率,保證雙方的接收情況。采用此方法后,由于同步后的傳輸能達到20 fps,即使丟失小部分數(shù)據(jù),仍然能達到較為真實的效果,圖1中展示了TCP傳輸流程。
圖1 TCP傳輸過程Fig.1 TCP transmission process
首先,采集面部圖像,利用TCP 網(wǎng)絡,傳輸包含時間戳的數(shù)據(jù)結構至姿態(tài)估計程序;其次,對姿態(tài)估計部分得到的數(shù)據(jù)進行封裝后,匹配面部表情數(shù)據(jù)對應的時間戳,按照先后次序整合為新的表情及姿態(tài)結構數(shù)據(jù);最后,將融合后的數(shù)據(jù)傳輸至UE4 引擎,用于控制模型生成動畫。由于單目相機采集圖像估計3D 姿態(tài)時,幀率較低,為更好地利用姿態(tài)估計得到的數(shù)據(jù),減少丟幀,本文使用平滑及預測方法處理面部表情行為單元數(shù)據(jù),保證面部表情動畫更流暢,通過預測也能使后續(xù)幀面部與身體行為保持同步。
為從單目相機中得到清晰真實的面部表情動畫,本文從圖像中提取2D 特征點,利用2D 特征點回歸得到面部行為編碼系統(tǒng)(Facial Action Coding System,F(xiàn)ACS)面部行為單元(Action Unit,AU)參數(shù)[9],根據(jù)行為單元參數(shù)與表情基線性組合,驅動模型獲得面部表情動畫。
從圖像中提取有效特征點是對面部表情分析的核心步驟,獲取的特征點可作為表情參數(shù)的基礎數(shù)據(jù)。本文使用Baltrusaitis 等[10]提出的受約束局部神經(jīng)域(Constrained Local Neural Field,CLNF)模型,檢測面部特征點及跟蹤面部。其模型構建階段分為Shape 模型及Patch 模型構建過程。捕獲人臉面部表情時,首先構建CLNF 模型,生成目標函數(shù)并得到面部特征點;然后,采用方向梯度直方圖(Histogram of Oriented Gradient,HOG)[11]提取外觀特征,用主成分分析法降低維度;最后,用支持向量機[12]檢測面部行為單元AU 存在情況,使用支持向量回歸估計AU 強度,得到表情的分類和回歸效果。
由于面部表情采集過程平均幀率為30 fps,優(yōu)于姿態(tài)估計效果,本文采用Holt 雙參數(shù)指數(shù)平滑法對面部表情參數(shù)進行平滑及預測,匹配姿態(tài)估計得到的數(shù)據(jù)。期望利用當前人物表情狀態(tài)先驗信息,推斷下一時刻的表情狀態(tài)。通過該方法可以將面部表情數(shù)據(jù)變得更平滑,也能得到一定范圍內的趨勢預測,提高對面部表情的檢測精度。式(1)為平滑方程:
式(2)為預測模型:
其中:α為平滑參數(shù),β為趨勢平滑參數(shù),yt為t時刻平滑值,xt為實際值,bt為t時刻的趨勢值。經(jīng)過Holt 算法平滑處理后,可以避免表情突變情況,獲得更流暢自然的動畫效果。使用預測模型能夠合理預測一段范圍內的表情狀態(tài)。為驗證其預測效果,本文采用平均絕對百分誤差(Mean Absolute Percentage Error,MAPE)對該連續(xù)時間序列的整體預測結果進行評價,式(3)為計算公式:
其中at和表示當前時刻預測值與實際值。誤差越小,表示預測效果較好,接近真實值;反之則效果較差。針對表情行為單元中的9 個值進行評估,選取其中1 s 內25 個數(shù)據(jù),預測未來5 幀的數(shù)據(jù),MAPE結果都在10%范圍內,表明預測結果能反映一定的變化趨勢。
由于靠近人臉的相機能更準確地采集頭部信息,為表現(xiàn)人體頭部位置信息,本文在面部表情采集過程中采用高效n點投影(Efficient Perspective-n-Point,EPnP)算法[13]估計頭部姿態(tài)。以標準頭部3D 坐標值為基準,根據(jù)相機內參,可以得到人體頭部的姿態(tài)估計信息。將頭部坐標信息、表情行為單元和姿態(tài)估計信息匹配融合,能生成合理的人物姿態(tài)及表情驅動數(shù)據(jù)。
為從單目相機中得到清晰真實的虛擬人物身體動畫,本文用相機捕捉人體姿態(tài),獲得人體關鍵點3D空間坐標及旋轉角度數(shù)據(jù),驅動三維動畫角色的身體運動。使用Mehta 等[14]提出的遮擋魯棒姿勢圖(Occlusion-Robust Pose-Map,ORPM)方法實現(xiàn)人體姿態(tài)估計。
ORPM方法是一種同時估計二維和三維姿態(tài)的方法,對于一張RGB 相機獲得的圖像I,計算圖像中人體姿態(tài),輸出每個骨骼點位置、旋轉角度等數(shù)據(jù),即使在較強的局部遮擋情況下也能輸出完整的姿態(tài)估計數(shù)據(jù)。將采集到人體的分為軀干、頸部、頭部,以及肢干等人體關鍵點。使用Cao 等[3]的方法預測的熱圖H和部分親和場實現(xiàn)2D關節(jié)點的關聯(lián)。圖2展示了ORPM 的網(wǎng)絡結構[14],首先用ResNet50 網(wǎng)絡對輸入圖像進行特征提取,然后將這些特征送入二維姿態(tài)估計網(wǎng)絡,得到各關鍵點的熱圖H和部分親和場,隨后將這部分信息與基礎網(wǎng)絡得到的特征信息一起送入三維姿態(tài)估計模型中,得到三維姿態(tài)估計結果。這部分結果不光包括各關鍵點的熱圖,還包含pose-map 冗余信息,用來在最后修正最終的估計結果。通過冗余信息的加入,三維姿態(tài)模型得到了很好的遮擋魯棒性。
圖2 ORPM網(wǎng)絡結構Fig.2 Network structure of ORPM
在姿態(tài)估計過程中,如果圖像中人體有明顯遮擋,則定義軀干和頸部節(jié)點作為判斷身體姿態(tài)的主要節(jié)點。若末端節(jié)點存在遮擋情況,則取其父節(jié)點位置估計該節(jié)點;若軀干中心節(jié)點被遮擋則根據(jù)主要節(jié)點位置保持基礎姿態(tài)。這樣能夠保證無論是否存在遮擋情況,每組數(shù)據(jù)都輸出包含完整關節(jié)點,防止出現(xiàn)由于缺失部分關節(jié)數(shù)據(jù)而生成不自然動畫情況。
為防止數(shù)據(jù)抖動發(fā)生突變,應對數(shù)據(jù)進行平滑處理。具體表現(xiàn)為在得到節(jié)點數(shù)據(jù)后,添加平滑項,由式(4)表示,其中q表示當前幀運動情況。
不同的人體姿態(tài)在空間上可由模型骨架的位置和旋轉角度表示。將骨骼點數(shù)據(jù)按照式(5)來表示:
其中:(xi,yi,zi)為位移信息,(θi,ψi,φi)為旋轉信息。這樣就得到了驅動三維人物肢體動畫的人體姿態(tài)估計數(shù)據(jù)。
目前驅動三維模型常用的變形方法有:基于BlendShape的模型差值變形、基于骨骼動畫的子空間蒙皮變形、自由變形、基于物理的仿真變形等。
生成虛擬人身體動畫時,由于骨骼點較為清晰、數(shù)量較少,通過控制骨骼點的相對位置即可產(chǎn)生相應的動畫。生成面部表情動畫時,需要驅動大量面部點、面部肌肉等來獲得逼真的動畫效果。如果驅動數(shù)據(jù)抖動或偏差較大,會導致生成的表情動畫滑稽夸張。因此本文采用骨骼動畫方法驅動模型身體姿態(tài),使用BlendShape模型方法驅動面部表情,得到整體過渡自然真實的全身動畫效果。
本文通過得到的姿態(tài)數(shù)據(jù),在UE4 引擎中驅動虛擬人物生成動畫,模擬人體姿態(tài)。根據(jù)捕獲到的身體骨骼點,在UE4人物藍圖中建立動畫人物關節(jié)點與捕獲數(shù)據(jù)節(jié)點的映射關系,確定關節(jié)點位置。圖3(a)表示姿態(tài)估計中采集的關節(jié)點信息,圖3(b)表示UE4 引擎模型骨骼樹節(jié)點信息。其中未匹配的骨骼在動畫生成的過程中會保持相對父骨骼靜止。
圖3 姿態(tài)估計與UE4模型的映射關系Fig.3 Mapping relationship between pose estimation and UE4 model
初始情況下,采集到的身體特征點坐標系與UE4引擎坐標系存在差異,每個骨骼也有獨立的局部坐標系,如果不轉換坐標系,會導致骨骼點方向錯誤。因此在輸入數(shù)據(jù)之前需要對坐標系進行統(tǒng)一。本文將三維模型、特征點局部坐標系、特征點世界坐標系均統(tǒng)一至UE4 世界坐標。在人物藍圖中將2.3 節(jié)得到的骨骼點數(shù)據(jù)M轉換為UE4引擎中的Transform(Location X,Location Y,Location Z)及Rotator(Roll,Pitch,Yaw)數(shù)據(jù)。
由于人體骨架的各個節(jié)點之間有內在的關聯(lián)性,直接指定各關節(jié)的平移和旋轉值很容易產(chǎn)生不協(xié)調的動作。本文使用基于物理的人體模擬方法前向動力學(Forward Kinematics,F(xiàn)K)和逆向動力學(Inverse Kinematics,IK),來獲得更加流暢的動畫效果。
由于不同采集者身高比例不同,直接給出末端節(jié)點位置可能會導致模型穿模、相鄰關節(jié)分離的情況。因此本文采用動畫IK 處理模型身體末端節(jié)點(例如手腕、腳腕),即使用子節(jié)點牽引父節(jié)點運動。當末端關節(jié)的位置確定后,根據(jù)末端骨骼點的位置、旋轉信息,計算中間骨骼點的信息。骨骼架構中對應的兩個關節(jié)偏轉角度可以通過雅可比矩陣確定。由于IK 動畫計算出的中間骨骼具有多個方向,因此需要針對不同骨骼調節(jié)其動畫藍圖中的節(jié)點目標位置(Joint Target Location)參數(shù),保證骨骼的正方向。
身體主要支撐節(jié)點(例如髖、肩部等)使用動畫FK,即用骨骼的父節(jié)點驅動子節(jié)點運動,確定核心骨骼相對于UE4 世界坐標系下的準確位置。
人物藍圖將骨骼數(shù)據(jù)傳入相應的動畫藍圖骨骼節(jié)點,按照發(fā)送幀率刷新動畫,就能得到模型的身體動畫驅動效果。
表情融合模型(Expression Blendshape Model)是一種數(shù)據(jù)驅動參數(shù)模型的方法,包括了一個用戶在不同表情下的人臉形狀,描述了該用戶的一個線性表情空間[15]。不同的表情可以與模型中的表情基線性組合得到,因此,人臉的特定表情E可由式(6)計算:
其中:E0為表情基;ei為對應表情加權系數(shù)。對于部分中性表情,適當擴大或重新計算加權系數(shù),能讓部分細微表情表達得更清晰。例如,針對人物眨眼動作判斷不準確的問題,采用得到的面部特征點位置計算上下眼瞼開合程度重新計算對應表情系數(shù),能得到更好的表情效果。
表情動畫驅動過程中,首先,在3ds MAX中綁定好人物面部骨骼,使用Maya 設計模型BlendShape 表情控制器,導入UE4 引擎生成相應的變形控制器(Morph Targets)。然后,建立控制器與表情采集過程獲得的行為單元參數(shù)AU 之間的映射關系。最后,使用TCP 網(wǎng)絡傳輸AU 數(shù)據(jù)至UE4 引擎,根據(jù)表情權值驅動相應表情控制器。按照發(fā)送幀率刷新三維人物面部表情,即可得到實時面部動畫效果。
在相機時間同步過程中,捕獲得到的數(shù)據(jù)已被封裝為結構體數(shù)據(jù)。其中面部表情模塊包含17 個面部行為單元數(shù)據(jù),姿態(tài)估計模塊包含15 個骨骼點的位移坐標及旋轉歐拉角數(shù)據(jù)。在驅動全身動畫時,需要將面部表情數(shù)據(jù)與姿態(tài)估計數(shù)據(jù)進行匹配融合。
在面部采集過程和姿態(tài)估計過程計算了重復的頭部坐標信息,其中面部采集無法獲得真實的頭部平移參數(shù),姿態(tài)估計過程無法獲得準確的頭部旋轉信息及表情信息。因此,本文借助頭部節(jié)點(Head)將面部數(shù)據(jù)與身體姿態(tài)數(shù)據(jù)進行融合,修正頭部姿態(tài)。融合姿態(tài)估計得到的平移坐標,與面部表情采集獲得的頭部旋轉坐標、表情參數(shù),表示完整的人體運動。最終的動畫驅動數(shù)據(jù)表示為式(7):
其中:R為面部表情捕獲得到的頭部旋轉坐標;E為面部表情;t為姿態(tài)估計過程得到的頭部位移。圖4 展示了動畫驅動數(shù)據(jù)結構的完整信息。
在UE4動畫藍圖中,利用TCP接收數(shù)據(jù),綁定對應表情控制器及身體骨骼點,就可以得到3D人物骨骼動畫及表情動畫的重定向結果。
圖4 動畫驅動數(shù)據(jù)結構Fig.4 Animation-driven data structure
本文提出了一種使用雙相機同步檢測人體姿態(tài)及表情并驅動三維動畫的方法。為檢測方法的有效性,使用兩個分辨率為720p 的Logitech 相機,Intel i7-8700K 處理器,NVIDIA GeForce GTX 1080 顯卡進行了實驗。首先,令表演者表演日常行為,包含肢體動作及多種面部表情。對相機同步后,實時采集表演者的動作,獲得面部表情及姿態(tài)估計數(shù)據(jù)。其次,按照本文提出的方法處理得到驅動數(shù)據(jù),建立綁定好面部表情控制器及身體骨骼點的三維模型。最后,使用TCP 網(wǎng)絡傳輸數(shù)據(jù),在UE4引擎中驅動模型,產(chǎn)生動畫效果。在實驗室環(huán)境下,同時捕獲面部表情及身體姿態(tài),并生成動畫,處理幀率能達到20 fps,生成人體肉眼可接受的動畫。
為了驗證兩個相機采集效果是否優(yōu)于單獨采集面部或姿態(tài)得到的動畫效果,本文對比分析了采集部分人體運動獲得的動畫效果。
針對人臉面部表情驅動,本文使用第3 章中面部表情捕獲方法,獲得了人臉表情動畫效果,如圖5 所示,展示了不同表情及頭部姿態(tài)得到的面部表情渲染結果。圖5(a)為真實用戶表情,圖5(b)為驅動得到的動畫表情,實時生成動畫的幀率可達到30 fps??梢钥闯?,本文提出的面部表情捕獲方法能夠快速捕捉用戶面部表情,并實時驅動人臉表情動畫。
本文的姿態(tài)估計結果如圖6 所示,其中圖6(a)為相機采集的人體圖像,圖6(b)為姿態(tài)估計結果,圖6(c)為驅動得到的動畫。根據(jù)結果圖可以發(fā)現(xiàn),本文提出的方法生成的動畫能夠快速模擬出人體行為,但對于面部及頭部采集效果比較模糊,對人體面部表情采集情況較差,需要借助其他方法進一步采集細微表情。
融合面部表情及身體姿態(tài)后產(chǎn)生的動畫效果如圖7 所示。圖7(a)為相機采集的人體圖像,圖7(b)為姿態(tài)估計得到的結果,圖7(c)為面部表情捕獲結果,圖7(d)為融合后生成的動畫。可以看出,使用兩個相機分別進行采集,能同時捕捉到更豐富的面部表情特征以及身體姿態(tài)信息,獲得更加真實的虛擬動畫效果。
對比圖5、6 及圖7 可以看出:單獨捕獲面部表情,僅能獲得表情動畫,不能反映人體運動信息;單獨捕獲姿態(tài)信息,僅能獲得大尺度姿態(tài)動畫,頭部幾乎沒有動作。采集部分人體運動生成的動畫中,角色的面部表情與身體運動的情感表達脫節(jié),不能反映人的真實情緒;而同時捕獲面部表情及身體姿態(tài),得到的動畫效果更加流暢,能夠表達采集者的真實情感,頭部姿態(tài)也更自然。
圖5 面部表情動畫驅動效果Fig.5 Facial expression animation driving effect
圖6 身體姿態(tài)動畫驅動效果Fig.6 Human pose animation driving effect
為驗證本文方法生成虛擬人動畫的自然真實性,在視覺上,本文與直接使用Kinect相機采集面部表情及身體數(shù)據(jù),生成的虛擬人動畫效果進行了對比。圖8 為使用Kinect 相機采集人體生成動畫效果。圖8(a)為Kinect 相機采集的人體圖像,圖8(b)為生成的動畫效果。
對比圖7 和圖8 可以看出,本文提出的方法生成的動畫,能達到Kinect采集數(shù)據(jù)生成的動畫效果。雖然在估計骨骼深度信息時,Kinect 利用紅外設備采集的骨骼深度數(shù)據(jù)優(yōu)于本文提出的單目相機采集的骨骼數(shù)據(jù)。但是,在采集面部信息時,Kinect 僅能采集大尺度頭部運動情況,而本文提出的采用兩個相機同時采集的面部與姿態(tài)的方法能更好地檢測人物表情,生成反映人的真實情緒的動畫。
圖7 融合動畫實驗結果Fig.7 Fusion animation experimental results
圖8 Kinect動畫實驗結果Fig.8 Kinect animation experimental results
文獻[6]采用的方法與本文一致,均為使用兩個相機同步采集面部表情及身體姿態(tài)生成動畫,因此本文對比兩種方法的實驗效果。本文方法采用兩個單目相機采集人體信息,而文獻[6]方法使用一個單目相機和一個Kinect 相機。本文方法處理圖像,生成動畫的幀率與文獻[6]方法的實驗結果如表1所示。
表1 不同方法生成動畫幀率Tab.1 Frame rates of animations generated by different methods
從表1 中可以看出,本文采用的方法能更快地處理并實時生成面部表情及姿態(tài)動畫。分析其原因在于:文獻[6]方法采用三維重建的方式還原面部表情。在姿態(tài)估計部分,使用深度圖像的基礎上,添加了數(shù)據(jù)平滑、輪廓對齊和運動姿態(tài)先驗項,姿態(tài)估計輸出結果的準確性更高。同時身體重建部分沒有進行速度優(yōu)化,不適用于實時情況下的動畫生成。而本文方法旨在實現(xiàn)實時環(huán)境下的同步采集與動畫驅動,因此在幀率上更優(yōu)。此外,文獻[6]方法通過三維重建得到動畫效果,使用Kinect Fusion 掃描和手動嵌入骨骼得到人物模型,并驅動動畫。本文方法直接由數(shù)據(jù)控制三維模型,能夠映射到不同的模型中,能適應更多的模型,得到更豐富的動畫。
實驗結果表明,本文提出的方法能檢測人臉面部表情及基本的人體行為,并在UE4引擎中實時驅動三維模型,合成對應的動畫,相較單獨檢測面部表情和身體姿態(tài)得到的效果,能得到更加自然真實的動畫效果。
本文提出了一種使用兩個單目相機同步檢測人體姿態(tài)及面部表情,驅動三維動畫的方法,旨在解決利用計算機實時捕獲人體面部及姿態(tài),生成三維動畫的問題。
考慮到相機靠近人臉能夠更精確地采集面部表情及同步姿態(tài)問題,本文利用兩個相機分別對面部表情及身體姿態(tài)進行采集。首先,使用張正友標定法對相機進行空間同步且使用TCP 網(wǎng)絡時間戳實現(xiàn)對相機時間同步。接著,利用雙相機分別采集面部表情和人體姿態(tài),將得到的面部行為單元及身體骨骼點數(shù)據(jù)匹配融合,并統(tǒng)一世界坐標系。然后,建立包含面部表情控制器及綁定好身體骨骼的模型,在UE4 中創(chuàng)建數(shù)據(jù)到控制器和骨骼點的映射關系。最后,使用TCP傳輸數(shù)據(jù),在UE4 中驅動模型生成動畫。在實驗室場景下,實現(xiàn)了人體姿態(tài)檢測、表情檢測和動畫驅動,結果表明本文方法能夠生成符合人體運動規(guī)律的動畫效果,且可以達到用戶可接受的幀率??傮w來說,本文所提方法能夠實現(xiàn)對人體面部表情及身體姿態(tài)的實時捕獲,并驅動三維模型生成動畫。
但本文方法也存在不足,該方法缺點之一是最終產(chǎn)生的部分動畫效果不夠真實,不能準確地描述部分人體行為,一些細節(jié)(例如手指、腳部)動畫比較僵硬,還有較大的改進空間。由于單目相機捕獲深度信息不夠準確,導致部分關節(jié)點不能真實地描述人體運動。另一個缺點是姿態(tài)估計過程需要盡量減少環(huán)境噪聲,對環(huán)境要求和用戶活動空間仍有限制。此外,當前系統(tǒng)僅對部分表情進行判斷,不能豐富地展現(xiàn)人物表情。因此,在未來的工作里,應考慮進一步如何跟蹤人體手指等末端關節(jié)動作,提升深度信息精度,以提升動畫效果。此外,改進面部表情采集方法,獲得更加生動形象的面部表情數(shù)據(jù),以得到更逼真的人物動畫效果。