近年來,隨著虛擬技術(shù)的發(fā)展,虛擬人物及面部捕捉技術(shù)越來越受到科技大廠的關(guān)注,從Epic Games與數(shù)字王國合作開發(fā)的實時數(shù)字面部捕捉技術(shù),到Facebook公布Codec Avatars技術(shù),再到騰訊攜手Epic開發(fā)虛擬數(shù)字人物。從技術(shù)方向來看,大廠們在虛擬人物上保持著高度的統(tǒng)一。騰訊、Facebook、數(shù)字王國以及國內(nèi)眾多游戲大廠都在不同程度的嘗試這一技術(shù)。
近日,在騰訊游戲?qū)W院的欄目中,騰訊互動娛樂新體驗與技術(shù)部助理總經(jīng)理,專家工程師顧煜分享了他們此次與Epic Games合作研發(fā)虛擬數(shù)字人Siren的開發(fā)歷程。本文為全文的下篇。
上篇請查看:
騰訊虛擬數(shù)字人“Siren”的開發(fā)歷程(上)
Project Siren Episode 4
上回說到渲染開發(fā)和人臉建模。那兩塊雖然也復(fù)雜,但還不是整個項目中風險最大的部分。風險,總在于整個項目中的短板。
恐怖谷效應(yīng)
真正的難點,在于臉部表情。
這么多年來,實時數(shù)字人技術(shù),無法跨越恐怖谷,非常重要的原因,就在于臉部表情難以模擬。在靜態(tài)畫面層面,已經(jīng)有很多游戲,做到極其逼真的人像渲染。而逼真的畫面,在動起來以后,就有讓觀眾微妙的不適感。這不適感,來自于表情動畫。
下圖來自Uncharted4。
人類太熟悉人類的表情,一顰一笑,即使是臉上最細微的表情,我們都可以感知到。而計算機視覺打造出來的表情,缺乏靈氣。這個靈氣,就是計算機視覺最難跨過的門檻。
如果對表情捕捉有了解,大家會說:不對啊,近年來類似的捕捉技術(shù)很多。相當多技術(shù),可以做到實時捕捉真實表情,運用到卡通臉、甚至是動物臉上。比如Facerig的技術(shù),就可以在消費級別的Webcam上,捕捉人臉表情,讓畫面中的卡通角色做出“一樣”的表情。
我們?nèi)粘J褂玫膇PhoneX,也可以有Animoji,捕捉表情,應(yīng)用在卡通角色。
如此看來,似乎表情捕捉也并不復(fù)雜?
其實不然。很多團隊已經(jīng)可以把表情用在卡通模型上,但他們還是需要很大的勇氣,才能把類似的技術(shù)用到真人模型上。因為使用卡通或者是不精確的模型,這些技術(shù)都回避了難點問題:精準的表情識別。
卡通角色,由于和真人有巨大的差異,所以人類對他們表情有很大的寬容性??ㄍ樀谋砬椋绻驼嫒瞬蹲降谋砬橛谐鋈搿聦嵣弦恢庇芯薮蟮某鋈?,你也不會留心到,反正卡通角色的表情怎么做都可愛。但真人角色就不一樣的,如果表情有差別,根本不需要把兩個表情放在一起做兩兩對比,你也馬上就可以感受到。當然你不會看出這個嘴角少上翹了3度,而是會覺得表情說不出的僵硬和古怪。
換句話說,這就是恐怖谷。
在上圖中,橫軸代表模型逼真度,左面是完全不像真人,右面代表完全真實。縱軸代表人類對這樣模型的好感度,下面是沒有好感,上面是有好感。
卡通模型處在坐標軸的左側(cè),所以表情的誤差,并不會導致人類的好感度下降。隨著卡通模型的越來越逼真,人類的好感度也在逐漸上升。
當模型質(zhì)量開始逼近完美的時候,我們會發(fā)現(xiàn),隨著質(zhì)量的微小提升,好感度反而出現(xiàn)了巨大的下降。而隨著模型進一步完美,人類的好感度才會逐漸提升。這個曲線形成了一個小山谷,這就是通常意義上的恐怖谷。
我們項目的目標對象質(zhì)量,已經(jīng)接近真人,所以在虛擬世界中,微小的誤差,也變得無法忍受,換言之,就是進入了恐怖谷。
表情捕捉
面對恐怖谷,并不是沒有辦法克服技術(shù)的不足。傳統(tǒng)電影行業(yè)就做到了。他們依賴的是更高的采集精度,更多的計算資源,以及手工精修。電影的大量合成畫面,都是經(jīng)過動畫制作人員手工一幀幀調(diào)整來做到的。
但具體到我們實時領(lǐng)域,就不能采用如此暴力的手段。相比于電影行業(yè),實時是我們的優(yōu)勢,也是最大的詛咒。我們不能引入后期的手工精修環(huán)節(jié),所有的計算都必須在當時發(fā)生。我們也缺少計算資源,虛擬人的程序以60幀每秒運行,而電影畫面的渲染,一幀動輒幾小時渲染,計算能力差距是天差地別。所有的計算都必須在16毫秒的時間段內(nèi)做完,而且我們能依賴的也不是什么高端電腦,而是民用級別的電腦。
鋪墊了這么久的技術(shù)難度,另一個重要的合作伙伴,Cubic Motion,也要開始它的表演了。它是臉部表情捕捉的負責方,提供了從硬件到軟件的全部方案。
Cubic Motion在這個行業(yè)也已經(jīng)耕耘多年。2016年,他們就和Epic有過合作,做出了Hellblade的動捕表情實時方案,當時質(zhì)量已經(jīng)相當驚艷,但可惜的是模型都還是游戲的質(zhì)量。這次再度合作,他們希望挑戰(zhàn)更真實的人臉捕捉。
Cubic Motion的第一個切入點,是從頭盔開始。他們醞釀多時,思考了過往種種不足,展望未來各種可能。所有的技術(shù),都要從“頭”開始,于是,他們使用3D打印,按照模特的頭型,打印了一個假頭…...
這個邏輯有些奇怪,但也合理,打印假頭是為了制作頭盔,不知道頭的尺寸,怎么制作精確尺寸的頭盔呢?而且頭盔也需要地方存放,有一個假頭,豈不是上好的支撐架子?雖然這個架子有一點點小貴。
他們使用頭盔上的攝像頭,捕捉模特的各種表情,拍成視頻,進行人工標注,生成Solver。這個Solver可以實時檢測臉部表情,生成驅(qū)動臉部Rig的數(shù)據(jù),驅(qū)動真實的人臉。
整套技術(shù)的核心問題,都已經(jīng)走通多時,這次要做的,無非就是更精準,更高效。原理已經(jīng)成熟,目標也很清晰,只是到達目標的路徑,還是格外艱難。
顯而易見的問題是,這套系統(tǒng)依賴于其他各個模塊,并不穩(wěn)定。如果我們修改了基本的模型,或者修改了Rig,那幾乎可以想到,Cubic Motion的同學們又要熬夜訓練Solver了,因為Solver高度依賴其他模塊,所有的細微改動,都會引起他們的變動。偏偏可悲的是,整個研發(fā)周期中,所有的模塊都在瘋狂調(diào)整,沒有什么東西是穩(wěn)定的,這就總讓他們在最后一刻拼死加班調(diào)整Solver。每次演示前,大家把所有模塊都調(diào)試完了,所有數(shù)據(jù)都收集齊了,就留下Cubic Motion的人,在那里熬夜標注。
即使沒有外部問題,這套系統(tǒng)的內(nèi)部問題也不少,它本身也不穩(wěn)定。Cubic Motion是一個上進的公司,每次演示,都在迭代自己的解決方案,每次都想玩出一些新的東西。Hellblade演示的時候使用了單目攝像頭,到Meet Mike Demo時候使用了雙目攝像頭,Siren版本中,他們又嘗試了Side Camera,就是從側(cè)面再加一個攝像頭去拍攝模特的側(cè)面。每個新的模式,單獨來看都不是大問題,但在一個復(fù)雜工程環(huán)境中,就成了巨大的問題。多地合作的時間延遲很大,每次他們調(diào)整技術(shù),就需要重新采集表情資源去調(diào)試自己的Solver,偏偏3D打印的攝像頭盔,并沒有多余備份,我們這一側(cè)沒有設(shè)備,就很難及時提供測試數(shù)據(jù)。
拋開軟件層面的問題不說,硬件層面問題也很大,頭盔的舒適度有嚴重問題。為了保證臉部表情采樣的絕對精準,這頭盔需要非常精準的固定在頭上,不能松動,每次的位置都要一樣。為了防止頭盔滑動,就要用力固定緊,這就造成了頭盔的舒適度不佳,會造成頭部疼痛,模特很難有長時間的續(xù)航。這個問題在后續(xù)導致了史詩級的災(zāi)難,暫時按下不表。
為了提高合作效率,在項目中后期,我們就嘗試把幾家公司的人,全部拉到Epic辦公室,進行高強度的整合工作。每天節(jié)奏基本是半天進行各種系統(tǒng)調(diào)試,數(shù)據(jù)采集,然后反饋問題給遠端的3Lateral,后面半天Cubic Motion調(diào)試他們的系統(tǒng)環(huán)境。
整合的過程并不順利,由于模型也只是剛做完,3Lateral每幾天都會發(fā)更新版本過來,于是Cubic Motion的工作被時時清零,隨時要重做。我們的渲染工作倒是進展順利,和Epic的高級TA一起工作,效率很高,我們也抓緊機會,學習了更多的技術(shù)和思路。
在美國的集中整合,很快結(jié)束了,效果還是不夠理想,然而距離我們的內(nèi)部匯報,時間所剩無幾了。
最終整合
雖然不理想,但時間一分一秒過去,轉(zhuǎn)眼就到了2017年底,約定好的匯報日子。
為了做這次匯報,我們要在騰訊內(nèi)部辦公室搭建一個動捕棚,把所有設(shè)備搬過去。我們團隊先是買了十幾個巨大無比的支架,做動捕鏡頭支撐,寄送到深圳,再買了無數(shù)的線材、電腦設(shè)備。看起來并不復(fù)雜,只是對于做慣軟件開發(fā)的我們,突然去做各種布線工程,還是非常不適應(yīng)。
Epic、Cubic Motion的同學們也早早到了深圳,開始了下一輪整合。
此時的基礎(chǔ)模型和Rig已經(jīng)相當完善,在我們分開的幾周里面,Solver算法質(zhì)量也得到了長足的進步,渲染增強等各方面都接近了最終的質(zhì)量。
故人相見,分外激動,但閑話少說,大家三下五除二,便把系統(tǒng)調(diào)試完成。剩下的時間,自然還是要留給苦命的Cubic Motion,讓他們進一步提升面部捕捉質(zhì)量。
這次Cubic Motion非常給力,我們在臨近匯報的前三天,已經(jīng)看見了非常高質(zhì)量的Solver,表情的精準度等都已經(jīng)達到了很高的水準。姜冰潔的表演,可以很精準地被還原,明顯質(zhì)量已經(jīng)超越了以往的所有版本。這已經(jīng)是一個非常好的匯報備選版本,后面還有幾天,可以慢慢調(diào)試,進一步增強效果,看上去這次匯報的質(zhì)量可以保證了。
從這個聯(lián)合項目開始算起,大半年已經(jīng)過去。我們克服了各種困難,終于接近大功告成。
我們以為這就是全部挑戰(zhàn)了,一切盡在掌握,但后續(xù)的問題,才真讓人猝不及防。
Project Siren Episode 5
一帆風順都只是幻想,通往目標的路途總有坎坷。
在項目將近尾聲的時候,最大的挑戰(zhàn),不期而遇。
下馬威
命運先給我們來了一個小的下馬威。演示現(xiàn)場需要高質(zhì)量的電視機做演示。我們在公司內(nèi)部借了一臺Sony 85‘的電視機。我們找人把電視機搬上來后,一開機,就傻眼了,電視屏幕壞了,應(yīng)該是搬動過程中,碰到了什么地方,屏幕角落碎裂,畫面糊作一團,液晶在屏幕內(nèi)慢慢暈開。
大家當時就眼前一黑,不知如何是好。上網(wǎng)查查,這款電視要將近5萬,怎么看都不是一個小數(shù)目,大家一邊吃著晚飯,味如嚼蠟,一邊討論如何處理電視的問題,以及怎么再去搞一臺電視。
好在我們很快發(fā)現(xiàn),之前有誤解,那個我們以為是85’的電視,其實只有75‘。于是我們有了一種賺了3萬多的錯覺。查好網(wǎng)上商店的同款電視備貨情況,第二天一早沖到家電賣場,搶購了一臺同型號電視,先應(yīng)付匯報,再還給其他部門。
至于那臺壞電視,也不能放過它。我們將它細心打包,寄回上海,修好以后繼續(xù)為公司服務(wù)。
這是另一場修煉。我們經(jīng)歷過產(chǎn)品研發(fā)、上線流程,倒從來沒有做過這樣的系統(tǒng)工程,每個環(huán)節(jié)都會出錯,每個硬件都會損壞,每個設(shè)備都會買錯。雖然當時是身心俱疲,但的確也是從未經(jīng)歷過的寶貴體驗。
熱完身,終于,我們迎來了最大的挑戰(zhàn)。
歸零
臨近匯報前兩天,模特姜冰潔突發(fā)高燒,40度,渾身無力,無法再繼續(xù)工作。
起因是復(fù)雜的。那幾天工作繁忙,頭盔舒適度低,她一直覺得頭疼,但由于設(shè)備穿脫、校準特別麻煩,即使中場休息,她也不脫裝備。外加歐美人喜歡把室內(nèi)空調(diào)溫度開到巨低,亞洲人不習慣,就著涼了。眼看到了最后一刻匯報關(guān)頭,她就病倒了。
為了得到最好的精度,最大幅度還原真實演員的表現(xiàn),我們一直打算用姜冰潔自己來驅(qū)動自己的模型,這樣效果會最理想。然而模特臨場病倒,即使她再敬業(yè),發(fā)燒到站不起來,肯定是不能再用她來驅(qū)動模型了。
雖然我這個系列文章強調(diào)為了敘事,不惜歪曲事實,但這一次的事件確乎是事實無疑。只能說,真實的生活,比虛構(gòu)的小說更無情。我們的幾個月的數(shù)據(jù)積累,在最后一刻,被清零了。
我深深感到自己的無能為力,無數(shù)事情想做卻又無從做起。從未覺得如此孤單,身邊的一切都在加速遠去,伸出雙手想要挽留,卻抓不住什么。命運開了個小小的玩笑,碾壓過我們的希望,那些疲憊掙扎的夜,那些彷徨徘徊的路,又有什么意義。
老司機們之所以是老司機,主要還是心理承受能力夠好。聯(lián)合團隊都有多年開發(fā)經(jīng)驗,經(jīng)歷過各種大風大浪,既然意外總難避免,大家也就只能從容應(yīng)對。
臨近匯報,已經(jīng)不可能修改時間了,一方面高層領(lǐng)導時間不好約,另一方面聯(lián)合團隊要再湊到深圳,也很難,都是商務(wù)人士,行旅匆匆,分分鐘幾十萬上下。
團隊做兩手準備,一面派人照顧模特,寄希望于她在最后一刻會康復(fù),另一方面,開始考慮如何換模特,在最后兩天訓練新的Solver。
團隊的PM妹子在最后一刻頂上,剩下的二天多的時間,配合采集數(shù)據(jù),做動作捕捉。由于兩人身材差別比較大,對動作捕捉等都造成了不少的影響,但最大的影響,還是在面部表情捕捉。
最高質(zhì)量的表情捕捉Solver,在換演員以后,效果出現(xiàn)了退步??嗝腃ubic Motion又開始了訓練新Solver的過程,采集數(shù)據(jù),從頭再來一遍。其中甘苦,不必多言,在過去大半年的合作中,臉部表情捕捉質(zhì)量進一步,退兩步,再進三步,始終呈現(xiàn)不規(guī)則震蕩,但在那一刻,我們無路可退。
團隊壓力巨大,各種不同文化團隊,出現(xiàn)了爭執(zhí)、爭論和爭吵。我們?yōu)槊恳粋€細碎的不順利爭吵,戴上放大鏡看彼此的過失,團隊遠遠沒有磨合好,脆弱的信任和感情,支撐不起絕望的情緒。
極端的壓力,造成至深的裂痕,大家的委屈、郁悶,都暴露出來,文化的差異,對項目的理解,甚至對食物的抱怨,都是一個個導火索,引燃一場場爭執(zhí)。不知為什么,相敬如賓的聯(lián)合團隊,在那幾天,都把最不堪那一面展示給了合作伙伴。好在隨著版本的一步步進展,大家又慢慢恢復(fù)了職業(yè)化的冷靜克制,共同面對最大的挑戰(zhàn),追求最好的成果。
沒日沒夜忙了幾天,效果被調(diào)整到了一個可以見人的水準,但還是沒有恢復(fù)到之前最好的狀態(tài)。
匯報
終于到了匯報那天。匯報的場景頗有戲劇性,充滿了各種精心設(shè)計的過場,在一次性體驗中,爭取給別人最好的印象。整個流程經(jīng)過了多輪設(shè)計,盡可能自然順暢。
我們先播放視頻,看虛擬人的各種渲染細節(jié),以及一段預(yù)制視頻。雖然畫面質(zhì)量不錯,但大家平日見多了CG影視,也沒啥感覺。
突然顯示屏上,視頻電話響起,虛擬人來電。于是我們假模假樣接起電話,和實時互動的虛擬人進行視頻會議。電視屏幕上的虛擬人,是由隔壁動捕房的模特實時驅(qū)動,我們會議室的一舉一動,被攝像頭同步到動捕房,而動捕房的模特反饋,則通過復(fù)雜系統(tǒng),被實時捕捉、串流、編碼、視頻傳輸?shù)轿覀兎块g。相當于我們做了個視頻聊天系統(tǒng),只是和我們聊天的對象,是一個被真人驅(qū)動的虛擬人。
這個概念很繞,但效果確實很震撼。那些不了解我們工作的人,開始以為屏幕上只是一個普通的CG制作的人,突然她就開口和你說話了。于是你修正了自己的判斷,以為團隊做了個視頻聊天系統(tǒng),和真人聊天。隨后團隊喊出了芝麻開門的咒語,隔壁線人得到指示,輸入Cheat code,屏幕里面人物的衣服瞬間就變色了,怎么看都是視頻游戲里面的Avatar換裝。你定神再看,屏幕上的人又線框化,變成一個Sci-Fi感十足的線框人。大家正在詫異,不敢相信,突然視頻窗口不爭氣的Crash了,大家恍然大悟,連連擊節(jié)贊嘆,須知程序崩潰,方是開發(fā)常態(tài),又知演示瑕疵,才顯技術(shù)本色。
視頻對話期間穿插各種渲染細節(jié)展示,特性宣講,隔壁動捕房有專業(yè)導播和主持,控制虛擬的Camera,進行直播,隨時Zoom in到合適的細節(jié),進行細致講解。
聊了幾分鐘后,模特便邀請大家去動捕房看看幕后場景。一行人來到了動捕房,動捕現(xiàn)場網(wǎng)線如蛛網(wǎng)阡陌,模特仿佛鋼鐵俠轉(zhuǎn)生,渾身纏滿電線和裝備。一整個好萊塢級別的工作團隊嚴陣以待,介紹幕后技術(shù)細節(jié)。
參觀完幕后,就開始進入傳統(tǒng)的商務(wù)畫餅,談起技術(shù)定位,未來前景,自不必多言。
圓滿結(jié)束匯報工作,但一切還沒完。我們追查Crash原因,這么多天研發(fā)整合過程,從來沒有出過問題,此事必有蹊蹺。后來才知道,導播人員在現(xiàn)場切換各種Camera,純熟使用快捷鍵,好不得意。只是他在切換Alt - 4鏡頭的時候,小手一抖,Alt - 4時手指伸遠了一點,按到了Alt - F4,直接關(guān)閉了窗口。
真相水落石出,結(jié)果啼笑皆非,然而結(jié)果不錯,大家一笑而過。
當晚月明星稀,團隊相聚酒吧,一場豪飲,幾聲唏噓,道聲珍重,各奔東西。
尾聲
數(shù)月后的GDC 2018,進一步打磨的技術(shù)得以正式發(fā)布,動捕技術(shù)嘗試和Vicon合作,臉部捕捉進一步進化,找了英國的專業(yè)演員,嘗試使用不同的模特驅(qū)動,達到了更好的效果。這也就是外部所知的Siren虛擬人。
而我們進行的人物渲染增強,也被整合進了后續(xù)4.20的Unreal官方庫中,正式貢獻給行業(yè)。
堅持過、奮斗過的每個團隊,繼續(xù)在自己的路上探索、前行。大路朝天,各走一方,也許,將來還會有再交匯的一天。
虛擬人部分全文終。NEXT Studios的故事還將繼續(xù)。
第一時間了解XR資訊
關(guān)注VR陀螺官網(wǎng)(vrtuoluo.cn)
關(guān)注微信公眾號:VR陀螺(vrtuoluo),定時推送,VR/AR行業(yè)干貨分享、爆料揭秘、互動精彩多。
投稿/爆料:tougao@youxituoluo.com
稿件/商務(wù)合作: 六六(微信 13138755620)
加入行業(yè)交流群:六六(微信 13138755620)