為了能夠提供更好的產(chǎn)品,做出更好的游戲,騰訊公司在技術(shù)方面不斷的學(xué)習(xí)、進(jìn)取,不斷的跟各個領(lǐng)域、各個公司做一些合作。在今年的GDC上,騰訊NEXT Studio和Epic Games合作研發(fā)的實時高保真數(shù)字人Siren首次向公眾發(fā)布。整個演示全部為實時演算,Siren的眼睛、皮膚、頭發(fā),看起來都栩栩如生;講起話來表情豐富,一顰一笑幾乎與真人無異。

在2018TGDC上,在Siren項目中主導(dǎo)了渲染特性和功能的開發(fā),最終將Siren渲染提升到照片級,來自騰訊互動娛樂NEXT技術(shù)中心的技術(shù)專家解衛(wèi)博先生從美術(shù)和技術(shù)的角度,分享了虛擬數(shù)據(jù)人的制作過程。以下是演講實錄:

103310a3js070wajm300ll.jpg
我今天演講的題目是數(shù)字人Siren的渲染技術(shù)。大家都知道,一個母親懷胎十月才能生一個孩子,這次我們跟好幾個跨國團(tuán)隊,用了差不多十個月的時間,誕生了三個虛擬數(shù)字人,一個女人和兩男人。

這次的故事就是圍繞這三個人之間展開,(PPT)這位美女叫江冰潔(諧音),這個圖片其實不是她的寫真照,是通過實時渲染引擎渲染出來的,它的名字叫Siren。大家可以通過一個簡單的視頻看一下這個Siren有多真實?

Siren是一個真實的女性,這一套技術(shù)在2016的時候(11:20)當(dāng)時最重要的環(huán)節(jié)展示了這個技術(shù),并且摘取了當(dāng)時Siggraph大獎,這個獎在圖形學(xué)界非常有重量級的獎項,足以說明這一套技術(shù)實時虛擬數(shù)字人方面是做的最領(lǐng)先的。UE借次機(jī)會把角色渲染提升到一個質(zhì)量。右邊的照片是當(dāng)時開發(fā)的paragon-twinblast,在原先的基礎(chǔ)皮膚、眼睛、頭發(fā)都得到了很大的提升。

說到電影國內(nèi)很多時候拍電影都是有替身的。現(xiàn)在在好萊塢這種情況也是有的,但更多的情況是在技術(shù)上走的非常前沿,是用虛擬數(shù)字人的概念,把演員的形象數(shù)字化,在電影里面真實的反映出來。其實我們現(xiàn)在看到的很多電影角色都是虛擬的數(shù)字人,我們通過一個短片看一下,電影《終結(jié)者》施瓦辛格和年輕時候的形象在對打,實際上這個形象是根據(jù)施瓦辛格掃描出來并做了一個修改變成年輕的形態(tài),這是網(wǎng)格結(jié)構(gòu)、切圖(PPT),可以看出是一個虛擬的數(shù)字人,不是真實的人。《速度與8》,Paul在拍電影的時候這個人已經(jīng)不在人世了,為了讓電影繼續(xù)拍下去,電影組把這個人的形象復(fù)員了。好奇的人肯定會問,這個人都不在了,怎么復(fù)員他的形象?Paul非常幸運(yùn),他有一個弟弟跟他長的很像,劇組根據(jù)他弟弟的形象做了3D掃描,在原先照片的技術(shù)上做了修改,盡量看起來跟真人很像,最后才有了《速度與8》Paul的戲。電影里面兩分鐘的戲最后要修的話有可能要經(jīng)過幾個月的時間,是沒有什么交互性。

左邊的圖是Real的角色,右邊的是電影渲染出來的,肉眼分辨不出來真假,但是沒有很多交互性。Siren的技術(shù)是在中間找到一個平衡點,盡量的把畫面質(zhì)量和表情接近于電影的水平,但是可以實時交互。

我們在做這個項目的時候,一共誕生了2個數(shù)字人,第一個叫Mike, fxguide(諧音)網(wǎng)站是他開的。Siren在Mike的基礎(chǔ)上繼續(xù)提升了一些,讓渲染的質(zhì)量比以前更好。

這次的內(nèi)容主要包括兩部分,一是Data是怎么生成的,另一方面是Rendering,最后是簡單的總結(jié)。實話說藥材好藥才好,這句話用在數(shù)字虛擬人方面再好不過了,模型的精度、切度、還原度沒有做好,做出來的很多東西,即使渲染的技術(shù)再好,渲染出來也沒有辦法還原真實的角色。

下面介紹一下數(shù)據(jù)是如何生成的。首先是在Rendering里面用照相建模的技術(shù),很多相機(jī)開著,這只是一個示意圖,真正的是有很多攝像機(jī)。把人拍下來,通過photoscan工具生成3D模型,生出來是一個簡單的數(shù)據(jù),里面還有一些瑕疵要進(jìn)行修改,有些地方要進(jìn)行平滑。比如說耳朵的地方,因為有些地方是遮擋的,照相機(jī)在有些地方有缺陷,這里的成像是不對的,所以需要修改好。我們是先做了Mike,再做了Siren,他們之間有非常緊密的關(guān)系,Mike跟Siren的Topology一模一樣,三角形是一一對應(yīng)的,Siren可以無縫的morph到make身上,Mike也可以無縫的morph身上,它們的UV也是一致的。

這些貼圖都是Diffusemap,通過掃描軟件生成出來的,現(xiàn)在是用8K的,這個分辨率非常高。在游戲里面基本上是1024就夠了,但是為了追求非常高的細(xì)節(jié),特寫的時候看皮膚或眼睛,為了讓有無限高的細(xì)節(jié)用了8K的細(xì)節(jié)。

我們在UE4的基礎(chǔ)上做了哪些渲染方面的提升,主要是包括兩個部分,How to Prove和How to lmprove,How to Prove是做完一個東西之后必須要經(jīng)過嚴(yán)格,甚至說非常的驗證,證明做的東西是達(dá)到了照相機(jī)的水平。Improve,重點是在原片渲染的技術(shù)上做了哪些提升。因為How to Prove 這個階段是在我們每次做完一個之后都要做非常嚴(yán)格。我之前一直做游戲渲染,游戲渲染的驗證很簡單,每次看起來跟渲染的人比較像,但是在做這個的過程中學(xué)了很多東西。

我們采用了電影行業(yè)的LookDev技術(shù),有大量的Reference技術(shù),在還原真實形象的過程中有很多環(huán)節(jié),比方說相機(jī)、燈光,還有用lightstage做驗證,因為一個地方的出錯會導(dǎo)致后面的結(jié)果越來越糟,所以要單獨(dú)的驗證每一個過程都是正確的。

首先我們采集了很多的照片,這是我們在lightstage,可以認(rèn)為是一個球體,里面會有很多盞燈,每次只亮一盞燈,其他燈都熄滅,然后依次循環(huán)下來從各個角度來拍這個人,最后要保證的結(jié)果是所有角度都是正確的。

渲染的圖片和lightstage是怎么比較的?用了rv軟件比較,我們可以通過Tile的方式左右可以比較。wrap是更高級的方式,有一個精度拖條可以拖,最上面是Rendering,最左邊的時候就是渲染的照片,可以達(dá)到象素的比較,每次做完一個特寫都要經(jīng)過非常嚴(yán)格的驗證,用非常嚴(yán)格的方式來證明做出來的東西的確是照片級。

這幅圖片不知道大家有沒有看出什么端倪,這中間有一條縫,左邊是照片,右邊是Rendering,要達(dá)到的效果是拖動滾動條的時候很難發(fā)現(xiàn)是兩張圖片,達(dá)到以假亂真,這樣才能拿出去說我們做的是最棒的。首先是還原了UE4相機(jī),真實的相機(jī)很復(fù)雜,游戲里面的相機(jī)很簡單,但是UE相機(jī)有很多選項,可以真實還原真實的相機(jī)。這張圖在關(guān)卡對比,足以說明UE相機(jī)還原真實相機(jī)。

Area ligth的光是這樣照過來的,是一個簡單的Arealight,UE當(dāng)時用的時候沒有現(xiàn)在4.20開發(fā)的Area ligth,加了點陣的方式,在離線渲染機(jī)渲染了一個灰球,比較了一下是非常接近的,我們認(rèn)為可以這個方法可以還原Area Light。

lightstage有300多盞燈,每次只開一盞燈,這幾幅圖足以說明。再看一下這段視頻,lightstage掃描出來的,300盞燈,每次只開一盞燈,依次循環(huán)拍出來的系列。(PPT)在游戲關(guān)卡,光源的方向和朝向都跟真實的lighting擺光一模一樣,每一個系列從任何一個角度去比較,光照要跟真實的照片非常接近,才可以說這個東西是經(jīng)過驗證的。

室外的我們拍了環(huán)境貼圖,還有一些lighting,我們會建相應(yīng)的關(guān)卡來模擬,也會在關(guān)卡里面驗證,outdoor lighting跟渲染出來的是非常接近的。

我們看一下用哪些手段對它進(jìn)行提升,從先的paragon-twinblast到Siren,首先介紹的是dual lobes,雙重曝光,皮膚表是很特殊的材質(zhì),它有很多層,表面是油性介質(zhì),反光非常強(qiáng)烈,下面還有各種油層,一層是無法表現(xiàn)皮膚的。這兩張照片是的對比(PPT),看起來比以前豐富了很多,我們也是想用這樣的方法。PPT里面提到很簡單,用了兩層,但是兩個lobes是稱了一個系數(shù),一個是按照85%做,一個是按照15%做,混合一下就可以了。我們也是通過這種方法,很快就可以得到驗證。我們拿測試數(shù)據(jù)設(shè)一下,發(fā)現(xiàn)變化是微乎其微的。后來我們找了原因,Nvidia facework也有這樣的功能,大家可以比較一下,這兩個還是比較明顯的,把這個模型倒到我們的引擎里面,后來我們發(fā)現(xiàn)是數(shù)據(jù)的問題,我們的Reference亮了,這樣及時分析兩層的specular算法差不多,lobes之后也是差不多的。后面對Reference做了一些調(diào)整。

下面看一下Siren,油光發(fā)亮的一層,除了油光發(fā)亮的之外,兩個混合,兩者之間有非常明顯的對比。這個技術(shù)大家可能認(rèn)為是很輕的技術(shù),其實不然,在2007年TGDC的時候,Nvidia他們當(dāng)時有一個Reference的時候,當(dāng)時的技術(shù)架構(gòu)做了這樣的技術(shù)嘗試,當(dāng)時用了4個lobes,我們當(dāng)時也設(shè)了四層,運(yùn)算指令沒有比以前多一條,因為四層的關(guān)系,調(diào)起來實在太復(fù)雜,最后我們還是放棄了就用兩層,現(xiàn)在電影里面也是用了兩層,四層是有點太過了,最后我們就是用了兩層。

關(guān)于specular模型,之前用GGX模型,大家一直都覺得挺不錯的。包括皮克斯他們也是用GGX模型,但是用了一段時間發(fā)現(xiàn),對于人物這樣的材質(zhì),GGX的塑料感太強(qiáng),不足以反映人類皮膚的曝光。Peter在皮克斯工作了十幾年,他做了很多皮克斯的電影,一直專注于人物渲染方面,他可以很明確的說皮克斯就是用beckmann,我們就切到beckmann,發(fā)現(xiàn)比以前的皮膚質(zhì)感好很多。這是來自電影行業(yè)的經(jīng)驗,我們可以借鑒電影行業(yè)的技術(shù)用到游戲開發(fā),對我們有很多啟發(fā)性的應(yīng)用。關(guān)鍵是這個想法,可以很明確的告訴你用了就是好。

reflectance profiles模型,參考了迪士尼的模型,它在兩個模型之間其實是比較類似的,只是用迪斯尼這個模型,迪士尼電影產(chǎn)品都在用,美術(shù)調(diào)起來非常的直觀,所以我們就用了這個模型。

Backlit Transmit,皮膚是半透的,比較薄的地方有散射的效果,原先沒有這樣的效果,這對皮膚的質(zhì)感提升很大,我們就是通過這個來得到提升。

Thickness算法,它的計算很簡單,(PPT),從這個地方沿著法線反方向,實際上沒有考慮長出來的這一段厚度,我們對它進(jìn)行了修整,比以前好多了。做完之后用了兩個Posisson sample,再加上SSBlur就很平滑了,最后發(fā)布的時候用了16次的,其實用8次已經(jīng)可以了,Siren要追求好的效果,所以用了16次,大家可以自己選擇。

我們還加了Phase Function,當(dāng)光從后面照過來的時候,從不同的角度看強(qiáng)度是不一樣的,phase function里面有很多有意思的demo,模擬一個光線散射出來,誰的角度越大會越暗,在中間角度的時候是越亮。

皮膚是半通透的材質(zhì),光散射過來會產(chǎn)生折射,加入后會多一些細(xì)節(jié),(PPT)可以比較看一下。本來是用這么復(fù)雜的prolfile,用6個EXP,實時算很復(fù)雜,最后簡化成一個。簡化成一個會導(dǎo)致最后只有一個顏色,只有亮度的變化。我們采用了不同的方式,簡化之后只有一個顏色和EXP,只用一個EXP,紅色會稍微暗一點,不會出現(xiàn)從紅到黃的變化。

我們是把原先的backlit的profile混合到profile的尾部,再根據(jù)Reference去查,可以看到變化豐富多了,(PPT)從稍微有點黃到紅的變化,(PPT)界面,用到哪些參數(shù),跟Backlit Transmit有關(guān)的,這是跟折射有關(guān)的。

前后的對比,照片、渲染圖片的對比,都是非常接近的。把它用在Siren是什么效果,這是有backlit Transmit,質(zhì)感增強(qiáng)了很多。光照射出來很明顯,非常接近真實的結(jié)果。

臉上的皮膚,我們是用了SSS,但是牙齒大部分游戲里面還沒有用SSS,牙齒其實是透明度比皮膚還要高,用SSS來做更合理,如果牙齒和皮膚都用SSS,中間就會產(chǎn)生污染,因為牙齒再做SSS的時候,會把嘴唇也影響到,就會有非常明確的陰影,為了去掉陰影,我們想了一個辦法。牙齒原先Default lit一點都不像牙齒,用了SSS之后覺得這就是牙齒,為了去掉陰影,我們想了很簡單的辦法,只用一個顏色。如果旁邊的prolfile不一樣,就用boundary color修復(fù)上去,這樣相當(dāng)于是把原先的替換成顏色的漸變。

眼睛,原先也是沒有用SSS,也是用很近似的公式做了,并沒有真正用SSS。這次打算用SSS,效果跟原先的不一樣,這里的prolfile也是用兩層的。用SSS,跟牙齒存在同樣的問題,它跟皮膚的Profile不一樣,也會引起陰影,所以也是需要用同樣的方式,對比還是挺明顯的(PPT)。這個眼睛原先看起來沒有質(zhì)感,之所以之前沒有做,是因為原先的激光和通道不夠,這次通過特殊的方式,預(yù)留出一些通道,做出來之后凹凸感比以前強(qiáng)了很多,體現(xiàn)出質(zhì)感,因為眼睛是心靈的窗戶,看著它眼睛的質(zhì)感很好,就會覺得感情流露的很好。

臉上的皺紋,我們在捕捉好幾個典型的哭、笑、悲哀等8種技術(shù)表情,每一個表情是有一定的區(qū)域,最后通過一定的方式形成3張貼圖。材質(zhì)里面會生成一個Mask,Mask有一堆的參數(shù),做表情的時候會根據(jù)面部動產(chǎn)生rig的數(shù)據(jù),控制額頭的皺紋,或者是臉頰的皺紋,最后生成一個最終效果。這個技術(shù)在Siggraph有一篇文章講到,講的是角色渲染,其實跟這個技術(shù)是差不多的,它的系數(shù)是hack(諧音),表情是填進(jìn)去的,我們這里是通過更高級的方式,它是通過Reference算出來的。

下面看一下臉上的毛,俗話說嘴上沒毛辦事不牢,用到虛擬數(shù)字人上應(yīng)該改一改,臉上沒毛平淡無聊,臉看起來光禿禿的,沒有毛茸茸的質(zhì)感,我們加了毛,跟之前的對比好了很多。關(guān)于這個毛,國內(nèi)做電影的團(tuán)隊,也是非常有名的公司,他們也來跟我們交流,這個毛是怎么做的?怎么能實時的把毛做的這么好?其實這個毛是通過非常暴力的方式做出來的,這是它的模型,麻雀雖小五臟具全,上面的毛,這個三角形算起來比臉上的三角形還要多,臉一共有4萬多,這個就要超過10萬多。表情動起來毛也會隨著臉動會穿幫。

這次主要是介紹了Siren的Data pipeline,以及我們在技術(shù)上做了哪些成功,Siren靜態(tài)照片的渲染,動態(tài)和動作的捕捉,這幾點結(jié)合起來是現(xiàn)在實時虛擬數(shù)字人能夠做到的最好水準(zhǔn)。

未來已經(jīng)來了,最近大家應(yīng)該聽說過DETROIT游戲,這個游戲的團(tuán)隊跟我們交流過,里面的角色通過photo掃描出來的,但是渲染的游戲沒有我們做的多,精度比Siren低一個級別,但是比一般的游戲高一個級別,3年掃了150個人,這套技術(shù)極有可能在游戲里面是未來的趨勢。我們現(xiàn)在做的這些渲染技術(shù),已經(jīng)放到UE4.20,大家可以免費(fèi)去用,大家如果下載了4.20在第一頁就會有。

非常感謝Acknowledgements渲染組對我們的幫助,大家有什么問題可以提問,如果大家想跟我們做同樣有意義的事情,有興趣的可以跟我聯(lián)系,我們這邊也有不錯的機(jī)會。謝謝大家!

提問:剛剛看完也覺得非常震撼,不知道有沒有考慮這之后的應(yīng)用場景是怎么樣?比如說更偏虛擬偶像類,把表情、說的話都定義好,還是偏智能交互,加一些NLP的技術(shù)有一些對話,場景上是怎么考慮的?

解衛(wèi)博:虛擬偶像是未來很大的方向,有可能會有offline,也有可能是可以交互的,兩個形式都會有。還有一個形式,現(xiàn)在next那邊有掃描建模實驗室,我們后面會嘗試,比如說對我們組的員工進(jìn)行真實的掃描,把它掃描到游戲里面,然后把Siren渲染,還有數(shù)據(jù)開發(fā)上的生成,都用進(jìn)去,我們希望后面能達(dá)到DETROIT變?nèi)说馁|(zhì)量,他們在3D游戲人的渲染樹立了標(biāo)桿,我們首先想把這個東西落實跟他們看齊,后面再看能不能比它們做的更好一些。

提問:首先感謝你的分享,我覺得技術(shù)非??帷N乙惭芯窟^這一塊的內(nèi)容,我是做游戲的,還是考慮到游戲這邊的需求,不知道您這個demo,內(nèi)存消耗、配置、復(fù)雜度、貼圖方面的數(shù)據(jù)能分享一下嗎?在什么機(jī)器上大概可以達(dá)到什么樣的幀,DETROIT游戲我玩過,您目前的Demo的數(shù)據(jù)能不能分享一下?比如說內(nèi)存、效能方面的、復(fù)雜度方面。

解衛(wèi)博:這些問題我們一開始都是考慮的,做這些問題一開始就打算集成到UE里面,發(fā)布給游戲開發(fā)者用的。如果現(xiàn)在用了4.20的版本,這些渲染的特性都可以用,里面有一個Mike的數(shù)據(jù)包,下載之后,很多材質(zhì)都有。Siren跟Mike一共有4萬個面部,對游戲來說的確是有點高,但是DETROIT沒有這么高,具體多少他們沒有透露,我們目測估計一半都不到。對于一個模型來說,一個臉部估計是3000多,那是好幾年前的,現(xiàn)在硬件比以前快很多,現(xiàn)在做10000的臉部應(yīng)該沒有什么問題,一般的顯卡都可以跑起來,不用太擔(dān)心性能消耗的問題。我們的Siren最大的性能消耗不是在臉部、皮膚,而是在頭發(fā),頭發(fā)是非常耗功耗,頭發(fā)非常真實,類似于線,面部有4000,但是頭發(fā)有30多萬。在游戲里面不能用這么暴力的方式來做,游戲考慮插片的方式,要考慮到性價比最高的方法。臉部、眼睛、牙齒的渲染對性能開銷是不高的,甚至在手機(jī)上都可以用。

提問:剛才聽了你的講座,大部分是關(guān)于臉部建模的問題,在服裝方面可以做到對人進(jìn)行掃描之后進(jìn)行虛擬試衣的功能碼?

解衛(wèi)博:服裝上面我們是自己建模,掃模特的時候基本上是穿著短褲掃的。

提問:服裝是后期加進(jìn)去的?

解衛(wèi)博:對,服裝是后期加工制作的,對于Siren來說主要是掃了臉,身體是在外面花2萬塊錢就可以掃,我們內(nèi)部正在做的項目,先掃那個人,那個人去美國出差了,我們找了一個形體跟他相似的人,只穿一條短褲就可以把身材模型掃出來。

提問:其實是可以掃一個人的身體和另一個人的頭拼接起來?

解衛(wèi)博:對。

提問:脖子部分怎么處理呢?

解衛(wèi)博:我們有專門的技術(shù)可以處理的。

提問:你講的主要是渲染的方面,我們實際看到Siren Demo是動起來的,它怎么綁定的?用到的綁定有多復(fù)雜?動畫是如何采集的,面部表情這一塊是怎么達(dá)到特別自然的狀態(tài)。

解衛(wèi)博:我們在騰訊GDOC的時候,除了Siren的渲染,還講了動畫,這次演講是必須要有非常更明確的主題,因為我本身是做渲染方面比較多,所以這次只講了渲染,沒有講綁定和動畫方面的內(nèi)容。有需求的話可以再聊一聊。

銳亞教育

銳亞教育,網(wǎng)絡(luò)游戲,網(wǎng)游,新游,游戲,新聞,國內(nèi),全球,評論,資訊,專題,圖片,焦點,排行,免費(fèi),私服,魔獸,傳奇,西游,泡泡堂,冒險島,征途,勁舞團(tuán),勁樂團(tuán),公會,外掛,17173,玩家,測試,內(nèi)測,封測,公測,試玩,調(diào)查,flash