文/我亂寫的原文地址:https://zhuanlan.zhihu.com/p/30990377

想了想好像在國產游戲開發(fā)中,真正稱得上電影級的游戲角色還真是不多,就算是射擊賽車之類的游戲,為了迎合大眾的審美口味,角色造型也是以偏日韓風格的唯美為主。所以國內游戲公司對制作寫實類型游戲角色的經驗大多也都比較淺(國外大作角色外包經驗不算完整經驗,模型資產只是整個角色制作流程中很小的一部分)。主機游戲中高精度的寫實角色在制作上和傳統(tǒng)網(wǎng)游角色差別是非常大的,流程上更接近影視。寫這個也是為了分享一點經驗,起個拋磚引玉的作用。本文由本人寫的我們游戲中的角色制作規(guī)范修改而來,業(yè)內人士也可以把它當制作文檔來看。

093804w00zzsi0snrq3rrc.jpg 國內目前流行的是這種唯美的角色,嚴格來講不算太寫實。
093804v3rozb5rb37odpb7.jpg 即便是寫實為主的射擊游戲的臉型也更像玩偶而非真人
高精度的游戲角色一般在單機和主機游戲上應用比較多。相對于網(wǎng)游,因為游戲內出現(xiàn)的內容可控,通常情況下不用考慮用戶配置和多人在線的限制,所以在玩家控制的角色上能投入大量資源把角色做得很精細很生動,讓玩家游戲過程中能產生良好的帶入感,增加游戲感染力。在模型面數(shù)的預算上比多人游戲要高很多。PS3時代一個主角級別的角色面數(shù)通常在5萬面左右。ps4時代則升級到了15~20萬面。多邊形數(shù)量的提高帶來了角色細節(jié)的提升,從PS3到PS4,玩家能明顯感受到角色細節(jié)的變化。

093805aknleenknm9kesde.jpg 古墓麗影9
093806xh39gyqqxy38g8ja.jpg 古墓麗影10
模型

所以寫實類角色非常吃多邊形數(shù)量,要做出足夠生動的角色,在不超過面數(shù)限制的前提下,能用模型表現(xiàn)的細節(jié)就不要用貼圖。同時為了讓角色的動畫生動自然,在模型能夠運動的關節(jié)部位都需要留出足夠多的布線。布線應該盡量以4邊面為主,在重點區(qū)域需要重點照顧,比如眼睛,嘴等部位。而且能夠運動的部分的結構都需要用模型做出來。比如毛發(fā),眼球,淚腺,眉毛,睫毛,口腔,牙齒,舌頭等。圖中是我們游戲中的角色,可以看到角色面部的多邊形數(shù)量是非常豐富的。

093806agogd25akfr2dphn.jpg
眼球和口腔的制作也要盡量按照真實眼球來做,至于為什么這么做下文會有解釋。

093807jm855plexuebenju.jpg 隱藏掉頭部后眼睛和口腔內的結構,這個畫面在很多游戲出bug的時候會經常看見
093807aczsrq5qhezcrwsg.jpg 起伏較大的布褶也要用模型表現(xiàn)
貼圖

同樣高精度角色對貼圖分辨率要求也不低。一個角色通常由好幾張貼圖組成,貼圖分辨率一般在4K以上。根據(jù)換裝和shader的要求,貼圖會分為由皮膚,衣物,毛發(fā),眼睛,其他組件等組成,根據(jù)實際需求增減。

093808csknav9k6vjtjmws.jpg 一個角色的貼圖組成
模型和貼圖質量的好壞是游戲畫面的基礎,也是美術成本消耗最大的部分。隨著硬件機能的提升,一個高精度角色的制作周期也大大拉長,類似神秘海域那種精度的角色制作周期會長達數(shù)月。不少大廠也開始嘗試新技術如掃描建模來降低制作成本。但是對于現(xiàn)實中不存在的角色,還是需要美術自己動手制作,這也是一個非??简灻佬g基本功的環(huán)節(jié)。

皮膚材質

當然光有模型和貼圖是遠遠不夠的,這篇文章也不是模型貼圖的教程。要做出令人信服的真實角色效果,材質表現(xiàn)更加重要。在本時代主機上,因為PBR(Physicallly-BasedRendering基于物理渲染)技術的大范圍使用,材質效果的真實性有了很大程度的提高。而如何表現(xiàn)真實自然的皮膚材質,更是提高的重點。

皮膚材質類型屬于次表面散射材質(Subsurface Scattering),顧名思義,就是光線會在物體內部產生散射,呈現(xiàn)出一種柔軟剔透的效果。簡稱3S材質。

093808ho6uh0qundh9ghgh.jpg 生活中常見的玉、皮膚、蠟燭、水果、樹葉等都具有次表面散射特性
本時代成熟的3D引擎一般都自帶次表面散射的shader,例如在我們使用的虛幻引擎中,就可以將材質類型選為subsurface profile來配置次表面散射參數(shù)。通過修改指定的subsurface profile來調整出想要的皮膚透光效果,通過一張遮罩貼圖來控制不同部位散射的權重。

093809caebbgf4ztwbfnng.jpg
當然,真實的皮膚并不只具有次表面散射這一特性。除此以外,人類的皮膚上還有無數(shù)細小的毛孔,分泌的油脂,汗水等會影響皮膚表面的紋理,高光和光澤度。要想角色效果真實,這些細節(jié)也必須體現(xiàn)出來。我們的做法是在基礎紋理上疊加一張無縫的細節(jié)紋理來模擬皮膚表面細小的毛孔,皮膚的光澤度和高光分別由不同的參數(shù)控制強度,由遮罩貼圖控制其范圍和權重。

093809bwa5gbs4w44ds7ws.jpg
貼圖使用如下,皮膚部分基礎紋理一共三張,分別是顏色法線,和細節(jié)貼圖。其中3S貼圖和粗糙度,高光貼圖整合在一起,分別放置在RGB通道上。

093810nhcpeq117e1i1k6y.jpg
材質節(jié)點如下

093810hmo77ck106701kci.jpg
眼睛

接下來是眼睛。眼睛角色中結構最特殊的部分,也是最出彩的部分。一個水靈靈的眼睛能讓角色顯得神采飛揚。所以表現(xiàn)眼睛的重點是高光和反射。傳統(tǒng)的做法是將高光繪制在眼睛的貼圖上,這樣的缺點也很明顯,眼睛的高光是死的,不會隨環(huán)境的改變而改變。復雜一點的可能會單獨處理高光的位置,讓高光能有一定程度的變化。但是這樣也有缺陷,就是不能真實反應角色和環(huán)境之間的關系。因為眼睛質感其實像一個玻璃球,能反射出周圍景象和光源位置,所以在制作眼睛的時候,需要考慮到這個特點,對材質進行特別處理。

093812cdvxax6zfdogv67a.jpg 傳統(tǒng)網(wǎng)游的做法,將眼睛的高光繪制在貼圖上,實際上位置是不正確的
093813tk5wt1kopotsspc8.jpg 單獨處理過的眼睛高光,能一定程度模擬眼球的反射效果
為了得到真實的效果,眼球的建模也必須按照真實的結構來制作。人的眼球并不是一個標準的球形,眼球的前方有一個突起,里面填充著角膜和前角房等物質,瞳孔則是凹陷進去的,正是這個結構讓眼球呈現(xiàn)出一種特別的高光。

093813aoptdca8kn8zds0h.jpg
眼球的貼圖和模型比較簡單,但是材質比較復雜,虛幻引擎中提供了單獨的眼球shader,但是除了常規(guī)的顏色粗糙度高光反射屬性外,需要添加一個bumpoffset節(jié)點用來模擬瞳孔的凹陷效果,這樣才能得到正確的眼睛高光。另外,還需要一張切線空間貼圖來控制光線通過角膜產生的折射。因為引擎中光照的精度并不能總是滿足照亮角色眼睛的需求,為了讓眼睛看起來有水靈靈的質感,在眼睛的自發(fā)光通道上也加入了環(huán)境貼圖模擬眼球的反射。材質如下

093814a66by1724xcysr4w.jpg
眼球的效果,眼睛的高光和瞳孔有一定距離的,在光源不足的暗部可以提高環(huán)境反射讓眼睛看著透亮。

093815zm2ul1ulcuuzlcu7.jpg
另外,在眼睛和眼皮相交的位置,為了呈現(xiàn)出眼睛的濕潤感,通常會單獨制作一個線條狀的模型放置在相交處模擬眼睛上的水分。同時為了讓眼睛在人臉上的位置關系更加明確,還會用透明貼圖模擬眼睛周圍的淡淡的陰影。

093815sticz05tww0ii22x.jpg 注意下眼皮和眼球相交位置的細小反光,這個是用模型模擬的,眼睛周圍的陰影也是用透明貼圖模擬的
毛發(fā)

毛發(fā)一直是實時渲染中的難點,傳統(tǒng)的做法是透明貼圖面片模型。這樣做的問題也是一大堆,比如不夠真實,排序問題,運動困難,費資源等等?,F(xiàn)在有了實時毛發(fā),可以解決一些真實性和運動的問題,缺點就是更費資源,同時因為技術不夠成熟,在某些硬件上可能會有bug。為了方便優(yōu)化和照顧大眾配置,大部分游戲還是使用傳統(tǒng)做法,用貼圖加面片表現(xiàn)。通過改進shader,傳統(tǒng)做法也能取得不錯的效果。

毛發(fā)有以下幾個特點:1,頭發(fā)的高光并不是匯集在一個點上,而是沿表面散開。這種效果通常被稱為各向異性反射(效果見洗發(fā)水廣告)。2,光線會穿過毛發(fā),所以稀疏的發(fā)絲會比濃厚的發(fā)絲看起來顯得更亮。3:發(fā)根和發(fā)梢因為粗細程度不一,光源穿過的效果也會不同,并且導致每縷頭發(fā)上顏色上也會有區(qū)別。

虛幻引擎提供了單獨的毛發(fā)shader,毛發(fā)shader用散射Scatter,切線tangent代替標準材質中的金屬度和法線。另外還增加了背光backlit參數(shù),但實際上并沒有什么卵用。

基于shader的變化,貼圖繪制的要求也發(fā)生了改變。毛發(fā)的貼圖由五張貼圖組成,分別是diffuse貼圖,控制顏色,alpha貼圖,控制不透明區(qū)域,root貼圖,控制發(fā)梢到發(fā)根的變化,depth貼圖,控制頭發(fā)的層次感。貼圖效果如下

093816fjzjn00gy0jjfbhr.jpg
材質節(jié)點如下,看不清也不要緊,這些官方范例里都有

093816rkxo4x6oizozw6gv.jpg
值得一提的是為了表現(xiàn)出良好的發(fā)絲效果,alpha貼圖中的發(fā)絲要畫的比較粗,必須一根一根的都能看出來,而不能按常規(guī)做法一縷一縷的畫。另外這個shader對毛發(fā)面數(shù)要求比較高,必須要有足夠多的面數(shù)才能呈現(xiàn)出比較好的效果,我們角色毛發(fā)就使用了18000個三角面。

毛發(fā)效果

093816jzavwhwpwva9hkww.jpg 背光效果,可以看出發(fā)絲邊緣呈現(xiàn)出真實的透光感
093817ojj7jg3v7ttjzgai.jpg
最后是角色整體效果
093818pl65g662izi4yyeq.jpg
093818yri9xvx74xuu7icx.jpg
官方參考文檔:照片級角色
光照

僅僅完成角色模型貼圖和材質的制作是遠遠不夠的,必須要放到游戲的實際環(huán)境中運行才能看到最終效果 。因為光照環(huán)境的改變,所以角色在游戲中實機運行的效果和預覽效果經常有很大差別。

引擎中的光照一般分為靜態(tài)光照和動態(tài)光照。在虛幻及大多數(shù)引擎中,靜態(tài)光源只影響靜態(tài)物體,而角色屬于動態(tài)物體,要照亮角色,必須使用動態(tài)光照。但是在不開啟動態(tài)全局光的前提下(也不建議開啟),動態(tài)光源是不會產生間接光照的,所以角色的陰影效果會很難看。所以需要在場景中放置LightmassCharacterIndirectDetailVolume(作用類似于unity的Light Probes),讓靜態(tài)光照烘焙產生的間接光能影響角色。

093819a5ppgttc0gsp15kj.jpg 動態(tài)光照可以同時照亮角色和靜態(tài)物體,但是不會產生間接光照,所以陰影的效果非常難看
093819eclllcsjplxf9cps.jpg 靜態(tài)光照會產生間接光照但是不會照亮動態(tài)物體,所以角色只收到間接光照影響,沒有被光源照亮
093820biug0fwzhvf50vua.jpg 同時受間接光照和直接光照影響的角色,陰影效果自然了很多
所以在游戲場景中角色能到達的區(qū)域,必須保證角色同時都收到間接光照和動態(tài)光源的影響。另外天光也能有效的改善角色的光照效果,但是天光也有其自身的局限性。天光作為無方向的光照,會讓整個暗部的效果平淡,缺乏細節(jié)層次變化,另外在室內環(huán)境中,天光的效果并不是很理想。

有光照就會有陰影,陰影精度的效果對角色影響極大。在3D游戲中,影子都是非常消耗渲染資源的。所以實時光照的陰影精度都不會很高,這就會導致游戲中角色細節(jié)大量丟失。因此角色的陰影一般都需要單獨處理

093821b68w00awa644tm6w.jpg 默認陰影效果,可以看到臉上五官的體積感很差
093822fea5evncoi58vyz5.jpg 提高陰影精度后的效果,角色的五官毛發(fā)都變得立體起來。
之前說過,陰影的渲染非常消耗硬件資源,所以角色的光照和投影一般都是和場景采用不同的通道處理,某些時候會為角色單獨設置一套光照。

表情

動不起來的角色做得再精細也是無法讓玩家產生代入感的,表情則是角色動畫中比較難表現(xiàn)的部分。不過隨著技術的進步,低成本的表情捕捉也可以做到不錯的效果。一個kinneck攝像頭配合faceshift表情捕捉軟件,花費數(shù)千元就可以在普通PC上實現(xiàn)表情捕捉效果。但是在次之前有大量前置工作需要準備。

表情的制作通常有兩種方案,一種是骨骼驅動,根據(jù)生物面部的肌肉結構創(chuàng)建骨骼,通過骨骼驅動模型表情。這樣做的優(yōu)點是調整方便,缺點是需要大量骨骼支持才能做到自然的表情運動,優(yōu)化起來略麻煩。例如神秘海域4的角色面部就使用了500多根骨骼。另一種是變形器驅動。制作大量morhp target模型,用頂點變形的方式實現(xiàn)表情運動。優(yōu)點是可以實現(xiàn)很多細膩的表情效果,缺點是調整麻煩,需要制作大量模型。在我們的游戲中,經過評估測試,決定采用第二種方式。

093822v811tts5q15qttlk.jpg 骨骼驅動的面部表情
093823iyr84q468xc4uz4o.jpg morhp target驅動的表情,需要制作大量有不同表情頭部模型
任何捕捉得到動畫數(shù)據(jù)都是不能直接使用的,捕捉的過程中會產生大量錯誤,為了修正這些錯誤,最后呈現(xiàn)的動畫仍然需要美術手動調整。另外真實的角色動畫在游戲中是比較復雜的技術,后面有空再寫。

最后核算一下成本吧。高精度模型和貼圖的制作通常要花費數(shù)月時間,根據(jù)要求不同,人工成本可能會有3到5萬。shader的編寫和調整也要花上一兩個月時間,成本2~3萬。然后就是表情制作也要花上幾個月的時間,成本差不多也的5萬以上,再加上角色動畫,以刺客信條那樣的動作游戲為例,一個角色大概需要500種以上不同的動畫來驅動,需要動用演員捕捉,動捕設備和場地,然后動畫師修正數(shù)據(jù),加起來成本也得30多萬了。最后再在引擎里整合,優(yōu)化。加上特效換裝什么亂七八糟的功能,一個高精度的游戲角色開發(fā)成本上百萬并不稀奇,當然流程熟練的話成本會低一些,如果不熟悉,中間犯點什么錯誤需要來回返工,再多花一倍的錢也是有可能的。而這只是一個角色。如果是像大型網(wǎng)游這種動不動幾十個職業(yè)門派種族的,都用這種規(guī)格來開發(fā),幾千萬就沒了,所以一般也只有單人游戲的角色才會這樣做。當然,隨著技術的進步成本也會降低,所以未來高精度角色在游戲中的應用會更加普遍。

銳亞教育

銳亞教育,游戲開發(fā)論壇|游戲制作人|游戲策劃|游戲開發(fā)|獨立游戲|游戲產業(yè)|游戲研發(fā)|游戲運營| unity|unity3d|unity3d官網(wǎng)|unity3d 教程|金融帝國3|8k8k8k|mcafee8.5i|游戲蠻牛|蠻牛 unity|蠻牛