本文小姐姐將以著名的斯蓬扎宮模型場景為例,和大家一起探討一下正午時分的光影布光方法及烘焙過程。3dMax模型情況如下圖所示(由圖可見,模型的面數為6萬多(見截圖左上角),模型一定要采用精簡的單面建模,否則這個場景的面數會多達幾百萬,甚至上千萬的面,如此多的面數,Unity是吃不消的,無論烘焙過程的展UV,還是烘焙,甚至烘焙之后的場景運行,都會陷入無休止的等待、假死機和卡頓狀態,畢竟烘焙之后也會個場景帶來一些負載,而且最終作品要在用戶機器或手機上運行,所以從模型的面數方面,必須充分考慮給場景留出足夠的裕度)
1. 模型導出
無論你用3dMax、Maya、C4D、Blender或Sketchup建的模型,建議都以fbx格式導出,因為Unity3d對fbx格式兼容的最好,這也是官方的建議,導出時一定要勾選“EmbedMedia”(嵌入媒體),否則在導入Unity時會成為無貼圖的“裸模”
2. 模型導入Unity
⑴ 在導入模型前,按下圖所示,勾選掉Unity3d的“Auto Generate”(自動烘焙)選項,好多人一打開Unity3d,不知道怎么啦,總感覺系統處於運算狀態,就是因為Unity默認這個選項是勾選的,當導入模型后,什么還沒做,就一直陷入莫名的忙機,也是這個原因,所以導入前取消這個選項。
⑵ 按下圖所示將剛才從3d軟件導出的FBX模型拖入Unity3d的Assets文件夾,2017版之后,可能出於別的考慮,Unity不再直接導入材質和貼圖,所以很多人發現模型導入后總是無材質和貼圖的裸模,這里還需要做一點設置,看下一步。
⑶ 選中剛導入的FBX模型,點擊inspector面板的Materails按鈕,我們發現下面的所有材質都顯示“none”,這就是裸模的根源,有童鞋說,前面不是說導出FBX時不勾選“Embedmedia”選項,就會出現裸模,這都勾選了,怎么還是裸模呢?這里需要說一下,如果前面不勾選,這里一定是裸模,但是,勾選之后,還需要一點點設置,否則依然會裸模,也就是前面和現在的設置缺一不可。
⑷ 繼續,此時拉開“location”后面的下拉框,將設置改為第一項,也就是“use external materails(legacy)”,意思是使用外部材質,如下圖所示:
⑸ 接下來還需要將“naming”后面的下拉框改為“from model‘s materails’”,如下圖所示,意思是貼圖名稱取自模型材質,然后點擊下面第二張圖中所示的“apply”(應用)按鈕,這時unity就稀里嘩啦地將所有材質和貼圖真正導入Unity。
⑹ 導入材質和貼圖后,unity的assets文件夾中會多出“materails”和與FBX同名的后綴為".fbm"的兩個文件夾,一個存放的是材質,一個用來存放貼圖,如下圖所示。
⑺ 接下來將assets中的FBX模型拖入“Herarcy(層級面板)”,此時我們可以看到,FBX模型連同材質和貼圖被完美地導入了Unity,如下圖所示。
到此模型導入完畢,從下面的圖可以看到,在unity3d默認燈光的照射下,場景看起來很蒼白,沒有一點層次,你的作品功能再強大,場景沒有出色的視覺美感,所有功夫全白費,受眾是不能接受這樣的作品,這就是烘焙的重要意義!考慮到一些童鞋導入模型都成問題,所以前面啰嗦了一堆,熟悉的童鞋可以跳過。接下來就進入unity3d烘焙的正題。
3. Unity3d場景布光及光照參數設置
無論是游戲,還是VR場景,烘焙前首先要做的事是燈光的布設,因為烘焙的主要任務是渲染燈光的光影效果,沒有燈光,烘焙也就無從談起。unity3d的布光原則,和其他3D軟件並無二樣,也就是要根據所要表現的意境和氣氛來決定如何打燈。一開始我們就說要烘焙正午時分的場景,下面我們就按正午時刻的光照來布設燈光。大家都知道,正午時分,陽光明媚,光照明暗分明,太陽光近乎垂直投射,但是,這個場景只有頂部一個可進光的開口,其他部分都是密閉的,表現正午的氣氛,如果燈光垂直向下投射,陰影會與場景物體重合,所以我們不能垂直打燈,因此將燈光調至與地面夾角大約60-80度,合理的燈光布設是場景光影出彩和營造氣氛的先決條件,不同的時間段,燈光角度不同。
⑴ 下面我們用平行光來模擬太陽光,作為主光源(照亮場景的主要光源)照亮場景的部分區域(也就是迎光面),產生光斑,與此同時,在其他區域產生陰影。照亮區和陰影區必須形成強烈的反差,才能顯示出陽光的明媚,很多人烘焙的場景平淡,就是因為明暗對比不強烈,該亮的不亮,該暗的不暗。非洲人之所以看起來牙齒很白,是因為黑色臉部的襯托所致,因此要表現優秀的陽光效果,光照明暗反差要大,但暗區也不能死黑一片。Unity一創建新的場景,就默認為我們創建了一盞平行光,現在我們將其調至如下圖所示的投射角度,既要考慮讓一二層都有陽光投射的痕跡,又不至於燈光垂直入射。
⑵ 接下來選中平行光(Directional Light),將inspector面板中的燈光強度(intensity)調至2,如下圖所示,默認值是1,很多人馬上說燈光已經曝光了,但必須調大,因為我們最終要的是烘焙光照,不是實時光照,現在只是實時光照曝光了,因為烘焙光照的算法和實時光照不同,不調大,烘焙后陽光不夠強烈。另外,順便將燈光的模式“Mode”改為“baked(烘焙模式)”,如下面第二張圖所示。其他值
⑶ 主光源設定之后,我們還需要考慮陰影區域的照亮,雖然陰暗區相對照亮區較暗,但也不能有伸手不見五指的感覺,正午陽光充足的時候,在強光的照射對比下,陰影區會顯得比較暗,但物體還是能看清,而且有層次感的,這主要是天光的貢獻,因此我們需要開啟Unity的天光作為輔助光源來照亮陰暗區域,與此同時,主光源照射到迎光面后,反射到周圍的物體上,這些物體又作為二次光源照亮其他物體,多次反彈后到達陰暗區,也起到光照的作用,因此,這個場景的輔助光源除了天光,還有主光源-太陽光多次反彈光,或者說兩者的綜合效果作為輔助光,共同照亮陰影區。現在我們打開光照面板,點擊window/lingting/settings,如下圖所示,彈出光照面板,然后按下面第二張圖所示,將光照面板的標簽拖至inspector面板標簽之后,使其和inspector面板並排,這樣節省屏幕空間,如下面第三張圖所示。
⑶ 接下來將光照面板(Lighting)下場景(Scene)標簽中的環境反射(Environment Reflections)的反彈次數改為5,這個值越大,光線會充分傳遞到陰暗區,亮度越亮,但亮度不會超過照亮區。然后將實時光照(RealTime Lighting)下實時全局光照(RealTime Global ILLumination)后的復選框取消勾選,也就只進行烘焙全局光照計算。接着將混合光照(Mixed Lighting)的光照模式(Lighting Mode)后的下拉框中的選項改為烘焙間接光(Baked Indirect),最后再將光照貼圖設置(Lightmapping Setings)下的光照運算器(Lightmaper)后的下拉框選項改為漸進式(Progressive),如下圖所示。還需要勾選環境遮蔽(Ambient Occlusion),也就是AO,如下第二張圖所示,這個選項會在物體或物體間內轉角或內轉折處產生軟陰影,例如牆內凹角,對於表現細節很有幫助。至此場景的輔助光和光照參數就設好了。
4. 烘焙模型設置
做完以上的設置之后,還需要對模型進行必要的設置。選中層級面板中所有需要烘焙的模型物體,勾選Inspector面板右上角的Static,將所有物體設定為靜態,如下圖所示,否則烘焙之后沒有陰影和任何效果,切記!然后在assets面板中,選中導入的所有FBX模型,勾選inspector面板模型(model)下的創建光照貼圖坐標(Generate Lightmap UVs)復選框,如下第二張圖所示,否則烘焙后,模型會遍布黑斑,其實是光照圖錯亂,因為沒有貼圖坐標,光照圖不知道怎么貼。
5. 烘焙
完成上面的設置,就可以進行場景烘焙了。點擊下圖所示的“Generate Lighting(生成光照)”按鈕,即可開始光照烘焙
說明:最近Unity2019版的正式版發布,由於一直在測試破版的穩定性,所以到現在才更新,請童鞋們諒解!下面就改用2019版來和大家繼續探討Unity3d的光照烘焙。
接上面的步驟,烘焙完成共耗時7.5分鍾,且無任何報錯提示,如下圖所示:
下面從不同角度來看看烘焙的效果,由下列截圖可見,烘焙成果非常干凈,未見很多童鞋所說的黑斑、白斑、麻點、漏光、漏陰影、撕裂、破面、硬邊等現象,而且烘焙速度非常快。一般情況下,最終的正式渲染烘焙,很多人都得1,2個小時,大部分沒經驗的童鞋,得5,6個小時,甚至幾十個小時,還有的童鞋陷入了無休止的死機狀態。無論質量好壞,有的童鞋想看一眼效果,一時半會都看不到,搞得非常心塞。前面說過,我們此次的目標是烘焙正午時分的光照效果,大家看看有沒有正午的效果?小姐姐個人認為,整個場景明暗對比強烈,陰暗區域雖然很暗,但是層次還是很清晰的。
我們再來看看細節效果
Unity3d的烘焙是美工的一個環節,關系到Unity作品的顏值和賣相,同時也關系到作品的實施運行是否流暢,特別是移動設備上的運行,要開發商業作品,光靠概念是不可能完成項目的,必須經歷系統的實戰訓練,如有意可關注小姐姐的《Unity模型預處理布光烘焙后處理特效美工場景優化實戰視頻教程》去臨摹,也可閱讀小姐姐CSDN的其他案例文章。