渲染全解析)
看到“在UE4中人類著色器的秘密”這個(gè)標(biāo)題我自己也愣了一下。UE4里并沒有一個(gè)叫“人類著色器”的官方節(jié)點(diǎn)但每個(gè)做過角色渲染的TA、技美或者獨(dú)立開發(fā)者都清楚它指的是那一整套把皮膚、眼睛、頭發(fā)、指甲渲染到以假亂真的材質(zhì)組合。很多剛開始接觸UE4的人把注意力全放在模型雕刻和骨骼綁定上結(jié)果角色進(jìn)了引擎皮膚像塑料眼睛像玻璃球頭發(fā)像一坨硬紙板怎么調(diào)都不對(duì)勁。這背后的根源往往不是模型不夠精細(xì)而是著色器鏈路沒有搭對(duì)。這篇文章就專門拆解UE4里“人類著色器”的組成、原理和實(shí)操方法從皮膚、眼睛、頭發(fā)到外接設(shè)備映射調(diào)參把關(guān)鍵參數(shù)、節(jié)點(diǎn)連法和排查技巧一次說清楚。適合正在做寫實(shí)角色項(xiàng)目的TA、圖形程序員、獨(dú)立游戲開發(fā)者也適合剛接觸UE4材質(zhì)系統(tǒng)、想把角色質(zhì)感做上去的學(xué)習(xí)者。1. 人類著色器到底指什么從引擎術(shù)語到渲染目標(biāo)1.1 它不是單一節(jié)點(diǎn)而是一套材質(zhì)族如果你在UE4的材質(zhì)編輯器里搜索“Human”或者“Skin”會(huì)發(fā)現(xiàn)搜不到一個(gè)叫“人類著色器”的現(xiàn)成材質(zhì)。真正的情況是UE4把常見的表面渲染規(guī)律抽象成了不同的著色模型Shading Model而“人類”這個(gè)目標(biāo)需要由多個(gè)著色模型組合起來。打開材質(zhì)主節(jié)點(diǎn)的Details面板在Shading Model的下拉菜單里能看到這些選項(xiàng)Default Lit、Subsurface、Subsurface Profile、Preintegrated Skin、Eye、Hair、Cloth、Clear Coat等。它們并不是為了“人類”專門設(shè)計(jì)的但恰好覆蓋了人體表面最重要的幾個(gè)部分。Default Lit標(biāo)準(zhǔn)PBR適合金屬、塑料、石頭等不透明材質(zhì)。Subsurface均勻次表面散射適合玉石、蠟燭這類半透明材質(zhì)。Subsurface Profile帶獨(dú)立Profile資產(chǎn)的皮膚材質(zhì)適合角色面部、身體。Preintegrated Skin預(yù)積分皮膚適合移動(dòng)端或?qū)ν干湫Ч蟛桓叩膱?chǎng)景。Eye專門的眼球著色模型包含虹膜深度、角膜高光等。Hair各向異性頭發(fā)著色模型能表現(xiàn)出頭發(fā)的絲狀高光。所以所謂“人類著色器”在UE4里從來不是一個(gè)節(jié)點(diǎn)而是一套“協(xié)議”臉部、身體用一個(gè)皮膚材質(zhì)眼球用一個(gè)Eye材質(zhì)頭發(fā)用一個(gè)Hair材質(zhì)眉毛和睫毛單獨(dú)處理指甲和嘴唇可以復(fù)用皮膚但透射參數(shù)要單獨(dú)調(diào)整。這就像做一道菜不是某個(gè)萬能調(diào)料包而是鹽、糖、醬油各司其職配出來的復(fù)合味。1.2 為什么皮膚是全引擎最難渲染的表面之一先說結(jié)論皮膚難在“半透明”。很多新手第一次做皮膚時(shí)只把漫反射貼圖連進(jìn)BaseColor結(jié)果角色看起來像上了釉的陶瓷又亮又硬。問題出在思路太“不透明”了。皮膚不是簡(jiǎn)單的不透明表面。光線射入人體表皮后一部分直接反射出來形成高光另一部分進(jìn)入皮膚內(nèi)部在真皮組織中不斷散射最后從附近的某個(gè)位置重新射出。這個(gè)過程中紅色波長(zhǎng)的光衰減得比藍(lán)色波長(zhǎng)短因此從皮下透出的光會(huì)偏紅。這就是為什么你用手電筒照手指時(shí)指頭邊緣會(huì)透出一圈橙紅色耳廓和鼻翼在逆光時(shí)也特別明顯。UE4里的Subsurface Profile正是用來模擬這個(gè)現(xiàn)象的。它會(huì)把皮膚當(dāng)作一個(gè)有厚度的散射體允許光線在內(nèi)部“滲”一段距離后再離開表面。如果不打開這個(gè)著色模型即使你的貼圖畫得再細(xì)膩角色看起來也只是一層塑料外殼。用生活經(jīng)驗(yàn)類比蠟燭和皮膚的渲染邏輯有點(diǎn)相似都是內(nèi)部透光、邊緣發(fā)紅。只不過皮膚的多層組織讓透射更復(fù)雜既有表皮的高光又有真皮的散射還有皮下血管帶來的不均勻顏色。把這些疊在一起才是“人類著色器”的秘密所在。2. UE4材質(zhì)節(jié)點(diǎn)里的“人體工廠”核心鏈路拆解2.1 從BaseColor到Normal裸主材的基本盤我們先從最基礎(chǔ)的皮膚主材開始。在內(nèi)容瀏覽器里新建一個(gè)材質(zhì)命名成Master_Skin。雙擊打開材質(zhì)編輯器把Shading Model設(shè)置為Subsurface ProfileBlend Mode保持Opaque。主材質(zhì)節(jié)點(diǎn)上會(huì)多出一個(gè)Subsurface Color輸入。接下來的節(jié)點(diǎn)鏈接可以按下面這套思路來搭BaseColor連接帶sRGB標(biāo)記的膚色Albedo貼圖。注意皮膚BaseColor不是純白也不是純黃而是帶一點(diǎn)紅色的中等灰度。取樣節(jié)點(diǎn)默認(rèn)會(huì)處理sRGB不需要手動(dòng)轉(zhuǎn)線性。Normal連接法線貼圖。角色皮膚法線強(qiáng)度通常不要開滿我一般用Multiply乘以0.6到0.8強(qiáng)度太高會(huì)讓皮膚出現(xiàn)硬邦邦的塑料感。Roughness連接粗糙度貼圖建議從紋理的G通道采樣。皮膚的粗糙度不是越低越好額頭、鼻子、臉頰T區(qū)的油光大概在0.3到0.5臉頰干燥區(qū)域可以到0.7左右。全臉一個(gè)值會(huì)非常假。Metallic直接置0。皮膚沒有金屬屬性微小的金屬值會(huì)讓高光顏色變成固態(tài)色看起來像涂了金屬粉。Specular給0.5左右。不寫實(shí)角色倒可以給到0.6但人類皮膚在0.5附近比較通用。Subsurface Color用一張灰度圖或者從BaseColor中提取亮度乘上一個(gè)偏橙紅色的標(biāo)量作為皮下散射顏色。這里要特別強(qiáng)調(diào)法線的方向。如果用Substance Painter導(dǎo)出法線貼圖通常是DirectX格式UE4里可以直接用。如果是從其他軟件生成的OpenGL格式法線在UE4里會(huì)看到法線反了角色臉部出現(xiàn)奇怪的凹凸反轉(zhuǎn)這時(shí)可以在Texture Sample的壓縮設(shè)置里調(diào)成“Normal”模式或者手動(dòng)對(duì)Green通道取反。2.2 Subsurface Profile的關(guān)鍵參數(shù)與實(shí)測(cè)把材質(zhì)切換到Subsurface Profile之后還有一個(gè)更底層的資產(chǎn)需要處理Subsurface Profile。它負(fù)責(zé)定義肉體的“厚度”和“透射顏色”。這個(gè)資產(chǎn)可以單獨(dú)創(chuàng)建也可以在材質(zhì)主節(jié)點(diǎn)Details面板上新建設(shè)置進(jìn)去。打開Subsurface Profile資產(chǎn)你會(huì)看到兩個(gè)核心參數(shù)平均自由程顏色Mean Free Path Color和平均自由程距離Mean Free Path Distance。舊版本引擎里它們的叫法可能不同比如Scatter Radius和Scatter Color但物理含義是一樣的。平均自由程距離控制光線在皮膚內(nèi)部能跑多遠(yuǎn)單位是厘米。數(shù)值越小散射范圍越窄數(shù)值越大光線越容易從遠(yuǎn)處透出來皮膚會(huì)顯得更“蠟”。我按不同角色測(cè)試下來的參考值是這樣的寫實(shí)角色面部0.3到0.8之間??ㄍL(fēng)格角色可以到1.0以上讓皮膚看起來更柔和、更像玉石。怪物或冷血皮膚距離給到0.5以內(nèi)透射明顯減弱。平均自由程顏色則決定了散射出來的光色。人類皮膚通常會(huì)給R1.0、G0.3、B0.1附近的值也就是偏紅橙。如果想讓膚色更蒼白可以把G和B稍微提高如果是科幻角色甚至可以給成藍(lán)色。注意這個(gè)顏色不是讓你直接填成高飽和紅色否則角色看起來像得了嚴(yán)重皮膚病滿臉紅光。實(shí)測(cè)下來Subsurface Profile最容易犯的錯(cuò)是把散射距離調(diào)得過大。數(shù)值一旦超過2耳朵和手指邊緣會(huì)變成通透的蠟塊角色稍微動(dòng)一下燈光變化就會(huì)讓整張臉忽紅忽白非常不穩(wěn)定。2.3 膚色紋理的制作與采樣技巧皮膚貼圖和金屬貼圖的制作邏輯差別很大。金屬表面最重要的是反色率和粗糙度而皮膚還需要考慮表皮下的血管分布、毛細(xì)血管顏色、皮脂分泌差異。做寫實(shí)角色皮膚時(shí)我一般會(huì)把貼圖拆成以下幾張Albedo4K甚至8K的膚色底圖包含雀斑、痣、紅暈。注意不要畫得太均勻人類面部本來就有微小的色差。Normal細(xì)節(jié)法線配合BaseColor一起采。Roughness單獨(dú)一張控制T區(qū)油光和臉頰干燥區(qū)。AO環(huán)境光遮蔽嘴唇、鼻翼、耳后這些有遮擋的地方需要更暗。Subsurface Mask灰度圖標(biāo)記哪些區(qū)域需要更強(qiáng)的次表面散射比如耳朵、鼻尖、嘴唇而額頭、手背的散射相對(duì)弱一些。采樣時(shí)有個(gè)細(xì)節(jié)很多新手都會(huì)忽略Albedo貼圖如果帶sRGB標(biāo)志采樣節(jié)點(diǎn)輸出會(huì)進(jìn)入線性空間而Roughness、Metallic這些數(shù)據(jù)貼圖應(yīng)該設(shè)置為“線性色”否則粗糙度會(huì)偏亮導(dǎo)致角色全身冒油光。在Unreal的紋理編輯器里找到Texture Group或Compression Settings把Roughness貼圖的SRGB關(guān)掉這一步非常關(guān)鍵。如果你沒有Subsurface Mask貼圖臨時(shí)方案是直接用Albedo的藍(lán)色通道取反后再乘一個(gè)橙紅色也能得到大致可用的透射遮罩。但要達(dá)到高質(zhì)量還是建議在DCC軟件里專門繪制一張。3. 眼睛、頭發(fā)、指甲人類細(xì)節(jié)著色器補(bǔ)完3.1 眼睛著色器虹膜、瞳孔與角膜高光角色皮膚做好之后下一個(gè)最容易穿幫的就是眼睛。很多人直接用皮膚材質(zhì)做眼球結(jié)果眼白和虹膜糊在一起怎么看怎么假。UE4里有一個(gè)專門的Eye著色模型它做了幾個(gè)特殊處理虹膜可以藏在透明角膜層下面角膜表面會(huì)形成一層清晰的高光眼白部分則保持濕潤(rùn)的粗糙度低狀態(tài)。使用Eye模型時(shí)材質(zhì)輸入會(huì)比普通皮膚更復(fù)雜通常需要單獨(dú)準(zhǔn)備眼球和虹膜兩張紋理。虹膜部分最核心的技術(shù)點(diǎn)叫“深度視差”。虹膜并不是畫在眼球表面的平面貼圖而是凹進(jìn)去的曲面結(jié)構(gòu)。如果你只是把一張圓形虹膜貼圖平鋪在眼球上角色側(cè)眼看人時(shí)會(huì)非常假。Eye著色模型可以結(jié)合視差技術(shù)讓虹膜圖案隨著視角變化產(chǎn)生輕微位移模擬瞳孔和虹膜實(shí)際凹陷的效果。實(shí)際操作時(shí)我把眼球材質(zhì)分成了三層最外層是角膜的透明高光中間是虹膜和瞳孔的紋理層最下面是眼白基底。角膜的高光用Clear Coat或者在Roughness上單獨(dú)控制讓它在燈下形成一個(gè)銳利的小光斑而不是一大團(tuán)柔光。這個(gè)小光斑是寫實(shí)眼睛的關(guān)鍵缺少它眼睛就沒有“活”的感覺。3.2 頭發(fā)著色器各向異性高光與發(fā)絲遮罩頭發(fā)是另一個(gè)容易翻車的點(diǎn)。普通PBR材質(zhì)的高光是圓形、隨機(jī)的而人類頭發(fā)的高光是一條沿著發(fā)絲方向的細(xì)長(zhǎng)條還會(huì)因?yàn)楣庹战嵌炔煌兩?。UE4的Hair著色模型就是為這個(gè)設(shè)計(jì)的。它使用切線方向作為各向異性軸通過Anisotropy參數(shù)控制高光向發(fā)絲方向拉長(zhǎng)。如果直接使用默認(rèn)設(shè)置高光會(huì)亂七八糟甚至完全不對(duì)需要確保模型切線正確并且材質(zhì)里連接了真實(shí)的發(fā)絲紋理。這里分享一個(gè)我常用的頭發(fā)調(diào)法用發(fā)絲貼圖作為Opacity Mask黑白分明避免半透明相交導(dǎo)致的排序閃爍。制作雙層高光。第一層是表面反射光高光比較亮第二層是內(nèi)部透射光會(huì)染上頭發(fā)的底色相對(duì)較暗。在切線方向上加一層Noise擾動(dòng)。完全順滑的發(fā)絲看起來像塑料線加入隨機(jī)擾動(dòng)后高光才會(huì)出現(xiàn)斷裂和不連續(xù)感更像真實(shí)頭發(fā)。如果項(xiàng)目允許我還會(huì)給發(fā)根到發(fā)梢做頂點(diǎn)色漸變把靠近頭皮的部分提高粗糙度、降低高光模擬發(fā)根油脂和發(fā)梢干枯的差異。這一招在近景特寫時(shí)特別有用。3.3 嘴唇和指甲的透射處理嘴唇和指甲不需要單獨(dú)建新材質(zhì)它們可以復(fù)用皮膚主材但要在Subsurface Mask上做區(qū)分。嘴唇是全身次表面散射最強(qiáng)的區(qū)域之一因?yàn)檫@里的表皮很薄皮下毛細(xì)血管密集。所以嘴唇位置的Subsurface Mask數(shù)值應(yīng)該給到最高同時(shí)Roughness降低讓嘴唇有濕潤(rùn)感。但如果把整張嘴都做成大紅唇高光又會(huì)顯得太油膩。我通常會(huì)把下唇沿和嘴角的粗糙度調(diào)高一點(diǎn)模擬自然狀態(tài)下的干澀感。指甲則正好相反它的半透明屬性更多出現(xiàn)在指甲邊緣。指甲末端要能看到下方指尖肉的透射所以Subsurface Mask在甲床位置給一個(gè)中等值而指甲板表面粗糙度較低形成光滑堅(jiān)硬的質(zhì)感。很多游戲角色遠(yuǎn)處看皮膚沒問題玩家一拉近鏡頭手部就穿幫很多都是因?yàn)橹讣讻]有單獨(dú)處理透射區(qū)域。4. 實(shí)操搭建一個(gè)可直接用的角色皮膚著色器4.1 資產(chǎn)準(zhǔn)備與節(jié)點(diǎn)藍(lán)圖現(xiàn)在我們把前面的原理落地成一個(gè)可以直接用的材質(zhì)。假設(shè)你已經(jīng)有一張Albedo、Normal、Roughness和一張Subsurface Mask接下來在材質(zhì)編輯器里按下面的連線方式操作。先把Shading Model切成Subsurface Profile。主材質(zhì)節(jié)點(diǎn)上連接這幾路BaseColor取Albedo貼圖的RGB。Normal取Normal貼圖用Multiply調(diào)節(jié)強(qiáng)度到0.7左右。Roughness取Roughness貼圖的G通道。Metallic常數(shù)值0。Specular常數(shù)值0.5。Subsurface Color取Subsurface Mask的灰度值再乘以一個(gè)Color節(jié)點(diǎn)數(shù)值建議為(0.8, 0.25, 0.1)。然后新建一個(gè)Subsurface Profile資產(chǎn)把Mean Free Path Distance設(shè)為0.4Mean Free Path Color設(shè)為(1.0, 0.3, 0.1)再把這個(gè)資產(chǎn)拖進(jìn)當(dāng)前材質(zhì)的Subsurface Profile屬性里。如果你想要角色整體偏紅或者偏黃可以再做兩個(gè)Scalar Parameter分別命名為“SSS_Intensity”和“Roughness_Blend”把它們連在一個(gè)Lerp節(jié)點(diǎn)上用來統(tǒng)一調(diào)節(jié)皮膚的散射強(qiáng)度和粗糙度。這樣后續(xù)用材質(zhì)實(shí)例調(diào)整時(shí)不需要打開復(fù)雜的節(jié)點(diǎn)圖直接在實(shí)例面板里拉滑塊就行。這里用代碼塊展示節(jié)點(diǎn)連線的文字版AlbedoTexture.RGB - BaseColor NormalTexture.RGB - Multiply(0.7) - Normal RoughnessTexture.G - Roughness Constant0 - Metallic Constant0.5 - Specular SubsurfaceMask.Gray - SubsurfaceColor SubsurfaceColorValue(color) - Multiply - SubsurfaceColor連好之后先別急著看效果。把材質(zhì)實(shí)例創(chuàng)建出來放到一個(gè)帶HDR背景的環(huán)境里用定向光模擬太陽光再在角色側(cè)面打一個(gè)偏暗的補(bǔ)光。只有在這種明暗分明的情況下次表面散射的效果才會(huì)真正顯現(xiàn)出來。4.2 外接設(shè)備映射把參數(shù)交給你手里的控制器這部分是很多TA私底下在用的“偷懶”技巧也是標(biāo)題里“秘密”的很關(guān)鍵一環(huán)。外接設(shè)備映射指的是把外部硬件控制器的實(shí)時(shí)數(shù)據(jù)映射到UE4里的材質(zhì)參數(shù)上比如用MIDI控制器上的推子、旋鈕、游戲手柄的搖桿甚至手機(jī)陀螺儀來控制皮膚粗糙度、SSS強(qiáng)度、高光強(qiáng)度等。為什么要這么做因?yàn)槠つw著色器的參數(shù)是聯(lián)動(dòng)的。調(diào)BaseColor亮度時(shí)你可能同時(shí)要改Subsurface Color才能保持平衡調(diào)Roughness時(shí)又得回頭修正高光強(qiáng)度。如果用鼠標(biāo)在材質(zhì)實(shí)例面板里一個(gè)個(gè)改數(shù)值效率極低。但如果你有一排物理推子左手同時(shí)推三個(gè)參數(shù)眼睛盯著視口里的角色很快就能找到最佳組合。這種調(diào)試方式和調(diào)音師用調(diào)音臺(tái)沒有本質(zhì)區(qū)別。我自己最常用的方案是MIDI控制器加OSC或者M(jìn)IDI輸入插件。操作流程大概是先把需要實(shí)時(shí)調(diào)節(jié)的參數(shù)都設(shè)成Parameter比如Scalar_Roughness、Scalar_SSS、Scalar_Specular。在關(guān)卡藍(lán)圖里創(chuàng)建一個(gè)Dynamic Material Instance運(yùn)行時(shí)把它賦給角色模型。接一個(gè)MIDI Input事件讀取控制器發(fā)來的CC值。CC值的范圍通常是0到127需要把它映射到UE4的0到1范圍可以用Divide 127。調(diào)用Set Scalar Parameter Value函數(shù)把映射后的數(shù)值寫進(jìn)對(duì)應(yīng)的材質(zhì)參數(shù)。外接設(shè)備映射的強(qiáng)大之處在于你可以同時(shí)綁定多個(gè)參數(shù)。比如把MIDI推子1到4分別綁定Subsurface Distance、Roughness、Specular、SSS Color強(qiáng)度然后在角色臉部的特寫視角下一邊推推子一邊觀察皮膚變化。這個(gè)過程非常直觀能幫你快速判斷哪些參數(shù)在特定光線下會(huì)破壞真實(shí)感。除了MIDI設(shè)備游戲手柄也可以。我試過用手柄右搖桿X軸調(diào)粗糙度的角度Y軸調(diào)SSS強(qiáng)度雖然精度不如推子但勝在隨時(shí)隨地能做快速A/B對(duì)比。手機(jī)上的傳感器也可以通過網(wǎng)絡(luò)協(xié)議映射到UE4比如用平板當(dāng)作無線控制器這類方案適合在項(xiàng)目評(píng)審時(shí)讓策劃、美術(shù)同時(shí)參與調(diào)參比坐在電腦前搶鍵盤高效得多。需要提醒的是外接設(shè)備映射主要用于開發(fā)期調(diào)參不必要的插件和中間層在項(xiàng)目發(fā)布時(shí)一定要移除或者禁用。我曾在項(xiàng)目里忘關(guān)一個(gè)第三方輸入插件結(jié)果運(yùn)行時(shí)CPU開銷異常排查了很久才發(fā)現(xiàn)是它在后臺(tái)輪詢?cè)O(shè)備。4.3 參數(shù)范圍與調(diào)優(yōu)經(jīng)驗(yàn)有了外接設(shè)備映射參數(shù)范圍就需要提前想好。我整理了一張常用的皮膚參數(shù)參考表適用偏寫實(shí)的角色。參數(shù)推薦范圍說明Mean Free Path Distance0.2~1.0 cm超過1.5皮膚會(huì)變蠟狀Subsurface Color強(qiáng)度0.1~0.5太高整臉發(fā)紅Roughness0.2~0.8不要全臉用同一個(gè)值Specular0.4~0.6皮膚不是鏡面法線貼圖強(qiáng)度0.5~0.8太強(qiáng)會(huì)出現(xiàn)硬邊角膜高光Roughness0.01~0.05眼睛要足夠亮調(diào)參時(shí)一個(gè)容易犯的錯(cuò)是只看臉不看全身。角色臉部調(diào)得再好如果手部沒有等待同樣參數(shù)一旦鏡頭切到手指特寫觀眾立刻會(huì)覺得皮膚材質(zhì)不統(tǒng)一。所以建議把臉、身體、手分開建材質(zhì)實(shí)例但共用同一個(gè)主材質(zhì)和同一個(gè)Subsurface Profile只通過貼圖或遮罩區(qū)分區(qū)域。另外一個(gè)經(jīng)驗(yàn)是皮膚高光不能單獨(dú)調(diào)太高。很多人看到角色皮膚發(fā)光不足第一反應(yīng)是把Specular和Roughness往下拉結(jié)果角色變成滿頭大汗。正確的做法應(yīng)該是先檢查燈光。皮膚的高光既來自材質(zhì)參數(shù)也來自環(huán)境光照的銳利程度。使用面積大的柔和光源時(shí)高光會(huì)被壓得很淡這不是材質(zhì)錯(cuò)了而是光照環(huán)境導(dǎo)致。5. 常見問題與排查技巧實(shí)錄5.1 常見問題速查表角色著色器出問題的時(shí)候不要盲目調(diào)參數(shù)。先把現(xiàn)象對(duì)應(yīng)到原因再動(dòng)手改。下面是我遇到的頻率比較高的問題整理成速查表。現(xiàn)象可能原因排查方向皮膚像塑料Shading Model不是Subsurface Profile檢查材質(zhì)主節(jié)點(diǎn)Shading Model整張臉發(fā)紅Subsurface Color強(qiáng)度過高把SubsurfaceColor的乘數(shù)降到0.3以下耳朵、鼻翼透光發(fā)灰Mean Free Path Color過暗或距離過小在Subsurface Profile里調(diào)亮散射顏色高光斑塊噪點(diǎn)嚴(yán)重Roughness貼圖不是線性空間或?qū)霑r(shí)被壓縮成sRGB關(guān)閉Roughness貼圖的SRGB選項(xiàng)法線凹凸反轉(zhuǎn)法線貼圖格式是OpenGL在紋理設(shè)置里切換Normal模式或?qū)通道取反眼睛沒有生氣眼球沒有用Eye著色模型把眼球材質(zhì)Shading Model改為Eye頭發(fā)高光像反光塑料Hair著色模型沒有各向異性增加Anisotropy并確保模型切線正確皮膚發(fā)黑但模型沒問題AO強(qiáng)度過高或場(chǎng)景GI過暗降低AO貼圖強(qiáng)度檢查天空光照強(qiáng)度鏡頭拉近后皮膚出現(xiàn)大面積色塊BaseColor貼圖分辨率不足或壓縮太狠使用4K或8K貼圖并調(diào)整紋理壓縮5.2 實(shí)測(cè)心得與避坑清單最后分享幾個(gè)我在多次項(xiàng)目迭代里踩坑踩出來的心得。第一Subsurface Profile一旦打開引擎會(huì)走更復(fù)雜的散射計(jì)算性能開銷比Default Lit高不少。移動(dòng)端如果吃不消可以換成Preintegrated Skin著色模型。它沒有獨(dú)立散射距離但外觀接近性能友好很多。做主機(jī)項(xiàng)目時(shí)也要謹(jǐn)慎角色多、同屏人數(shù)大的場(chǎng)景可以考慮只給主角和關(guān)鍵NPC開高精度SSS路人角色用簡(jiǎn)化版皮膚材質(zhì)。第二AO貼圖在皮膚上不要濫用。皮膚表面有非常細(xì)微的絨毛和油脂變化過度使用AO會(huì)讓角色像蒙了一層灰。一般來說AO強(qiáng)度給到0.3左右就夠在眼角、嘴唇邊緣可以稍微加強(qiáng)但不要在額頭、臉頰這種大面積區(qū)域壓黑。第三光照構(gòu)建對(duì)SSS效果的影響非常大。在編輯器里你看到角色的皮膚效果一半來自材質(zhì)一半來自場(chǎng)景光。如果光照沒構(gòu)建或者用了強(qiáng)度很低的天光再好的Subsurface Profile也救不回來。調(diào)SSS之前先保證場(chǎng)景里有足夠的環(huán)境光和一個(gè)明確方向的主光源否則你很容易把參數(shù)調(diào)到失真方向。第四動(dòng)態(tài)材質(zhì)實(shí)例配合外接設(shè)備映射調(diào)參時(shí)可以多做幾個(gè)預(yù)設(shè)位置保存。比如在皮膚材質(zhì)里預(yù)設(shè)“日景”、“夜景”、“室內(nèi)”、“逆光”幾個(gè)參數(shù)組合每次切到一個(gè)預(yù)設(shè)后使用外接設(shè)備微調(diào)找到一個(gè)相對(duì)平衡值后寫回預(yù)設(shè)。這個(gè)工作流能省掉大量“剛才那個(gè)值是多少”的記憶負(fù)擔(dān)。最后再分享一個(gè)小技巧調(diào)試皮膚時(shí)不要只用純灰色場(chǎng)景。很多美術(shù)喜歡把場(chǎng)景調(diào)成黑色好集中看角色但這會(huì)導(dǎo)致次表面散射完全看不到因?yàn)镾SS需要周圍有光來形成透射。正確做法是搭建一個(gè)帶漸變環(huán)境貼圖的亮棚子環(huán)境讓角色在明暗交界處轉(zhuǎn)動(dòng)觀察耳朵、鼻翼、手部邊緣的透射顏色。看到那圈微微泛紅的光邊你就知道你的“人類著色器”真正開始工作了。