作為建構元宇宙內容的基石,數位人是最早可落地且可持續發展的元宇宙細分成熟場景,目前,虛擬偶像、電商帶貨、電視主持、虛擬主播等商業應用已被大眾認可。在元宇宙世界中,最核心的內容之一非數字人莫屬,因為數字人不光是真實世界人類在元宇宙中的“化身”,也是我們在元宇宙中進行各種交互的重要載具之一。
眾所周知,創建和渲染逼真的數位人類角色是電腦圖形學中最困難的問題之一。近日,在由51CTO主辦的MetaCon元宇宙技術大會《遊戲與AI互動》分會場中,Unity大中華區平台技術總監楊棟透過一系列的Demo演示,在《Unity數位人技術—開啟元宇宙之旅》的主題分享中詳細介紹了Unity高清渲染管線技術。
Unity目前在世界範圍內是支援最多的運算平台,現在支援將近30個運算平台,包括PC、Mac、Linux、iOS、安卓、Switch、PlayStation、Xbox以及所有的AR/VR、MMAT這些設備。如果是製作立體互動式內容,Unity目前來講確實是最好的一個選擇。我們知道高畫質渲染,在一些配備獨立顯示卡的機器上去渲染高畫質的內容,現在所說的寫實類的數位人的技術是要依托高畫質渲染技術的。
目前Unity中國團隊擁有300多位全職員工,全世界將近7000人,70%以上是工程師。總部在上海,在北京跟廣州都有辦公室,也有相應的員工在那裡辦公。
二、Unity引擎的強大之處在哪些方面?
目前Unity雖然不是一個開元的引擎,但模組是高可客製化的。
圖中是Unity目前支援的平台,可在這些圖示上找到最常見的一些平台。這些可能是這些年最火紅的一些遊戲,這些圖標有些比較熟悉,像王者榮耀、CALL DUTY、英雄聯盟、原神、糖豆人、閃耀暖暖…。實際上在國內、國外全球的安卓及iOS榜單上,前1000位最賺錢的遊戲,70%以上都是由Unity創作的。超過一半的switch遊戲都是由Unity製作的。大家可能無法相信一款高畫質看起來非常複雜的遊戲,而且是在Xbox上首發的爆款遊戲竟然是一個人開發的,充分說明Unity引擎的靈活性、工具鏈的強大之處。
Unity正在朝向效能高效率的方向發展,分別說明三個主要的dots系統的元件,C#Job System、ECS、Burst Compiler。 C#Job System其實是可以讓開發的遊戲或應用去充分利用綜合CPU的並發運算的算力,因為現在物件導向的編成模式是製作的內容,是運行在主執行緒上面。第二個是Entity Component System(ECS),透過Entity Component System可以把資料跟系統,也就是遊戲邏輯進行分離,更容易維護,對記憶體上的使用也更友善。 Burst Compiler可以針對目標平台去產生運作較高的機器碼。
###另外一方面,高畫質也是Unity非常好的特徵。如果光說要去使用很貴的PC或是Xbox、Play station很貴的機器才能渲染精美的畫面的話,其實遊戲的通用性就太差了。 Unity透過XRP,就是所謂的可變量渲染管線,為大家做了兩套開箱即用的渲染管線,一套是通用渲染管線URP,第二套是HDRP(高清渲染管線) 。顧名思義,URP所謂的通用渲染管線就是所有的平台都是支援的,不管是開發VR遊戲、AR遊戲還是像行動裝置的遊戲,都是可以用URP來進行渲染方面的工作。 HDRP是指PC mac Linux、Xbox1跟basestation4以上的這些平台,它也支援即時光線追蹤。
三、高畫質渲染管線如何實現數位人的高畫質渲染?
《異教徒》數字人其實並不是Unity製作的第一個數字人,但《異教徒》這個數字人有它的獨特之處,因為這個數字人是非常逼真的,而且是形成了一套完整的工作流程。要實現像《異教徒》的高畫質渲染,高清渲染管線是不可或缺的。
《異教徒》這個數位人其實是有原型的,他是英國在倫敦的一個戲劇演員,叫Jack,透過掃描他的數據,這是他全身的數據,重點需要掃描他的頭部數據,然後做成了整個數位人,表情是非常逼真的,使用到的是一個4D的Volumetric Video的技術來製作表情動畫,其實用這種技術雖然可以製作非常逼真的表情,但是它也有一個缺陷,就是並不能進行實時的驅動,它可以做影視類的角色表情動畫是沒有問題的,卻無法做到實時地驅動。
在一些成功的案例中,可以看到眼睛的渲染和皮膚渲染
#。我們分別來看一下。
為了提升肌膚的質量,加入了以下幾項技術,Detail Map是細部貼圖。 Secondary Specular Lobe是第二層的高光,Cavity Specular Occlusion是指凹陷處,可以遮蔽掉高光,Screen Space Subsurface Scattering指螢幕空間的次表面散射。
第一個細部貼圖主要用於模擬皮膚表面的細部等紋理,這張紋理並不大,是1K的紋理。
第二層高光Secondary Specular Lobe,它是用來模擬皮膚表面的油脂層,因為皮膚要出油,甚至皮膚看起來乾巴巴的,所以需要用這個方式來增加一個第二層的高光。
第三個是凹陷高光,是為了遮蔽凹陷中央的高光。在加了第二層高光以後,皮膚凹陷的地方也出現高光,顯然是不真實的,需要把它的高光遮蔽掉,凹陷處不出現高光。
第四個是螢幕空間的次表面散射,用於製作皮膚本身的效果。我們知道皮膚本身是有一個所謂的3S效果,這就是所謂的次表面散射效果。皮膚顯然是需要用到次表面散射的,但是傳統的當我們用MAYA或3Dmax這樣的離線渲染的軟體去模擬這個皮膚的時候,如果是渲染次表面散射的效果是非常耗時的。在Unity,其實有兩種渲染次表面散射效果的技術。第一個是Screen Space Subsurface Scattering的技術,它渲染得比較快,第二種是透過光飛的方式,顯然光飛的方式更真實。 ############### #######這個角色是《發條樂師》短片裡面的小女孩的角色,小女孩的這個角色也是用到了螢幕空間的次表面散射的效果。右邊的樹葉,其實也是用到了次表面散射的效果。
接下來說說針對眼睛的渲染。實際上眼睛是一個非常複雜的物體,它由很多部分組成,在即時渲染裡面去模擬真實的眼球,模擬4個部分:角膜、瞳孔、虹膜、鞏膜,就已經能夠獲得非常真實的效果。
如圖所示,我們的眼球本身就是一個非常複雜的物體,正面看跟側面看實際上是有差別的,特別是虹膜視角折射現象,如果是正常地去渲染,這張圖是非常有名的GDC上的數字人的角色。
數字人類眼球實際上是按照真實的眼球的形狀來建模的,它會有一些特殊的著色器來表現這個眼球的各個參數。包括它的反射,鞏膜跟虹膜上的法線貼圖,分別應用不同的法線的數值能夠呈現的效果,甚至也做了眼瞼的遮擋,透過一個單獨的控制器來進行控制,就可以控制眼瞼的效果。
總結一下,透過真實人物的掃描數據,經過blend shape、Wrinkle Map、Colour Map、Facial Rigging的方式進行表情製作,並以控制器驅動這個表情。當然我們也知道有很多其它的方式可以來驅動這個表情,其實當我們去渲染皮膚、眼睛或者是毛髮的時候,相對來說是比較容易的,但是表情驅動實際上是一個非常大的難點。
常常會聽到開發者說使用的Unity為什麼做不出來Unity能夠做的效果?因為Unity呈現的demo的效果都是由一群人透過很大的精力打造出來的,而且他們所用的技術在他們製作這個版本裡面其實還沒有,做完這個demo,有了這些技術之後,會慢慢合到下個版本裡,最終形成一個所有人都能使用的一個功能版本。
四、數位人製作過程是怎麼樣的?
在做完《異教徒》以後,Unity中國團隊其實也做了一個自己的數位人,應用《異教徒》的技術,坐姿4D掃描等技術。
這是實際的項目,過程其實跟《異教徒》的過程是一模一樣的。包括做資料的清理,做對應的blend shape,做Wrinkle Map,做Rig,然後驅動表情,在ASSETStore裡的控制器,用Animation Clip、用BlendShape的方式來呈現表情動畫。當然了臉部捕捉實際上有更多的方式,比如說用Market來跟踪,用ARKit來跟踪,用圖像數據驅動。
在做實際開發的時候,用相機捕捉表情來做人頭的表情的測試,還有另一種方式,用影像資料驅動。有一個非常巨大的差別就是她有一頭飄逸的長髮,這個飄逸的長髮是Unity中國團隊自己研發的一個解決方案,它是適合於URP、HDRP,既適用於通用的渲染管線,也適用於高畫質的渲染管線來製作頭髮。頭髮的渲染跟傳統的插片式的方式是很不一樣的,是可以非常柔順的,甚至感覺像海飛絲廣告的效果。表情其實是透過AR cade來即時驅動的,當然用AR cade來驅動表情。
Unity的數位人叫艾瑪,這個數位人的表情是完全用Ziva Dynamics的技術來動態驅動的,核心技術實際上是去模擬模型下面或者是生物皮膚下面的這些肌肉群,既可以去模擬恐龍真實的身體肌肉的移動,也可以把這套技術應用到比如說非常逼真的數位人臉部表情動作的模擬。傳統來講一個模型就是一個空殼,它外面就是一層殼,但是在Ziva Dynamics的技術裡,後面實際上是有真實的基於解剖學的肌肉在那裡,當真實地移動這些肌肉的時候,外面的這些皮膚就可以比傳統的用blend shape或是用骨骼綁定的方式獲得另一個或更高層次的真實感。
今年3月份,Unity在GDC上發布的《Enemies》的最新數字人的預告片,這個數字人的表情是非常非常真實的。值得一提的是她的頭髮是一套Unity即將公開的毛皮渲染技術,應用於HDRP高清渲染管線的一套毛髮。
歡迎查看MetaCon元宇宙技術大會官網,了解更多元宇宙和數位人相關內容資訊。網址:https://metacon.51cto.com/
# ############ ######
以上是Unity大中華區平台技術總監楊棟:開啟元宇宙的數位人之旅的詳細內容。更多資訊請關注PHP中文網其他相關文章!