在三維動畫和視頻領域,精細地還原面部表情一直是很大的難點。這不僅僅是因為面部動作十分復雜,而且細節很多。更重要的是,人對面部表情傳遞的信息非常敏感,三維模擬表情中細微的不自然都會被人識別出來。為了解決這一難題,傳統的影視界嘗試了很多方法,其一是掃描一個人大量不同的表情,再由藝術家修正并制做出很精細的表情,然后再借助這些表情進行插值計算,來獲得其他的表情;其二是使用動作捕捉設備,如影片阿凡達就采用了類似的方法,這種方法可以快速捕捉面部預先指定的100多個標識點,記錄它們的細微變化,但是這100多個點以外的細節信息就需要藝術家手動去添加了。為了降低手動繪圖的工作量,提高三維動畫的制作效率、精細度和真實性,最近微軟亞洲研究院的研究員們和美國德州AM大學的教授合作,開發了“High Fidelity Facial Animation Capturing”技術,該技術有效地解決了傳統技術存在的問題。
這項技術能夠實現以下幾個目標,首先在速度方面,它能夠提供很高的捕捉幀速率,可以捕捉到面部運動的每個細節動作以及表情快速的變化;另外,在空間上,這項技術要能夠盡可能多地還原3D面部的幾何細節;同時這項技術不僅僅能夠提供表情的捕捉和回放功能,還能夠實現二次編輯,也就是說視頻和動畫的制作者可以根據這些素材制作全新表情。
在制作設備方面,High Fidelity Facial Animation Capturing技術使用了傳統面部和運動捕捉上最常用的兩種設備——三維掃描儀和運動捕捉設備。三維掃描儀能夠捕捉靜態人臉上十分精細的面部特征,但是它速度很慢,捕捉一個完整的人臉畫面要幾秒的時間,而且人必須在這個時候保持靜止;而運動捕捉設備能夠捕捉快速運動物體上的信息,并且能夠生成在時間上非常精細的運動序列,但是它能提取的信息點十分有限,只能捕捉面部100多個點的運動規律。High Fidelity Facial Animation Capturing技術能將這兩種設備獲取的信息相結合,最終能夠生成快速、連續且十分精細的人臉表情。
尋找關鍵幀
High Fidelity Facial Animation Capturing技術使用了類似Flash等動畫制作工具中所涉及的關鍵幀與過渡幀的概念,首先要找到能夠代表每一種表情的特征畫面,即關鍵幀,之后再想辦法通過關鍵幀生成過渡幀,并生成最終的表情變化視頻。因此,這一技術首先要解決的就是如何尋找出最能代表人臉面部特征的關鍵幀。
微軟亞洲研究院的研究員們首先使用運動捕捉設備捕捉人臉的各種表情和表情的變化,它可以拍攝并追蹤人臉上預先貼好的100多個標識點。通過分析視頻最終能夠獲得面部這些標識點的運動規律。在獲取視頻后,研究員們對視頻進行處理,首先從整個視頻序列中抽取幾幀,并嘗試用這些幀的線性組合去計算和生成所有的幀,并驗證計算后的誤差大小,如果誤差大則換用其他的幀再次進行計算。在多次計算之后,將能夠找到幾個關鍵幀,這些幀能夠線性組合出與真實情況最為接近的結果,接下來在這幾幀的基礎上再嘗試加上一幀,再次進行計算,檢驗新加入的幀是否能使計算結果更加優化。通過這樣一步步迭代和計算的方式,最終將能夠得到一組關鍵幀,這些關鍵幀的組合用于重構人物表情,也就是人臉最具代表性的表情。
獲取關鍵幀之后,研究員們會讓剛才拍攝視頻的演員模仿每一個關鍵幀中的表情,并使用三維掃描儀對這個表情進行高精度掃描,這樣就可以獲得每一個關鍵幀的高精度三維模型。這個三維模型與用三維繪圖軟件制作的模型沒有什么區別,每個模型都是由多個在三維空間中的坐標點所組成,每個坐標點都包括x、y、z三個坐標上的數據,而坐標點越多則意味著三維面部模型越精細。
建立“軟骨骼”
盡管已經要求演員盡量去模仿視頻關鍵幀中的表情,但是事實上是無法再次做出完全相同表情的,此時就需要使用一些技術手段來實現兩種數據對齊,也就是明確每個運動捕捉的點在掃描的三維人臉上的位置。研究員們會嘗試對表情畫面先進行一定的旋轉和平移變化,保證兩個表情畫面大部分信息點可以對應到一起。對應完成后仍舊還會有少量的點存在微小不同。研究員們設立了一套面部變形的基本約束條件,在這個條件允許的范圍內,存在微小不同的標識點可以做一定的變形,以實現對應。經過這樣的對應,我們就已經知道了三維頭像上100多個標識點準確和真實的運動規律,這些標識點的組合就像我們制作動畫時,給人物加入的“骨骼”那樣。骨骼可以決定整個身體的運動大規律,例如我們的膝蓋不能向后彎曲,而標識點的組合則決定了整個面部的運動規律。
實現逐點對應
在有了面部的基本“骨骼”之后,接下來要做的就是嘗試將三維面部模型上的每一個點都與其他模型上的點建立一一對應關系。這也是High Fidelity Facial Animation Capturing技術與阿凡達等影片所采用的面部追蹤技術最大的區別之一,阿凡達影片在拍攝時只嘗試建立虛擬形象面部與演員100多個運動標識點的對應關系,以保證演員表情的整體特征能夠被遷移到新的三維模型上。但是三維模型面部的細節信息,如皺紋變化等都是由特效制作師繪制上去的。而微軟研究院的研究員則希望可以借助關鍵幀自動生成每個過渡幀上的面部皺紋,這就需要將關鍵幀三維模型上的所有坐標點都與其他模型進行一一對應。這樣我們就能知道,在某個皺紋產生時,到底是哪個點該向外凸,而哪個點會向內凹,借助這些點的運動規律即可生成細節豐富且十分真實的過渡幀。
當然,研究員們可沒有心情通過手工的方法進行一一對應,他們借助面部分區和傳遞算法來完成這一工作。首先借助已經在三維面部模型上確定的100多個標識點,建立兩個不同表情三維面部模型的基礎對應關系,也就是初始對準。初始對準之后,剩下的就是做每個坐標點的細節對準了,這需要根據人臉的運動特質進行分區域處理,每個面部都會被分為大概8個區域,而每個區域都有自己單獨的變化特征。例如我們看到兩個不同的表情,其中眼部區域可能是完全不同的,但是在嘴部附近的區域可能區別不大。分區域之后,將每個三維面部關鍵幀的某一個區域都提取出來進行獨立比較,在這個區域的一組關鍵幀中,總能找到兩個相對比較相似的關鍵幀,它們中的坐標點可以使用算法找到一一對應關系。之后再使用這兩個關鍵幀中的一個為基礎,去尋找另外一個相似的關鍵幀區域,并再嘗試建立對應關系。通過這種傳遞的方式,最終將能夠建立這個區域中所有關鍵幀坐標點的對應關系。最后,將每個區域拼合回原本的面部,就得到了每個三維面部關鍵幀之間的對應關系了。
在微軟亞洲研究院研究員的規劃中,未來High Fidelity Facial Animation Capturing技術將從專業領域走向大眾。盡管目前這項技術使用的運動捕捉設備在影視業和娛樂業比較常見,但對普通用戶來說畢竟比較昂貴。而且捕捉前期的準備工作和后期的計算工作仍舊相對比較繁重。未來研究員們希望面部捕捉能夠做到更加平民化,用戶可以使用相機或攝像頭來拍攝視頻,并使用隨處可得的計算設備快速實現面部信息的捕獲和計算。而且研究員們還將努力嘗試將這一技術應用到人臉以外的其他事物的運動捕捉上。到時,這個技術就能夠真正讓所有的普通用戶享受到它帶來的好處。
選擇標識點
在選擇運動捕捉標識點方面,實際上業內已經形成了一定的準則。基本準則就是對運動變化比較大的區域,就要盡量將標識點貼的相對密一些。比如,眉毛和嘴角的區域就會相對密一些。另外,還要盡量讓所有的標識點可以實現平均的分布。兩個條件都需要滿足,因此運動劇烈的區域需要多貼,而在其他區域則盡量均勻分布。在實際貼點的過程中,針對不同人的面部特征還要做一些調整。由于不同人的頭部骨骼和面部肌肉存在差異,因此在相同表情的時候,不同人的面部變化也會有所區別。
我們希望影視業、娛樂業未來可以使用到這樣的技術,幫助他們簡化現在的運動捕捉過程,得到高速率、高真實感的數據。在影視制作中使用該技術意味著大家在新的影視節目和游戲當中能看到更真實的面部表情。
——童欣博士 微軟亞洲研究院網絡圖形組高級研究員
高效捕捉
借助High Fidelity Facial Animation Capturing技術,捕捉并生成一個與真人極度近似的三維頭像僅需要1天左右的時間(使用目前主流配置的PC進行計算)。
貼點
在進行運動捕捉之前,首先需要在被捕捉人的臉上貼上100多個點,貼點通常需要2.5個小時。熟練的技師則速度更快;
表情捕捉
接下來使用運動捕捉設備捕捉人臉的實時表情,用半小時左右即可完成多次重復捕捉,以滿足數據獲取的需要;
關鍵幀分析
接下來就需要根據捕捉的視頻進行數據分析了,找出能夠代表被捕捉人表情特征的關鍵幀,這通常需要1個小時;
表情掃描
被捕捉人需要模仿關鍵幀中的表情,并保持這個表情幾秒鐘,此時使用三維掃描儀捕捉每個表情的三維數據,算上失敗重來的時間,總共需要半小時;
計算并生成結果
接下來將這些前期獲取的數據輸入計算機,由計算機根據預先編寫的算法進行計算并生成最終的結果,根據計算機性能差異的不同,這需要幾小時的時間。
通過這樣的制作過程,我們就可以得到一個人三維面部的精細運動模型,并能夠根據這個模型去制作和生成自己想要的各種表情和動畫。