日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity3d烘焙教程 持续更新中【2020】

發(fā)布時(shí)間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity3d烘焙教程 持续更新中【2020】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很多剛剛接觸Unity3d的童鞋花了大量的時(shí)間自學(xué),可總是把握不好Unity3d的烘焙,剛從一個(gè)坑里爬出來,又陷入另一個(gè)新的坑,每次烘焙一個(gè)場(chǎng)景少則幾個(gè)小時(shí),多則幾十個(gè)小時(shí),機(jī)器總是處于假死機(jī)狀態(tài),半天看不到結(jié)果,好不容易烘焙完了,黑斑、撕裂、硬邊、漏光或漏陰影等缺陷遍布,慘不忍睹,整體效果暗無層次,或者蒼白無力,燈光該亮的亮不起來,該暗的暗不下去,更談不上有什么意境,痛苦的折磨,近乎失去了信心,一個(gè)團(tuán)隊(duì)從建模到程序,都沒什么問題,可一到烘焙這一關(guān),就堵得心塞,怎么也搞不出好的視覺效果,作品沒法及時(shí)向用戶交付,小姐姐在這里分享一些自己的經(jīng)驗(yàn),希望能幫到受此痛苦折磨的朋友,話不多說,開工!

哦,對(duì)了,忘了交代一點(diǎn),很多朋友總是喜歡追高版本的unity3d軟件,以為高版就一定很好,目前Unity3d 2019還處于測(cè)試階段,有人就迫不及待地下載使用,測(cè)試版問題很多,用于生產(chǎn)風(fēng)險(xiǎn)很大。unity3d共有三個(gè)版本標(biāo)識(shí),alpha、beta、final,其中alpha是公認(rèn)的內(nèi)測(cè)版,也就是內(nèi)部測(cè)試版,很多代碼都有問題,beta版是公測(cè)版,也有不少問題,final版才是最后的正式版,alpha版一般簡(jiǎn)寫為a,例如unity 2019.1.1a8(64-bit)、Unity 2019.2.0a4,這兩個(gè)版本都是測(cè)試版,如果版本標(biāo)識(shí)中有字母b,就是公測(cè)版,也不能下載使用,只有帶 f 的版本才能用于項(xiàng)目制作,所以現(xiàn)在最高只能使用2018版,很多老司機(jī)還在用5.6版,一般都不追高版。

本文和大家一起探討的實(shí)例效果截圖(后續(xù)會(huì)不斷更新):


















干活!

● Unity日景烘焙

首先小姐姐以著名的斯蓬扎宮模型場(chǎng)景為例,和大家一起探討一下正午時(shí)分的光影布光方法及烘焙過程。3dMax模型情況如下圖所示(由圖可見,模型的面數(shù)為6萬多(見截圖左上角),模型一定要采用精簡(jiǎn)的單面建模,否則這個(gè)場(chǎng)景的面數(shù)會(huì)多達(dá)幾百萬,甚至上千萬的面,如此多的面數(shù),Unity是吃不消的,無論烘焙過程的展UV,還是烘焙,甚至烘焙之后的場(chǎng)景運(yùn)行,都會(huì)陷入無休止的等待、假死機(jī)和卡頓狀態(tài),畢竟烘焙之后也會(huì)個(gè)場(chǎng)景帶來一些負(fù)載,而且最終作品要在用戶機(jī)器或手機(jī)上運(yùn)行,所以從模型的面數(shù)方面,必須充分考慮給場(chǎng)景留出足夠的裕度)





1. 模型導(dǎo)出
無論你用3dMax、Maya、C4D、Blender或Sketchup建的模型,建議都以fbx格式導(dǎo)出,因?yàn)閁nity3d對(duì)fbx格式兼容的最好,這也是官方的建議,導(dǎo)出時(shí)一定要勾選“EmbedMedia”(嵌入媒體),否則在導(dǎo)入U(xiǎn)nity時(shí)會(huì)成為無貼圖的“裸模”

2. 模型導(dǎo)入U(xiǎn)nity

⑴ 在導(dǎo)入模型前,按下圖所示,勾選掉Unity3d的“Auto Generate”(自動(dòng)烘焙)選項(xiàng),好多人一打開Unity3d,不知道怎么啦,總感覺系統(tǒng)處于運(yùn)算狀態(tài),就是因?yàn)閁nity默認(rèn)這個(gè)選項(xiàng)是勾選的,當(dāng)導(dǎo)入模型后,什么還沒做,就一直陷入莫名的忙機(jī),也是這個(gè)原因,所以導(dǎo)入前取消這個(gè)選項(xiàng)。


⑵ 按下圖所示將剛才從3d軟件導(dǎo)出的FBX模型拖入U(xiǎn)nity3d的Assets文件夾,2017版之后,可能出于別的考慮,Unity不再直接導(dǎo)入材質(zhì)和貼圖,所以很多人發(fā)現(xiàn)模型導(dǎo)入后總是無材質(zhì)和貼圖的裸模,這里還需要做一點(diǎn)設(shè)置,看下一步。


⑶ 選中剛導(dǎo)入的FBX模型,點(diǎn)擊inspector面板的Materails按鈕,我們發(fā)現(xiàn)下面的所有材質(zhì)都顯示“none”,這就是裸模的根源,有童鞋說,前面不是說導(dǎo)出FBX時(shí)不勾選“Embedmedia”選項(xiàng),就會(huì)出現(xiàn)裸模,這都勾選了,怎么還是裸模呢?這里需要說一下,如果前面不勾選,這里一定是裸模,但是,勾選之后,還需要一點(diǎn)點(diǎn)設(shè)置,否則依然會(huì)裸模,也就是前面和現(xiàn)在的設(shè)置缺一不可。

⑷ 繼續(xù),此時(shí)拉開“l(fā)ocation”后面的下拉框,將設(shè)置改為第一項(xiàng),也就是“use external materails(legacy)”,意思是使用外部材質(zhì),如下圖所示:

⑸ 接下來還需要將“naming”后面的下拉框改為“from model‘s materails’”,如下圖所示,意思是貼圖名稱取自模型材質(zhì),然后點(diǎn)擊下面第二張圖中所示的“apply”(應(yīng)用)按鈕,這時(shí)unity就稀里嘩啦地將所有材質(zhì)和貼圖真正導(dǎo)入U(xiǎn)nity。


⑹ 導(dǎo)入材質(zhì)和貼圖后,unity的assets文件夾中會(huì)多出“materails”和與FBX同名的后綴為".fbm"的兩個(gè)文件夾,一個(gè)存放的是材質(zhì),一個(gè)用來存放貼圖,如下圖所示。

⑺ 接下來將assets中的FBX模型拖入“Herarcy(層級(jí)面板)”,此時(shí)我們可以看到,FBX模型連同材質(zhì)和貼圖被完美地導(dǎo)入了Unity,如下圖所示。

到此模型導(dǎo)入完畢,從下面的圖可以看到,在unity3d默認(rèn)燈光的照射下,場(chǎng)景看起來很蒼白,沒有一點(diǎn)層次,你的作品功能再強(qiáng)大,場(chǎng)景沒有出色的視覺美感,所有功夫全白費(fèi),受眾是不能接受這樣的作品,這就是烘焙的重要意義!考慮到一些童鞋導(dǎo)入模型都成問題,所以前面啰嗦了一堆,熟悉的童鞋可以跳過。接下來就進(jìn)入unity3d烘焙的正題。


3. Unity3d場(chǎng)景布光及光照參數(shù)設(shè)置

無論是游戲,還是VR場(chǎng)景,烘焙前首先要做的事是燈光的布設(shè),因?yàn)楹姹旱闹饕蝿?wù)是渲染燈光的光影效果,沒有燈光,烘焙也就無從談起。unity3d的布光原則,和其他3D軟件并無二樣,也就是要根據(jù)所要表現(xiàn)的意境和氣氛來決定如何打燈。一開始我們就說要烘焙正午時(shí)分的場(chǎng)景,下面我們就按正午時(shí)刻的光照來布設(shè)燈光。大家都知道,正午時(shí)分,陽光明媚,光照明暗分明,太陽光近乎垂直投射,但是,這個(gè)場(chǎng)景只有頂部一個(gè)可進(jìn)光的開口,其他部分都是密閉的,表現(xiàn)正午的氣氛,如果燈光垂直向下投射,陰影會(huì)與場(chǎng)景物體重合,所以我們不能垂直打燈,因此將燈光調(diào)至與地面夾角大約60-80度,合理的燈光布設(shè)是場(chǎng)景光影出彩和營(yíng)造氣氛的先決條件,不同的時(shí)間段,燈光角度不同。

⑴ 下面我們用平行光來模擬太陽光,作為主光源(照亮場(chǎng)景的主要光源)照亮場(chǎng)景的部分區(qū)域(也就是迎光面),產(chǎn)生光斑,與此同時(shí),在其他區(qū)域產(chǎn)生陰影。照亮區(qū)和陰影區(qū)必須形成強(qiáng)烈的反差,才能顯示出陽光的明媚,很多人烘焙的場(chǎng)景平淡,就是因?yàn)槊靼祵?duì)比不強(qiáng)烈,該亮的不亮,該暗的不暗。非洲人之所以看起來牙齒很白,是因?yàn)楹谏槻康囊r托所致,因此要表現(xiàn)優(yōu)秀的陽光效果,光照明暗反差要大,但暗區(qū)也不能死黑一片。Unity一創(chuàng)建新的場(chǎng)景,就默認(rèn)為我們創(chuàng)建了一盞平行光,現(xiàn)在我們將其調(diào)至如下圖所示的投射角度,既要考慮讓一二層都有陽光投射的痕跡,又不至于燈光垂直入射。

⑵ 接下來選中平行光(Directional Light),將inspector面板中的燈光強(qiáng)度(intensity)調(diào)至2,如下圖所示,默認(rèn)值是1,很多人馬上說燈光已經(jīng)曝光了,但必須調(diào)大,因?yàn)槲覀冏罱K要的是烘焙光照,不是實(shí)時(shí)光照,現(xiàn)在只是實(shí)時(shí)光照曝光了,因?yàn)楹姹汗庹盏乃惴ê蛯?shí)時(shí)光照不同,不調(diào)大,烘焙后陽光不夠強(qiáng)烈。另外,順便將燈光的模式“Mode”改為“baked(烘焙模式)”,如下面第二張圖所示。其他值


⑶ 主光源設(shè)定之后,我們還需要考慮陰影區(qū)域的照亮,雖然陰暗區(qū)相對(duì)照亮區(qū)較暗,但也不能有伸手不見五指的感覺,正午陽光充足的時(shí)候,在強(qiáng)光的照射對(duì)比下,陰影區(qū)會(huì)顯得比較暗,但物體還是能看清,而且有層次感的,這主要是天光的貢獻(xiàn),因此我們需要開啟Unity的天光作為輔助光源來照亮陰暗區(qū)域,與此同時(shí),主光源照射到迎光面后,反射到周圍的物體上,這些物體又作為二次光源照亮其他物體,多次反彈后到達(dá)陰暗區(qū),也起到光照的作用,因此,這個(gè)場(chǎng)景的輔助光源除了天光,還有主光源-太陽光多次反彈光,或者說兩者的綜合效果作為輔助光,共同照亮陰影區(qū)。現(xiàn)在我們打開光照面板,點(diǎn)擊window/lingting/settings,如下圖所示,彈出光照面板,然后按下面第二張圖所示,將光照面板的標(biāo)簽拖至inspector面板標(biāo)簽之后,使其和inspector面板并排,這樣節(jié)省屏幕空間,如下面第三張圖所示。



⑶ 接下來將光照面板(Lighting)下場(chǎng)景(Scene)標(biāo)簽中的環(huán)境反射(Environment Reflections)的反彈次數(shù)改為5,這個(gè)值越大,光線會(huì)充分傳遞到陰暗區(qū),亮度越亮,但亮度不會(huì)超過照亮區(qū)。然后將實(shí)時(shí)光照(RealTime Lighting)下實(shí)時(shí)全局光照(RealTime Global ILLumination)后的復(fù)選框取消勾選,也就只進(jìn)行烘焙全局光照計(jì)算。接著將混合光照(Mixed Lighting)的光照模式(Lighting Mode)后的下拉框中的選項(xiàng)改為烘焙間接光(Baked Indirect),最后再將光照貼圖設(shè)置(Lightmapping Setings)下的光照運(yùn)算器(Lightmaper)后的下拉框選項(xiàng)改為漸進(jìn)式(Progressive),如下圖所示。還需要勾選環(huán)境遮蔽(Ambient Occlusion),也就是AO,如下第二張圖所示,這個(gè)選項(xiàng)會(huì)在物體或物體間內(nèi)轉(zhuǎn)角或內(nèi)轉(zhuǎn)折處產(chǎn)生軟陰影,例如墻內(nèi)凹角,對(duì)于表現(xiàn)細(xì)節(jié)很有幫助。至此場(chǎng)景的輔助光和光照參數(shù)就設(shè)好了。


4. 烘焙模型設(shè)置

做完以上的設(shè)置之后,還需要對(duì)模型進(jìn)行必要的設(shè)置。選中層級(jí)面板中所有需要烘焙的模型物體,勾選Inspector面板右上角的Static,將所有物體設(shè)定為靜態(tài),如下圖所示,否則烘焙之后沒有陰影和任何效果,切記!然后在assets面板中,選中導(dǎo)入的所有FBX模型,勾選inspector面板模型(model)下的創(chuàng)建光照貼圖坐標(biāo)(Generate Lightmap UVs)復(fù)選框,如下第二張圖所示,否則烘焙后,模型會(huì)遍布黑斑,其實(shí)是光照?qǐng)D錯(cuò)亂,因?yàn)闆]有貼圖坐標(biāo),光照?qǐng)D不知道怎么貼。


5. 烘焙

完成上面的設(shè)置,就可以進(jìn)行場(chǎng)景烘焙了。點(diǎn)擊下圖所示的“Generate Lighting(生成光照)”按鈕,即可開始光照烘焙

說明:最近Unity2019版的正式版發(fā)布,由于一直在測(cè)試破版的穩(wěn)定性,所以到現(xiàn)在才更新,請(qǐng)童鞋們諒解!下面就改用2019版來和大家繼續(xù)探討Unity3d的光照烘焙。

接上面的步驟,烘焙完成共耗時(shí)7.5分鐘,且無任何報(bào)錯(cuò)提示,如下圖所示:

下面從不同角度來看看烘焙的效果,由下列截圖可見,烘焙成果非常干凈,未見很多童鞋所說的黑斑、白斑、麻點(diǎn)、漏光、漏陰影、撕裂、破面、硬邊等現(xiàn)象,而且烘焙速度非常快。一般情況下,最終的正式渲染烘焙,很多人都得1,2個(gè)小時(shí),大部分沒經(jīng)驗(yàn)的童鞋,得5,6個(gè)小時(shí),甚至幾十個(gè)小時(shí),還有的童鞋陷入了無休止的死機(jī)狀態(tài)。無論質(zhì)量好壞,有的童鞋想看一眼效果,一時(shí)半會(huì)都看不到,搞得非常心塞。前面說過,我們此次的目標(biāo)是烘焙正午時(shí)分的光照效果,大家看看有沒有正午的效果?小姐姐個(gè)人認(rèn)為,整個(gè)場(chǎng)景明暗對(duì)比強(qiáng)烈,陰暗區(qū)域雖然很暗,但是層次還是很清晰的。




我們?cè)賮砜纯醇?xì)節(jié)效果



下面我們用視頻看看烘焙的效果

6. 沒經(jīng)驗(yàn)的初學(xué)者烘焙的情況

初學(xué)者或者沒經(jīng)驗(yàn)的童鞋,將烘焙參數(shù)設(shè)的稍高一些,即如下圖所示,將”Bounce(反彈次數(shù))“設(shè)為4,Lightmap Resolution(光照貼圖分辨率)”設(shè)為20,“Lightmap Size(光照貼圖尺度)”設(shè)為2048,烘焙時(shí)屏幕右下角的ETA(剩余時(shí)間,也就是烘焙完成需要的時(shí)間)一開始顯示為3個(gè)多小時(shí),然后不斷增加,甚至幾十個(gè)小時(shí),經(jīng)歷漫長(zhǎng)的等待之后,直接心理奔潰,明明做個(gè)簡(jiǎn)單的例子烘焙挺快的,為什么一到實(shí)際項(xiàng)目就讓人這么心塞呢?

這些童鞋不甘心,又降低烘焙參數(shù),如下圖所示,將”Bounce(反彈次數(shù))“設(shè)為1,Lightmap Resolution(光照貼圖分辨率)”設(shè)為10,“Lightmap Size(光照貼圖尺度)”設(shè)為2048,烘焙時(shí)屏幕右下角的ETA(剩余時(shí)間)為1個(gè)多小時(shí),同時(shí)狀態(tài)欄提示“There are 5 objects in scene with overlapping UV’s…(場(chǎng)景中有5個(gè)物體UV坐標(biāo)重疊)

烘焙的結(jié)果慘不忍睹,劣跡斑斑,仿若火災(zāi)之后的情景,如下圖所示,





童鞋們常見的烘焙缺陷就不再一一列舉了,那么為什么小姐姐使用很高的烘焙參數(shù),完成高品質(zhì)烘焙只用了7.5分鐘,而童鞋們使用稍高點(diǎn)的參數(shù)就陷入了無休止的假死機(jī)?甚至把參數(shù)降得很低,烘焙都比小姐姐花費(fèi)的時(shí)間多的多,而且烘焙的質(zhì)量還非常差呢?對(duì)于小姐姐不到8分鐘的高品質(zhì)渲染烘焙時(shí)長(zhǎng),很多童鞋有點(diǎn)大跌眼鏡,似乎不大相信,因?yàn)樽约簭膩砭蜎]有在幾分鐘內(nèi)完成一個(gè)場(chǎng)景的烘焙,而且還需要一次又一次的反復(fù)測(cè)試,每次都有各種問題,一出現(xiàn)問題,就一頭霧水,不知道如何排除,即使等待漫長(zhǎng)的時(shí)間有了結(jié)果,也是黑斑、白斑、漏光、漏陰影、破面、亮邊、硬邊等現(xiàn)象嚴(yán)重,搞得都失去了信心,下面就烘焙超慢以及烘焙過程出現(xiàn)的問題分別進(jìn)行深度分析,僅為小姐姐個(gè)人的觀點(diǎn),請(qǐng)高手磚拍。

7. 烘焙渲染超級(jí)緩慢的原因分析及解決方案

⑴ 模型面數(shù)超高是Unity3d烘焙超慢的罪魁禍?zhǔn)?/p>

大家都知道,光照烘焙的實(shí)質(zhì)是將模型的每個(gè)面上所受光照渲染到其展開的對(duì)應(yīng)UV區(qū)塊上的過程,大家可以自己試驗(yàn)一下,在自己熟悉的3D軟件中創(chuàng)建一個(gè)簡(jiǎn)單的立方體和一個(gè)面模型,然后導(dǎo)入U(xiǎn)nity3d進(jìn)行烘焙,速度會(huì)非常快,但是當(dāng)復(fù)制10萬個(gè)立方體,再導(dǎo)入U(xiǎn)nity3d烘焙的時(shí)候,速度就非常慢,由這個(gè)簡(jiǎn)單的例子可以得出結(jié)論,模型的面數(shù)越多,烘焙所消耗的時(shí)間越長(zhǎng),所以降低模型面數(shù)是加速烘焙的首選方案,換言之,模型面數(shù)超高是造成Unity光影烘焙緩慢的主要原因,也就是在保證模型外觀不變的情況下,應(yīng)盡可能地降低模型面數(shù)。

很多童鞋之前從事效果圖或3D動(dòng)畫,轉(zhuǎn)入VR之后,仍然沿用效果圖和動(dòng)畫的建模習(xí)慣,將每個(gè)面建的很精細(xì),很光滑,即使模型規(guī)模再大都不用擔(dān)心,因?yàn)檫@些童鞋的機(jī)器配置都很高,但是VR不同于效果圖和動(dòng)畫,效果圖和動(dòng)畫最終作品只需給用戶提交幾張圖片或視頻(圖片序列),而VR最終作品是要給用戶提交一個(gè)能夠在配置不高的用戶機(jī)或手機(jī)上實(shí)時(shí)運(yùn)行的3D場(chǎng)景文件,所以制作VR或游戲作品,無論你的機(jī)器配置多高,都應(yīng)盡可能優(yōu)化場(chǎng)景模型面數(shù)。模型面數(shù)不僅影響烘焙速度和質(zhì)量,同時(shí)也影響最終作品的實(shí)時(shí)運(yùn)行效率。

簡(jiǎn)單地說,VR和游戲建模,應(yīng)放棄傳統(tǒng)的實(shí)體建模習(xí)慣,改用精簡(jiǎn)的低面數(shù)最優(yōu)化單面建模方法,也就是poly(多邊形)建模,這樣才能有效降低模型面數(shù)。對(duì)于使用3dmax建模的童鞋,如果不會(huì)使用單面建模,可參看小姐姐編制的《基于Unity3d的3dMax低面數(shù)精簡(jiǎn)單面建模實(shí)戰(zhàn)視頻教程》,給小姐姐的Unity模型預(yù)處理布光烘焙后處理特效美工場(chǎng)景優(yōu)化實(shí)戰(zhàn)視頻教程,贈(zèng)送你基于Unity3d的3dmax低面數(shù)精簡(jiǎn)單面建模實(shí)戰(zhàn)視頻教程,希望小姐姐的教程對(duì)一些童鞋大幅降低模型面數(shù)有所幫助。另外,很多讀者制作項(xiàng)目遇到技術(shù)障礙,急得團(tuán)團(tuán)轉(zhuǎn),搜索到本文,于是向小姐姐求救,把小姐姐當(dāng)做最后一根救命稻草,請(qǐng)求小姐姐指導(dǎo)和幫助,當(dāng)然有更多的讀者遇到問題,加V向小姐姐提問,小姐姐都一一作了解答。言歸正傳,具體如何構(gòu)建模型,就不贅述了,這里只給出一些原則,也就是在保證模型外觀的前提下,應(yīng)盡可能降低曲面光弧度(段數(shù)),一些細(xì)節(jié)采用貼圖來表現(xiàn),如下圖所示:


有些童鞋認(rèn)為曲面精度太低,看起來太粗糙,大家看看上兩圖所在位置經(jīng)過烘焙后的效果,由圖可見,雖然降低了曲面精度(光滑度),烘焙后并不失真。


另外對(duì)于護(hù)欄、鐵藝、女兒墻之類比較費(fèi)面的模型,可采用鏤空貼圖來表現(xiàn)。踏步較多時(shí),也可采用貼圖表現(xiàn),門窗之類也用貼圖,這樣就可以大幅度降低模型面,如下圖所示:



⑵ 模型交叉也是導(dǎo)致烘焙渲染超級(jí)緩慢不容忽視的因素
有的童鞋非常偏執(zhí),不愿意用單面建模方法,說自己的模型面數(shù)并不高,可渲染烘焙還是很慢,原因是他的場(chǎng)景中有很多下圖所示的模型交叉(或穿插)結(jié)構(gòu),烘焙時(shí)會(huì)計(jì)算圖中所示的2處陰影和AO,大家都知道,烘焙的過程中陰影計(jì)算是最耗時(shí)的,不合理的建模,會(huì)讓系統(tǒng)花大量時(shí)間計(jì)算無意義的陰影,如果采用單面建模方法改造成如下第二張圖所示的結(jié)構(gòu),只需計(jì)算一處的陰影,如果類似的這種交叉結(jié)構(gòu)在場(chǎng)景中大量存在,烘焙肯定會(huì)很緩慢。而在改成單面模型后,烘焙會(huì)大幅加速


⑶ 面重疊(Overlapped faces)也是導(dǎo)致烘焙渲染緩慢的重要因素

一些童鞋確實(shí)使用poly單面建模構(gòu)建的場(chǎng)景,但是由于疏忽或誤操作,一些頂點(diǎn)未被焊合,或其他原因,造成很多重疊的面,從外觀上看,都是單個(gè)的面,而實(shí)際在這些面的后面重疊了好多面,這些面在烘焙渲染過程中,都會(huì)被展開,并要一一被烘焙,而實(shí)際后面重疊的面都毫無意義,白白花費(fèi)了很長(zhǎng)時(shí)間在烘焙無用的東西,所以建模完成后,應(yīng)排查重疊面和重疊的頂點(diǎn)。關(guān)于重疊面后面會(huì)進(jìn)行圖解。

⑷ 不合理的lightmap UV布局將大幅增加烘焙渲染時(shí)間

由于Unity3d自帶的lightmap UV’s拆分(展開)算法的硬傷,在指定的UV尺度下,物體的光照UV常常集聚在一張lightmap的局部區(qū)域,使大量的UV空間白白浪費(fèi),如下圖所示。為了增大UV所占的比例,很多童鞋通過增加下面第二張圖中的“Scale in Lightmap”參數(shù)反復(fù)測(cè)試,時(shí)間都花在了一次又一次的測(cè)試中,少則幾個(gè)小時(shí),多則幾天,得不償失。而且當(dāng)增加“Scale in Lightmap”參數(shù)時(shí),原來一些UV區(qū)塊又相應(yīng)縮小,為了讓所有的UV區(qū)塊都增大,每個(gè)物體的“Scale in Lightmap”都得增加,此時(shí)烘焙時(shí)間成倍劇增。原本想讓所有UV區(qū)塊占滿一張lightmap,可是unity并不聽使喚,不僅沒有充分利用lightmap有效空間,而且又增加了lightmap的數(shù)量,每張lightmap和剛才那個(gè)lightmap一樣,都浪費(fèi)很多UV空間。經(jīng)過多次長(zhǎng)時(shí)間的烘焙測(cè)試后,烘焙缺陷雖然消除了,可lighmap所消耗的內(nèi)存空間驚人,這給作品后續(xù)的實(shí)時(shí)運(yùn)行增加了很大負(fù)擔(dān)。因此不合理lightmap UV布局也是導(dǎo)致烘焙緩慢的重要因素。所以小姐姐強(qiáng)烈建議不要使用Unity3d自帶的Lightmap UVs展平功能,也就是不要勾選下面第三張圖中的“Generate Lightmap UVs(自動(dòng)展平Lightmap UV坐標(biāo))”,不勾選這個(gè)選項(xiàng)則系統(tǒng)會(huì)利用建模軟件中拆分(展平)的通道2中的UV坐標(biāo)。這個(gè)數(shù)據(jù)保存在FBX文件中,Unity3d是可以識(shí)別的。



8. 影響烘焙渲染質(zhì)量的因素分析及解決方案

前面我們一起討論了造成烘焙渲染緩慢的原因和解決方案,下面我們繼續(xù)剖析造成很多烘焙缺陷原因及解決方案,前面所討論的渲染烘焙緩慢的原因也是造成各種烘焙缺陷的根源,接下來我們逐一進(jìn)行分析。

⑴ 模型面數(shù)超高是影響烘焙質(zhì)量的重要因素

有耐心的童鞋,硬著頭皮等待了很長(zhǎng)時(shí)間,烘焙完了整個(gè)場(chǎng)景,結(jié)果卻發(fā)現(xiàn)到處是黑斑、亮斑、硬邊、漏光、漏陰影、破面、撕裂、亮面、黑面等缺陷,整個(gè)場(chǎng)景看上去很臟,一下就懵圈了,全然不知如何解決。根據(jù)小姐姐個(gè)人經(jīng)驗(yàn),要解決上述的烘焙缺陷,首要問題應(yīng)該降低模型面數(shù),也就是在保證模型外觀情況下,盡可能使用較少的面來構(gòu)建場(chǎng)景。大家可以試想一下,兩個(gè)一樣的模型,一個(gè)面數(shù)很高,另一個(gè)面數(shù)很低,當(dāng)他們被拆分(展平)在相同分辨率的lightmap UV貼圖坐標(biāo)中時(shí),相對(duì)于低面模型來說,高面模型的每個(gè)面只有縮得很小才能被容納在這個(gè)lightmap中,當(dāng)某些面小到不足以表現(xiàn)這些面所受的光照的細(xì)節(jié)時(shí),偏暗的像素就會(huì)積聚成黑塊,偏亮的像素就會(huì)集聚成白塊。進(jìn)而當(dāng)這些lightmap包裹到對(duì)應(yīng)的模型面上時(shí),就出現(xiàn)了黑斑或白斑,如下圖所示。而低面模型相對(duì)高面模型來說,在相同分辨率的lightmap中,每個(gè)面所占的比例就大的多,足以表現(xiàn)每個(gè)面所受的光照的細(xì)節(jié),因此烘焙的結(jié)果清晰、干凈。

大家繼續(xù)來看下面第二張圖,一些面原本需要在下面左圖所示的大小的UV區(qū)塊上來表現(xiàn)光照,但由于模型面數(shù)太多,Unity3d展平UV后,自動(dòng)分配給這些面的實(shí)際UV區(qū)塊,只有中間圖所示的大小,烘焙完成后,這些面對(duì)應(yīng)的光照?qǐng)D要包裹到1:1的模型面上,需要放大很多倍。大家都知道,當(dāng)一個(gè)很小的圖被放大很多倍時(shí),Unity會(huì)以插值法來彌補(bǔ)像素,彌補(bǔ)的像素RGB值是原本相鄰的兩個(gè)像素RGB的平均值,即右圖所示的結(jié)果,當(dāng)這張圖的“色帶”的分界線貼在某個(gè)面上時(shí),就出現(xiàn)常見的“硬邊”缺陷,當(dāng)深色的“條帶”貼在某個(gè)面上時(shí),就出現(xiàn)了常見的“黑面”缺陷,同理,當(dāng)淺色的“條帶”貼在某個(gè)面上時(shí),就出現(xiàn)了常見的“亮面”缺陷。總之,如果不采用精簡(jiǎn)的低面數(shù)最優(yōu)化單面建模,而使用傳統(tǒng)的實(shí)體建模方法,模型面數(shù)會(huì)很高,烘焙時(shí),不僅耗時(shí),而且會(huì)出現(xiàn)各種各樣的缺陷。
⑵ 面重疊也是影響烘焙質(zhì)量不可忽視的因素

面重疊對(duì)烘焙質(zhì)量的影響比較隱蔽,常常被很多人忽視,甚至有些童鞋壓根就不知道面重疊會(huì)影響烘焙質(zhì)量,但它對(duì)烘焙質(zhì)量的影響確實(shí)不容忽視。為了讓童鞋們了解什么是面重疊,我們還是以前面烘焙的場(chǎng)景為例進(jìn)行圖解,小姐姐將這個(gè)場(chǎng)景的poly合并成了3層和一組配飾模型,分別為1_F、2_F、3_F,為了方便大家搞清關(guān)系,小姐姐將模型拉開顯示了,如下圖所示:

這里我們先不解釋什么是面重疊,而是先討論如何檢測(cè)面重疊,對(duì)于使用3dmax建模的童鞋,可以按照下圖所示的步驟打開面重疊檢測(cè)功能。

打開之后,屏幕顯示如下圖所示的信息,其中“Overlapping Faces:”的意思是重疊面的數(shù)量,因?yàn)閯偞蜷_,沒有選擇物體,所以后面顯示“Not Applicable(不適用)”。“Click here to Configure”意思是點(diǎn)擊這兒來配置相距多遠(yuǎn)算作重疊,一般設(shè)為0.0001,也就是相距很近很近。“Click to Update”意思是點(diǎn)擊這兒來更新,當(dāng)選擇物體后,點(diǎn)擊這個(gè)按鈕來顯示重疊面的數(shù)量。

下面我們就以3_F,也就是三層的模型為例來檢測(cè)重疊的面,首先點(diǎn)擊“點(diǎn)擊這兒來配置”,設(shè)置間距為0.0001視為重疊,如下圖所示:

接下來在場(chǎng)景中選擇3_F,然后點(diǎn)擊“Click here to Update”,此時(shí)“Overlapping Faces”的數(shù)量顯示為16,也就是3_F中有16個(gè)面重疊,如下圖所示。

接下來我們看看到底面是怎么重疊的,按Alt+Q隔離3_F,旋轉(zhuǎn)視圖觀察,沒有發(fā)現(xiàn)重疊面提示,有時(shí)候確實(shí)很難發(fā)現(xiàn)重疊的面,但是大家都知道,面的重合,必然伴隨著頂點(diǎn)的重合,所以我們將面重疊改成頂點(diǎn)重疊檢測(cè),按下圖所示的圖示步驟打開頂點(diǎn)檢測(cè)功能。

和前邊面重疊檢測(cè)的操作一樣,配置間距容差為0.0001,然后點(diǎn)擊“Click here to Update”,屏幕信息顯示38個(gè)頂點(diǎn)重合,如下圖所示。

與此同時(shí),場(chǎng)景中顯示很多綠色頂點(diǎn),這些綠色的點(diǎn)就是重疊的38個(gè)頂點(diǎn),現(xiàn)在我們就來看看這些綠色的頂點(diǎn)到底是什么回事,要選擇和編輯頂點(diǎn),我們得進(jìn)入poly的頂點(diǎn)層級(jí),然后選擇一個(gè)綠色的頂點(diǎn),旋轉(zhuǎn)視圖觀察,如下圖所示

將選中的這個(gè)綠色頂點(diǎn)沿y軸向后移動(dòng),得到如下圖所示的結(jié)果,至此,小姐姐就不用解釋什么是面重疊了,從下圖中可見,確實(shí)在這點(diǎn)處有面重疊。

移除這個(gè)頂點(diǎn),或者和剛才位置的頂點(diǎn)焊合,然后再次檢測(cè)頂點(diǎn)重疊和面重疊,重疊的頂點(diǎn)數(shù)和重疊的面數(shù)分別降低為36和14,如下圖所示。

由此可見,通過移除或焊合,可消除頂點(diǎn)重疊或面重疊,以此類推,可消除所有重疊的頂點(diǎn)和重疊的面。
通過以上的圖解,大家已經(jīng)知道如何找到重疊的面和重疊的頂點(diǎn),以及如何消除重疊面和重疊的頂點(diǎn),同時(shí)也了解了什么是面重疊和頂點(diǎn)重疊,那么到底面重疊對(duì)Unity3d的光影烘焙質(zhì)量有什么影響呢?下面我們就一起來討論一下。

前面我們已經(jīng)討論過模型面數(shù)超高對(duì)Unity3烘焙質(zhì)量的影響,而且得到結(jié)論,面數(shù)太高,會(huì)導(dǎo)致所有面展平后在lightmap中所占的比例大幅減小,進(jìn)而使烘焙后出現(xiàn)各種各樣的缺陷,面重疊和模型面數(shù)超高一樣,展平后,那些重疊在有效面后面、對(duì)場(chǎng)景造型沒有任何貢獻(xiàn)的毫無意義的多余面也會(huì)擠占有效面的UV空間,使得有效面在lightmap中的比例縮小,所以必須清除重疊面。重疊面不僅對(duì)場(chǎng)景造型沒有任何貢獻(xiàn),而且展平后還會(huì)為渲染烘焙這些毫無意義的面消耗很長(zhǎng)的時(shí)間,同時(shí)因?yàn)閿D占了有效面的lightmap的UV空間,使得有效面的UV空間相應(yīng)減小,從而導(dǎo)致前面所述的各種烘焙缺陷,所以要加速烘焙、提高烘焙質(zhì)量,清除重疊面是不容忽視的。對(duì)于使用Cinema4D和Maya建模的童鞋,都可以在自己習(xí)慣的建模軟件中找到檢測(cè)重疊面的功能,大家可自己去嘗試,這里就不一一贅述了。

⑶ lightmap UV布局也是影響Unity3d烘焙質(zhì)量最重要的因素

雖然降低模型面數(shù)、消除面重疊都會(huì)加速烘焙渲染和提高烘焙質(zhì)量,但是如果有效面的Lightmap UV的布局如果不合理,最終的烘焙依然會(huì)很耗時(shí)、烘焙質(zhì)量依然會(huì)很差。那么什么叫Lightmap UV布局不合理呢?一方面是Lightmap UV沒有充分利用lightmap UV空間,所有UV區(qū)塊集聚在lightmap UV的某一部分,使大量的UV空間都白白浪費(fèi)。另一方面就是Lightmap UV的布局因根據(jù)面的大小調(diào)整對(duì)應(yīng)UV區(qū)塊的比例,使得lightmap在所有物體上均勻分布,這個(gè)可能有些童鞋不大理解,這么來說吧,所謂的不均勻,就是光照?qǐng)D在一些物體的某些面很清晰,而在另一些面很模糊,大家在貼材質(zhì)時(shí)經(jīng)常會(huì)遇到,貼圖在物體不同面上的大小不同,這就是貼圖的UV分布不均勻造成的,和這個(gè)道理一樣,lightmap UV的布局也應(yīng)考慮均勻分布,為了消除烘焙缺陷,如果極端地使用每個(gè)物體的“Scale in Lightmap”來調(diào)整物體的UV比例,是無法做到Lightmap UV的均勻分布的。

如下圖所示的Lightmap UV布局使得所有UV區(qū)塊都聚集到了這個(gè)ligtmap UV的左下角,這使得所有面在整個(gè)lightmap UV中所占的比例都很小,導(dǎo)致有些面所受的光影效果無法充分表現(xiàn)而造成最終的烘焙缺陷,同時(shí)為了消除烘焙缺陷,只能定性地增大“Scale in Lightmap”這個(gè)參數(shù)反復(fù)測(cè)試,無法精確控制UV的布局,而且隨著每個(gè)物體“Scale in Lightmap”參數(shù)的增加,烘焙渲染越來越慢,因此小姐姐個(gè)人認(rèn)為,Unity3d的lightmap UVs展平功能有致命的缺陷,所以強(qiáng)烈建議童鞋們使用自己習(xí)慣的3D建模軟件來展平lighmap UV,例如3dMax、Maya、C4D等。
下圖是小姐姐在3dmax中展平的前面烘焙的案例場(chǎng)景的lightmap UV,從下圖可見,四張lightmap的UV布局充分利用了UV空間,沒有像Unity3的展平那樣,全部集聚在某一局部,而是均勻地分布在整個(gè)lightmap UV空間中,同時(shí)所有面的UV大小也是均勻分布的,烘焙后不會(huì)出現(xiàn)lightmap局部清晰或模糊現(xiàn)象。更不會(huì)出現(xiàn)任何烘焙缺陷。

下圖是將在3dmax中展平的lightmap 導(dǎo)入U(xiǎn)nity3d,并經(jīng)高質(zhì)量烘焙后得到的光影圖,由圖可見,Unity3d老老實(shí)實(shí)地按照3max展平的UV高質(zhì)量地烘焙出了整個(gè)場(chǎng)景的光照?qǐng)D。一氣呵成,無任何缺陷,且總共用時(shí)7.5分鐘。從前面的截圖大家都已經(jīng)看到,整個(gè)場(chǎng)景沒有任何烘焙缺陷,而且光影圖非常清晰,明暗層次分明。


由以上的圖解可見,lightmap UV的布局,的確會(huì)影響著烘焙的質(zhì)量,也就是合理的UV布局,不僅會(huì)加速烘焙,而且可以提高烘焙質(zhì)量,不合理的UV布局,不僅會(huì)導(dǎo)致烘焙緩慢,而且很難保證烘焙質(zhì)量。
正是小姐姐在模型階段采用了3dmax最優(yōu)化低面數(shù)精簡(jiǎn)建模方法構(gòu)建的整個(gè)場(chǎng)景,并在3d中排除了所有的重疊面,同時(shí)在3d中合理地拆分(展平)了lightmap UV,所以在Unity3d中僅用了7.5分鐘就快速高質(zhì)量地烘焙出了整個(gè)場(chǎng)景。當(dāng)然,一些童鞋會(huì)說,自己烘焙一些實(shí)例,也是幾分鐘完成了,也沒什么烘焙缺陷,那是因?yàn)槟闼玫陌咐P投际呛芎?jiǎn)單的,并且經(jīng)過優(yōu)化處理的,當(dāng)然烘焙很快,而且沒有任何問題,但是一換成實(shí)際的項(xiàng)目場(chǎng)景,立即就卡住不動(dòng)了,少則幾個(gè)小時(shí),多則幾天烘焙不出來。所以只要按照小姐姐上述的方法,可在幾分鐘內(nèi)快速完成實(shí)際項(xiàng)目的烘焙渲染。當(dāng)然其中會(huì)涉及到一些經(jīng)驗(yàn)。

9. 分步/分批次烘焙渲染

一些童鞋的機(jī)器可能配置太低,整個(gè)場(chǎng)景一鍵烘焙可能吃不消,或者烘焙太慢,此時(shí)可以分步烘焙渲染,也就是一次烘焙一個(gè)或一組物體。有時(shí)只有某些物體有烘焙缺陷,通過分步/分批次烘焙,可避免無缺陷物體的重復(fù)烘焙時(shí)間。下圖所示為單獨(dú)烘焙1層的情況下,僅用時(shí)2分多鐘。依照這樣的方法,然后分別選擇2層、3層進(jìn)行單獨(dú)烘焙,每次只選擇一個(gè)或一組物體來烘焙,前面已經(jīng)烘焙完成的物體不會(huì)受影響,這樣不僅會(huì)減輕一次烘焙的機(jī)器負(fù)載,而且避開了一些物體的重復(fù)烘焙,尤其是當(dāng)某個(gè)物體烘焙出現(xiàn)問題的時(shí)候,可將排查范圍鎖定在所選擇的物體內(nèi)。對(duì)于機(jī)器配置較低的童鞋,無需再為升級(jí)硬件支付額外的成本,這個(gè)功能是小姐姐個(gè)人的一些經(jīng)驗(yàn)所得。
10. 烘焙渲染分類

烘焙渲染根據(jù)燈光和物體的狀態(tài)可分為靜態(tài)燈光下靜態(tài)物體的烘焙、靜態(tài)燈光下動(dòng)態(tài)物體的烘焙、動(dòng)態(tài)燈光下靜態(tài)物體的烘焙、動(dòng)態(tài)燈光下動(dòng)態(tài)物體的烘焙四種。對(duì)于早先從事3D動(dòng)畫的童鞋,肯定不理解為什么要有這四種分類呢,因?yàn)閯?dòng)畫只需將場(chǎng)景中的所有物體渲染成圖片序列(視頻),終端用戶只需要播放就可以了,而VR和游戲是需要用戶和場(chǎng)景進(jìn)行交互操作的,兩者的機(jī)理有本質(zhì)的區(qū)別,作為VR和游戲的開發(fā)程序,Unity自然有自己獨(dú)特的烘焙渲染方式。下面我們就這四種烘焙渲染方法一一展開討論,為了簡(jiǎn)化問題,我們?cè)O(shè)定一個(gè)比較簡(jiǎn)單的場(chǎng)景,如下圖所示:

⑴ 靜態(tài)燈光下靜態(tài)物體的烘焙

前面我們討論的斯蓬扎宮的烘焙就是靜態(tài)燈光下靜態(tài)物體烘焙的典型實(shí)例。之所以稱之為“靜態(tài)燈光下靜態(tài)物體的烘焙”,是因?yàn)槌鄼C(jī)外,燈光的狀態(tài)(位置、方位角、顏色、強(qiáng)度等)以及物體的狀態(tài)(位置、方位角、比例、材質(zhì)等)相對(duì)時(shí)間恒定不變,簡(jiǎn)單地說,就是燈光和物體的狀態(tài)不隨時(shí)間變化。這種烘焙的設(shè)置前面提到過,這里我們?cè)儆懻撘幌?#xff0c;其設(shè)置如下圖,即第一步先將產(chǎn)生陰影的主光源的燈光模式(Mode)設(shè)定為“baked(烘焙模式)”。第二步將需要烘焙的物體設(shè)定為“Static(靜態(tài))”,如果不設(shè)定為靜態(tài),烘焙之后沒有任何效果。第三步將lighting(光照)面板中Realtime Lighting(實(shí)時(shí)光照)下的Realtime Global ILLumination(實(shí)時(shí)全局照明)選項(xiàng)取消勾選,保留Mixed Lighting(混合照明)下的Baked Global ILLumination(烘焙全局照明)選項(xiàng)的勾選。然后進(jìn)行必要的其他設(shè)置,烘焙上面的場(chǎng)景就得到上圖的靜態(tài)燈光下靜態(tài)物體的烘焙效果。



這種烘焙方式在烘焙完成后,所有直接光照和全局光照完全被轉(zhuǎn)移到光照貼圖中,此時(shí)無論如何調(diào)整燈光(燈光強(qiáng)度、燈光顏色、燈光角度),甚至將燈光模式改為mixed或realtime,或者勾選"realtime Global Illumination",都對(duì)場(chǎng)景無任何影響,也就是說,這種方式烘焙的場(chǎng)景,運(yùn)行時(shí)燈光是不能改變的(如下圖所示),大家可以自己試一試。

有童鞋可能會(huì)問,這種烘焙方式,場(chǎng)景中是不是不能有運(yùn)動(dòng)物體,當(dāng)然不是啦,只是運(yùn)動(dòng)物體就像被烘焙忽略一樣,沒有任何光影效果而已,但運(yùn)動(dòng)在場(chǎng)景中是存在的,并且保持著原有的運(yùn)動(dòng)效果,簡(jiǎn)單地說,這種烘焙方式不適合有運(yùn)動(dòng)物體的場(chǎng)景。

下面是“斯蓬扎宮”應(yīng)用這種方式烘焙的正午時(shí)分的截圖,其效果可以與Vray的渲染效果媲美,當(dāng)然這需要一些經(jīng)驗(yàn)。

本想用視頻向大家展示這種烘焙運(yùn)行時(shí)的效果,折騰了好多天,可是這里不支持鏈接視頻,而且Gif動(dòng)態(tài)圖像有5M限制,所以沒法在這里給大家展示,要看這種方式烘焙的場(chǎng)景運(yùn)行時(shí)的效果,可以去http://v2-restudy.com/custom/1455.html看視頻。

⑵ 靜態(tài)燈光下動(dòng)態(tài)物體的烘焙

這種方式適合燈光靜止且有運(yùn)動(dòng)物體的場(chǎng)景(如馬路上行駛汽車的城市場(chǎng)景)。為了演示靜態(tài)燈光下動(dòng)態(tài)物體的烘焙,我們?cè)谏厦娴膱?chǎng)景中,添加一個(gè)Cube(立方體),用它來代替運(yùn)動(dòng)的物體,它可能是一輛汽車、一個(gè)角色,或者是其他的運(yùn)動(dòng)物體,總之,為了簡(jiǎn)化,這里用一個(gè)運(yùn)動(dòng)的立方體來表示,位置如下圖所示,按照前面的概念,要烘焙這個(gè)立方體,也得勾選“Static”,否則烘焙后沒有效果。所以選中這個(gè)立方體,然后勾選“Static”,設(shè)定這個(gè)立方體為靜態(tài)(運(yùn)動(dòng)的物體是不該設(shè)為靜態(tài)的),然后重新烘焙整個(gè)場(chǎng)景。

下面用一個(gè)Gif動(dòng)態(tài)圖像來看看整個(gè)場(chǎng)景烘焙后的情況:

由上圖可見,立方體的烘焙是錯(cuò)誤的:1. 立方體投射的陰影沒有跟隨立方體運(yùn)動(dòng);2. 立方體所接受的陰影沒有變化;3. 立方體進(jìn)入暗區(qū)和亮區(qū)光照沒有變化。

由此可見,除了相機(jī),如果場(chǎng)景中有運(yùn)動(dòng)的物體,不適合使用靜態(tài)燈光下靜態(tài)物體的烘焙方式,而應(yīng)改用“靜態(tài)燈光下動(dòng)態(tài)物體的烘焙”方式,具體步驟如下:首先將運(yùn)動(dòng)物體解除“Static”設(shè)定,或者說,運(yùn)動(dòng)物體不要勾選“Static”選項(xiàng);接下來將主光源的燈光模式(Mode)設(shè)定為Mixed(混合)模式;然后將lighting(光照)面板中Realtime Lighting(實(shí)時(shí)光照)下的Realtime Global ILLumination(實(shí)時(shí)全局照明)選項(xiàng)取消勾選,保留Mixed Lighting(混合照明)下的Baked Global ILLumination(烘焙全局照明)選項(xiàng)的勾選。最后將Mixed Lighting(混合照明)下的Lighting Mode(光照模式)改為“Shadowmask(陰影遮罩)”,這樣實(shí)時(shí)光照的陰影就可以和烘焙陰影很好地融為一體(這里特別說明一下,所謂實(shí)時(shí)光照的陰影和烘焙陰影融為一體,是指兩者陰影的亮度一模一樣)。有些童鞋想用3dmax、C4D或Maya自帶的烘焙模塊來為Unity3d烘焙場(chǎng)景,對(duì)于靜態(tài)燈光下靜態(tài)物體的烘焙,這是完全可以的,但是一旦有運(yùn)動(dòng)物體,就要用到實(shí)時(shí)光照,此時(shí)實(shí)時(shí)燈光的實(shí)時(shí)陰影亮度很難做到與其他3D軟件中烘焙的陰影亮度完全一樣,當(dāng)兩者重疊在一起時(shí),實(shí)時(shí)陰影很暗,看上去就像挖了一個(gè)黑洞一樣的感覺,這個(gè)大家自己去試試就知道了,有了這樣的嘗試之后,大家就理解什么叫“實(shí)時(shí)光照的陰影和烘焙陰影融為一體”的概念了,如果用其他3D軟件來烘焙,導(dǎo)入U(xiǎn)nity3d后,陰影很難融為一體,所以建議大家不要使用其他3d軟件來烘焙Unity3d場(chǎng)景,免得白白浪費(fèi)時(shí)間。

Unity靜態(tài)燈光下動(dòng)態(tài)物體的烘焙設(shè)置步驟如下四圖所示:




最后還需要為運(yùn)動(dòng)物體設(shè)定“Light Probe Group(光探測(cè)器組)”,用來收集運(yùn)動(dòng)物體可能到達(dá)處的環(huán)境光照信息,以保證運(yùn)動(dòng)物體在不同位置的正確光照。也就是在Heirarchy面板的空白處右鍵點(diǎn)擊,在彈出的菜單中點(diǎn)擊light下的“Light Probe Group(光探測(cè)器組)”,場(chǎng)景中就會(huì)出現(xiàn)帶有四個(gè)頂點(diǎn)的立方體網(wǎng)格,這就是光探測(cè)器。具體步驟圖解如下:



下圖為調(diào)整光探測(cè)器的過程,其中需要不停地選擇和使用“Duplicate Selected(復(fù)制選擇的)”命令,然后移動(dòng)頂點(diǎn),最終讓光探測(cè)器的頂點(diǎn)密布運(yùn)動(dòng)物體的運(yùn)動(dòng)范圍,范圍比實(shí)際要大些。

光探測(cè)器器布置好后,清除之前烘焙的數(shù)據(jù)(Clear Baked Data),然后重新烘焙(Generate Lighting),如下圖所示:

重新烘焙后得到如下圖所示的結(jié)果,由圖可見,運(yùn)動(dòng)物體的光影這回正確了。

這種烘焙完成后,改變燈光的光強(qiáng)度、顏色或角度以及運(yùn)動(dòng)物體的狀態(tài),場(chǎng)景會(huì)相應(yīng)變化,簡(jiǎn)單地說,這種方式烘焙完成的場(chǎng)景,運(yùn)行時(shí)可以改變燈光和運(yùn)動(dòng)物體的狀態(tài)(但運(yùn)動(dòng)物體必須在光探測(cè)器組范圍之內(nèi)),如下圖所示:

有童鞋馬上會(huì)問,不是在說靜態(tài)燈光下動(dòng)態(tài)物體的烘焙嘛,燈光能改變,就不是靜態(tài)燈光了,是的,之所以演示這種烘焙后燈光可以改變,是因?yàn)樵趯?shí)際應(yīng)用中,肯定有童鞋會(huì)發(fā)現(xiàn)這個(gè)現(xiàn)象,但是還是建議這種烘焙后不要改變燈光,因?yàn)闀?huì)發(fā)生一些怪異的現(xiàn)象,比如,場(chǎng)景中會(huì)出現(xiàn)雙光斑和顏色不一致,具體大家自己可以去嘗試,正是因?yàn)檫@個(gè)原因,所以小姐姐把這種方式歸類到靜態(tài)燈光之列,用于靜態(tài)燈光下靜態(tài)物體的烘焙,并在運(yùn)行時(shí)不要改變燈光。

下面是應(yīng)用這種方式烘焙的“斯蓬扎宮”的截圖,要瀏覽這種方式烘焙的場(chǎng)景運(yùn)行時(shí)的效果,可以去前面的網(wǎng)址看視頻。

⑶ 動(dòng)態(tài)燈光下靜態(tài)物體的烘焙

如果燈光在運(yùn)行時(shí)需要改變且場(chǎng)景中無運(yùn)動(dòng)物體(如窗簾慢慢拉開時(shí)陽光投逐漸射進(jìn)室內(nèi)的照明、涵洞中的油燈照明等),就需要使用這種方式來烘焙。這種烘焙方式的設(shè)置如下圖所示:

下圖是這種方式烘焙的效果及烘焙后改變燈光狀態(tài)時(shí)場(chǎng)景的變化情況,由圖可見,這種方式烘焙的場(chǎng)景在運(yùn)行時(shí)可改變燈光。
下圖是應(yīng)用這種方式烘焙的“斯蓬扎宮”的兩張截圖,要瀏覽這種方式烘焙的場(chǎng)景運(yùn)行時(shí)的效果,可以去前面的網(wǎng)址看視頻。

⑷ 動(dòng)態(tài)燈光下動(dòng)態(tài)物體的烘焙

對(duì)于燈光在運(yùn)行時(shí)需要改變且有運(yùn)動(dòng)物體的場(chǎng)景用這種方式來烘焙,設(shè)置方法與動(dòng)態(tài)燈光下靜態(tài)物體的烘焙設(shè)置相同,如下圖所示,所不同的是,需要為運(yùn)動(dòng)物體設(shè)定光探測(cè)器組,方法同靜態(tài)燈光下動(dòng)態(tài)物體烘焙中的光探測(cè)器組的設(shè)定,這種方式烘焙的效果如下圖所示。

這種方式烘焙的場(chǎng)景在運(yùn)行時(shí)燈光也可改變,詳見上一方式中的動(dòng)態(tài)Gif圖。

下面是這種方式烘焙的“斯蓬扎宮”的截圖,要想瀏覽這種方式烘焙的場(chǎng)景運(yùn)行時(shí)的效果,可以去前面的網(wǎng)址看視頻。

⑸ 四種烘焙方式的比較

上面只是和大家孤立地討論了四種烘焙方式的設(shè)置和烘焙效果,下面對(duì)四種方式進(jìn)行橫向比較,以方便童鞋們對(duì)四種方式有更深入的理解,這里我們?cè)O(shè)定如下所示的場(chǎng)景,墻壁、地面、四個(gè)球體為靜態(tài),四個(gè)立方體做活塞運(yùn)動(dòng)。

下圖為靜態(tài)燈光下靜態(tài)物體的烘焙方式(即baked+baked Glaobal Illumination)烘焙完成的場(chǎng)景,有同學(xué)肯定有點(diǎn)懵圈,前面說的靜態(tài)燈光下靜態(tài)物體的烘焙從來沒提到過運(yùn)動(dòng)物體,這個(gè)怎么會(huì)有運(yùn)動(dòng)物體呢,其實(shí)這種方式是可以有運(yùn)動(dòng)物體的,只不過這里也為運(yùn)動(dòng)物體引入了光探測(cè)器組,運(yùn)動(dòng)物體是用烘焙到光探測(cè)器組中的光照數(shù)據(jù)照明的,前面之所以沒提運(yùn)動(dòng)物體,是為了特別強(qiáng)調(diào)靜態(tài)物體的“靜態(tài)”!由下圖可見靜態(tài)燈光下靜態(tài)物體的烘焙方式,靜態(tài)物體表面的光影和AO非常精細(xì),烘焙結(jié)果相對(duì)其它方式來說,對(duì)硬件的開銷最小,但靜態(tài)物體和動(dòng)態(tài)物體表面均不會(huì)產(chǎn)生高光,且運(yùn)動(dòng)物體不產(chǎn)生投影,運(yùn)動(dòng)物體進(jìn)入明暗區(qū)域表面只有明暗變化,并沒有接受真正的陰影。如果對(duì)于運(yùn)動(dòng)物體的光影要求不高,可優(yōu)先采用這種烘焙方式。

下圖為靜態(tài)燈光下動(dòng)態(tài)物體的烘焙(Mixed+Baked Global Illumination)結(jié)果,由圖可見,這種方式烘焙的場(chǎng)景,除了靜態(tài)物體的表面的光影和AO精細(xì)之外,靜態(tài)物體和動(dòng)態(tài)物體均有高光,動(dòng)態(tài)物體不僅接受陰影,而且產(chǎn)生真實(shí)的投影,相對(duì)于上一種方式來說,機(jī)器開銷稍大一些,這種方式使用的最多的烘焙方式。更正:下圖中注釋“烘焙(Mixed)應(yīng)為混合(Mixed)”。
下圖為動(dòng)態(tài)燈光下靜態(tài)物體和動(dòng)態(tài)物體兩種烘焙方式的混合體,這種方式烘焙,靜態(tài)物體和動(dòng)態(tài)物體表面均有真實(shí)的高光和陰影,且燈光在運(yùn)行時(shí)可改變,但靜態(tài)物體表面的光影沒有其它方式精細(xì),對(duì)于運(yùn)行時(shí)需要改變燈光的場(chǎng)景,可采用動(dòng)態(tài)燈光下靜態(tài)物體的烘焙或動(dòng)態(tài)燈光下動(dòng)態(tài)物體的烘焙。

好了,至此對(duì)于四種烘焙方式就和大家討論完了

● Unity夜景烘焙

前面小姐姐以“斯蓬扎宮”日景的烘焙作為切入點(diǎn),和大家一起討論了3D模型導(dǎo)入U(xiǎn)nity3d的方法、Unity3d的簡(jiǎn)單布光和烘焙,并介紹了Unity3d常見的烘焙缺陷及其解決方案和加速烘焙的方法,逐步深入到Unity3d的四種烘焙方式,通過實(shí)例的圖解,相信童鞋們對(duì)unity3d的烘焙已經(jīng)有了進(jìn)一步的理解。實(shí)際應(yīng)用中除了日景的烘焙,也常常涉及到夜景的烘焙。下面還是以“斯蓬扎宮”的場(chǎng)景為例,和童鞋們繼續(xù)討論夜景的烘焙。前面的例子都只使用了一盞模擬太陽的平行光,在下面的例子中將使用多盞燈光來烘焙。

1. 燈光布設(shè)

和3D場(chǎng)景一樣,Unity3d的場(chǎng)景布光也要有主光源,也就是照亮場(chǎng)景的主要光源,其作用除了點(diǎn)亮場(chǎng)景外,還起著主控場(chǎng)景意境和氣氛的作用。相信大家對(duì)“斯蓬扎宮”的場(chǎng)景強(qiáng)控已經(jīng)很熟悉了,對(duì)于這個(gè)場(chǎng)景,小姐姐認(rèn)為夜景應(yīng)保持一份神秘和靜謐,因此考慮在兩層回廊布設(shè)適當(dāng)適量的“宮燈”,燈光顏色采用暖色調(diào)。

在場(chǎng)景中添加如下圖所示的“宮燈”模型,置于回廊頂部,具體位置如下圖所示

2. 烘焙設(shè)置

為“宮燈”模型添加對(duì)應(yīng)的燈光,將等類型設(shè)為點(diǎn)光源“Point”,燈光強(qiáng)度設(shè)為1,燈光顏色設(shè)為橙色,燈光模式設(shè)為混合(Mixed),燈光范圍設(shè)為9左右,為燈光設(shè)置Cookie,并將燈光置于“宮燈”模型下部的地面附近,如下圖所示:

將“宮燈”模型及其燈光一起選中,通過復(fù)制,每層左右兩邊各布置兩組,然后向二層復(fù)制四組,如下圖所示:

3. 夜景烘焙

勾選下圖所示的Mxied Lighting下的“Baked Global Illumination”(也就是采用靜態(tài)燈光下動(dòng)態(tài)物體的烘焙方式進(jìn)行烘焙),然后點(diǎn)擊右下角的“Generate Lighting”進(jìn)行烘焙。

烘焙后的效果如下圖所示,烘焙用時(shí)6.8分鐘(408.155秒)



8個(gè)點(diǎn)光源共同作為主光源點(diǎn)亮了整個(gè)場(chǎng)景,各自產(chǎn)生了限定在一定范圍包內(nèi)的柔和陰影,但是作為主景的獅頭雕還不夠突出,所以考慮在獅頭的上方布設(shè)兩盞模擬射燈的點(diǎn)光源,同時(shí)在獅頭前方的地面上也布設(shè)一盞模擬射燈的點(diǎn)光源,三盞點(diǎn)光源共同作為場(chǎng)景的輔助光源一起點(diǎn)亮獅頭,但不宜過亮。具體設(shè)置如下圖所示:

另外,為了強(qiáng)調(diào)另一端的兩個(gè)裝飾鼎,分別在其附近各布設(shè)一盞點(diǎn)光源,作為裝飾性的輔助光,照亮場(chǎng)景局部,具體設(shè)置如下圖所示:

然后重新烘焙,結(jié)果如下圖所示,烘焙用時(shí)7.4分鐘(448.196秒),要瀏覽這種烘焙運(yùn)行時(shí)的動(dòng)態(tài)效果,可以去前面的網(wǎng)址看視頻。



● Unity混合烘焙

前面討論了四種基本的烘焙形式,但實(shí)際應(yīng)用中,既有靜態(tài)燈光,又有動(dòng)態(tài)燈光,既有靜態(tài)物體,又有動(dòng)態(tài)物體,這種情況下的烘焙就叫混合烘焙。

前面的例子在烘焙時(shí),要么只選擇光照模式為Realtime Lighting下的Realtime Global Illumination,要么只選擇光照模式為Mixed Lighting下的Baked Global Illumination,而系統(tǒng)默認(rèn)兩項(xiàng)都被選擇,如下圖所示,那么到底是該都選擇呢,還是只選擇一項(xiàng)呢?下面給出官方的一段建議,原文如下:

The most flexible way to use the lighting system is to use Baked GI and Realtime GI together. However, this is also the most performance-heavy option. To make your game less resource-intensive, you can choose to disable Realtime GI or Baked GI.

其意思是:使用照明系統(tǒng)最靈活的方法是一起使用Baked GI和Realtime GI(也就是兩項(xiàng)都選擇),但是,這也是性能最沉重的選擇。為了減少資源和時(shí)間消耗,您可以選擇禁用Realtime GI或Baked GI(也就是只選擇一項(xiàng))。

根據(jù)上面官方的建議,靜態(tài)燈光下靜態(tài)物體的烘焙,靜態(tài)燈光選擇Baked的模式,光照模式只選擇Baked Global Illumination;靜態(tài)燈光下動(dòng)態(tài)物體的烘焙,靜態(tài)燈光選擇Mixed模式,光照模式也只選擇Baked Global Illumination,并為動(dòng)態(tài)物體在其運(yùn)動(dòng)范圍內(nèi)添加光探測(cè)器組;動(dòng)態(tài)燈光下靜態(tài)物體的烘焙,動(dòng)態(tài)燈光選擇Realtime模式,光照模式只選擇Realtime Global Illumination;動(dòng)態(tài)燈光下動(dòng)態(tài)物體的烘焙,動(dòng)態(tài)燈光選擇Realtime模式,光照模式也只選擇Realtime Global Illumination,并為動(dòng)態(tài)物體在運(yùn)動(dòng)范圍內(nèi)添加光探測(cè)器組。這樣的匹配方式烘焙場(chǎng)景最節(jié)省硬件開銷和時(shí)間。但對(duì)于混合烘焙方式,靜態(tài)燈光就選擇Mixed模式,動(dòng)態(tài)燈光選擇Realtime模式,也就是在一個(gè)場(chǎng)景的多盞燈光中,有的燈光設(shè)為Mixed,有的燈光設(shè)為Realtime模式,而光照模式Baked GI和Realtime GI兩項(xiàng)都要同時(shí)選擇,這樣Mixed燈光自動(dòng)對(duì)應(yīng)Baked GI,Realtime燈光自動(dòng)對(duì)應(yīng)Realtime GI。此時(shí)有童鞋會(huì)問了,不是說同時(shí)選擇兩種GI方式,會(huì)增加硬件開銷嗎,為什么還要同時(shí)選擇呢,為了得到更真實(shí)的復(fù)雜光影效果,混合烘焙必須同時(shí)選擇兩種GI,但有方法來優(yōu)化場(chǎng)景來緩解額外的硬件開銷。

上面的意思簡(jiǎn)單地圖示如下


對(duì)于一般用戶來說,靜態(tài)燈光下動(dòng)態(tài)物體的烘焙方式足夠用了,這是用的最多的一種烘焙。

火車或汽車出入隧道、室內(nèi)外出入、游戲角色出入涵洞、室內(nèi)開關(guān)燈這樣的場(chǎng)景,使用混合烘焙,光感會(huì)更好。當(dāng)然小姐姐個(gè)人認(rèn)為,使用前面所說的四種基本烘焙方式之一代替,也能獲得好的效果。

有了前面知識(shí)的鋪墊,混合烘焙不再是問題,這里就不進(jìn)行圖解了,有興趣的童鞋可以自己去嘗試。

● Unity室內(nèi)烘焙

下面以一個(gè)小客廳為例,和童鞋們一起討論Unity3d的室內(nèi)烘焙,一方面是對(duì)前面知識(shí)的綜合應(yīng)用,另一方面滿足以下做裝修童鞋的學(xué)習(xí)需求。

話不多說,開工!這個(gè)例子的3D場(chǎng)景如下圖所示:

拆分好的UV如下圖所示

導(dǎo)入U(xiǎn)nity3d后的場(chǎng)景情況如下圖所示:

這個(gè)場(chǎng)景比較簡(jiǎn)單,一個(gè)窗戶、一個(gè)沙發(fā)、一個(gè)茶幾、一個(gè)書柜、兩個(gè)落地?zé)簟⒁粋€(gè)墻面裝飾、還有一個(gè)掛畫、茶幾上一個(gè)杯子、兩盆綠植,這里我們?cè)O(shè)想將場(chǎng)景烘焙成陰天的白晝氣氛,也就是沒有直射太陽光,室外光線完全是大氣折射的太陽光,所以我們確定這個(gè)場(chǎng)景的主光源為從窗戶投射的光線,可以使用Unity3d的面光源置于窗戶附近,但我們這里選用Unity3d的材質(zhì)燈光,也就是將某個(gè)模型的材質(zhì)勾選“自發(fā)光”,這個(gè)模型就成了燈光了。選中窗戶玻璃,勾選其材質(zhì)中的自發(fā)光(Emission),將自發(fā)光強(qiáng)度設(shè)為1.5,發(fā)光顏色設(shè)為白色,如下圖所示:
因?yàn)檫@個(gè)場(chǎng)景不可能有運(yùn)動(dòng)物體,光線也不會(huì)變化,所以選用靜態(tài)燈光下的靜態(tài)物體的方式烘焙場(chǎng)景,所以將自發(fā)光材質(zhì)的Global Illumination(全局光照)設(shè)為Baked,勾選光照面板中的“Baked Global Illumination”,然后烘焙,得到如下圖所示的結(jié)果(烘焙用時(shí)5分鐘):


從上圖可見,場(chǎng)景太暗,但明暗關(guān)系已經(jīng)有了,如果反復(fù)烘焙,太浪費(fèi)時(shí)間,我們?cè)O(shè)想通過photoshop來調(diào)色,需要說明的是,這里所說的調(diào)色不是簡(jiǎn)單的圖片調(diào)色,而是對(duì)整個(gè)場(chǎng)景調(diào)色。如下圖所示,將一個(gè)特殊的色帶文件與相機(jī)關(guān)聯(lián)起來,對(duì)這個(gè)文件調(diào)整,就會(huì)調(diào)整相機(jī)中的場(chǎng)景,這樣我們將這個(gè)文件(png圖片)用ps打開,然后截取一張相機(jī)視圖的圖片,按照?qǐng)D片調(diào)色的方法,對(duì)截取的圖片調(diào)色,然后將圖片調(diào)整的參數(shù)應(yīng)用于那個(gè)色帶文件,保存色帶文件后,Unity3d的場(chǎng)景就回作相應(yīng)的調(diào)整,關(guān)系就是這樣。

下面我們就來調(diào)色,首先抓取相機(jī)視圖的圖片,然后在ps中打開,同時(shí)也將剛所說的色帶文件也用ps打開,如下圖:

首先調(diào)一下截取的相機(jī)視圖圖片的亮度和對(duì)比度,亮度88,對(duì)比度-50,如下圖所示:

然后對(duì)色帶也做這樣的調(diào)整,如下圖所示:

然后保存色帶文件,Unity的相機(jī)視圖就會(huì)作相應(yīng)的調(diào)整,調(diào)整后如下圖所示:

原理大家都明白了吧,這樣就是以用ps靈活地為Unity3d場(chǎng)景調(diào)色了,只要Unity3d烘焙出場(chǎng)景的明暗關(guān)系,剩下的就交給ps了,這樣可以節(jié)省大量反復(fù)測(cè)試烘焙的時(shí)間。按照上面的方法對(duì)相機(jī)視圖進(jìn)行色相飽和度、色彩平衡等調(diào)整后,相機(jī)視圖的場(chǎng)景如下:


好了,場(chǎng)景調(diào)色就到這里。

木地板應(yīng)該有反射,所以我們需要引用Unity3d的“Reflection Probe(反射探測(cè)器)”,在層級(jí)面板空白處右鍵單擊,在彈出的菜單中選擇light下的“Reflection Probe”命令,場(chǎng)景中會(huì)出現(xiàn)一個(gè)四面體線框,如下圖所示,在反射探測(cè)器的檢視面板中按下節(jié)點(diǎn)命令,四面體的四個(gè)面上會(huì)出現(xiàn)黃色下把手,拖動(dòng)可以調(diào)節(jié)探測(cè)器的大小,按下探測(cè)器檢視面板中的移動(dòng)按鈕,可以調(diào)整探測(cè)器的位置,用這兩個(gè)命令配合,將探測(cè)器調(diào)至和房間一樣大,或者說讓探測(cè)器完全包絡(luò)這個(gè)房間,烘焙的時(shí)候,會(huì)將整個(gè)房間烘焙成一個(gè)比較小的全景圖貼在探測(cè)器上,供具有反射的材質(zhì)映射來實(shí)現(xiàn)真實(shí)反射。這里說明一下,當(dāng)場(chǎng)景比較復(fù)雜時(shí),可以用多個(gè)反射探測(cè)器拼合來滿足場(chǎng)景的外形,場(chǎng)景中不需要反射的地方,就不需要布置反射探測(cè)器了。

反射探測(cè)器布置好后,需要重新烘焙,反射數(shù)據(jù)是通過烘焙獲得的。如果熟悉了,烘焙之前就布置好反射探測(cè)器,免得重復(fù)烘焙。烘焙之后結(jié)果如下

上圖反射效果不太好,下面我們?yōu)槟镜匕寮右粋€(gè)實(shí)時(shí)反射,效果如下:

現(xiàn)在我們將玻璃的材質(zhì)燈光關(guān)閉,用平行光來模擬陽光,重新烘焙(用時(shí)6分鐘左右)并開啟反射后效果如下:

在這個(gè)例子中引入了ps的后處理調(diào)色,以避免為達(dá)到好的色調(diào)和顏色及明暗對(duì)比反復(fù)烘焙浪費(fèi)很多時(shí)間,好了,這個(gè)例子就討論到這。

● Unity沙漠庭院烘焙

下面和童鞋們?cè)儆懻撘粋€(gè)“沙漠庭院(The Courtyard)”的烘焙,也算是對(duì)Unity烘焙的綜合應(yīng)用,其3D場(chǎng)景如下圖所示:


因?yàn)椴鸱值腢V比較多,這里就不上圖了,導(dǎo)入U(xiǎn)nity后的場(chǎng)景如下圖所示:


日景烘焙,按下圖設(shè)置模擬太陽的平行光和光照參數(shù)

為場(chǎng)景中模型燈設(shè)置材質(zhì)燈光參數(shù)如下圖,這里第二次用到材質(zhì)燈光,然后點(diǎn)擊光照檢視面板中的“Generate Lighting”,開始烘焙場(chǎng)景。

噔噔蹬蹬,經(jīng)歷28分鐘的烘焙,結(jié)果如下

這個(gè)場(chǎng)景是官方的。沒有提供3D模型,小姐姐想了很多辦法才導(dǎo)出FBX文件,面數(shù)高達(dá)300多萬,測(cè)試烘焙了幾次,光照?qǐng)D好多都設(shè)到了4096x4096,總有問題,如下圖所示:


那這些烘焙缺陷如何消除呢?前面小姐姐說過,模型面數(shù)太多是導(dǎo)致烘焙缺陷的重要因素,因?yàn)橥瑯臃直媛实墓庹請(qǐng)D,模型面數(shù)越多,分配給每個(gè)面的區(qū)塊就越小,模型面數(shù)越少,分配給每個(gè)面的區(qū)塊就越大,區(qū)塊越大,光照?qǐng)D越清晰,區(qū)塊越小,光照?qǐng)D被拉扯得越嚴(yán)重,缺陷就會(huì)越多。下圖為官方的模型:

下圖為小姐姐用低面數(shù)最優(yōu)化精簡(jiǎn)單面建模方法重新構(gòu)建的模型(花了兩天時(shí)間,總面數(shù)50萬,降低了6倍),

另外,小姐姐烘焙這個(gè)場(chǎng)景后,發(fā)現(xiàn)模型的貼圖有問題,如下圖所示:





上面這些貼圖問題其實(shí)是很多人經(jīng)常遇到的,現(xiàn)在我們回到3d中,看看3d中的情況,如下圖所示

由上圖可見,3dmax場(chǎng)景打開后,模型顯示破破爛爛,這也是很多網(wǎng)友提問的問題,網(wǎng)上解答的不是讓修改顯示驅(qū)動(dòng),就是模型偏離原點(diǎn)太遠(yuǎn),小姐姐認(rèn)為不是這些原因造成的模型破爛,按上圖的標(biāo)注勾選背面去除,立即就消除了模型的顯示破爛,如下圖所示:

由下圖可見,Unity中的問題在3dmax場(chǎng)景中也存在


另外,貼圖的分辨率為4096X4096,精度很高,為什么在Unity中很虛呢?這里不得不和大家討論一下UV問題,通常情況下,很多人在3dmax中習(xí)慣用UVW map來調(diào)整模型的材質(zhì)貼圖,對(duì)于簡(jiǎn)單的模型,這種方法沒問題,但是對(duì)于復(fù)雜的模型,用標(biāo)準(zhǔn)的平面、圓柱、球面等貼圖坐標(biāo),橫豎都不正確,就像上面的圖示一樣,這種現(xiàn)象稱為UV扭曲或拉伸,這是不正常的貼圖。要解決UV扭曲、拉伸或擠壓,必須掌握UV拆分(也稱為“展UV”,通俗地講就是展平UV),前面提到過拆分UV,一聽到拆分UV,很多童鞋一個(gè)頭兩個(gè)大,覺得拆分UV很難掌握,這里小姐姐不想對(duì)拆分UV進(jìn)行深解,只是通過對(duì)比,讓大家對(duì)UV拆分有個(gè)大概的概念。

為了找到上面例子中貼圖被扭曲和拉伸的原因,我們將模型的貼圖換成棋盤格,因?yàn)樯厦胬又械馁N圖不容易看出問題,棋盤格材質(zhì)是所有3D軟件用來顯示UV排列的一種方式。

下圖是上面的實(shí)例場(chǎng)景模型貼圖換成棋盤格的情況

下面我們一塊一塊來圖示分析



棋盤格的排列代表模型的UV坐標(biāo)情況,或者說棋盤格的排列是由模型的貼圖坐標(biāo)控制的,棋盤格排列有問題,貼圖一定也會(huì)有問題。從上面的圖解可見,場(chǎng)景貼圖的UV坐標(biāo)是不正確的,棋盤格線性排列,貼圖紋理一定會(huì)朝一個(gè)方向;棋盤格錯(cuò)亂,貼圖紋理也一定錯(cuò)亂;棋盤格扭曲,貼圖紋理也一定扭曲;棋盤格密集(擠壓)或拉伸,貼圖紋理一定會(huì)變虛,因?yàn)槔鞎?huì)導(dǎo)致紋理被拉大,擠壓會(huì)導(dǎo)致紋理皺皺巴巴,這兩種情況都會(huì)使貼圖變得模糊。上面的圖示中模型貼圖局部密集,相信大家都遇到過。

為了矯正不正確的貼圖坐標(biāo),模型必須使用3dmax的Unwrap UVW修改器進(jìn)行手工UV拆分,或者叫手工展UV(展平UV坐標(biāo)),如下圖所示。對(duì)于材質(zhì)的紋理貼圖坐標(biāo),使用系統(tǒng)自動(dòng)拆分UV,常常是不正確的,所以必須使用手工來拆分。對(duì)于使用C4D、Maya、犀牛、Su的用戶,也有相應(yīng)的功能,這里就不贅述了。

拆分或展平的UV坐標(biāo)是被保存在貼圖通道中的,貼圖通道設(shè)置在Unwrap uvw和材質(zhì)面板各有一個(gè),如下圖所示。

Unwrap uvw面板的貼圖通道(Map Channel)用來設(shè)置拆分的UV坐標(biāo)保存在哪個(gè)通道,通道可以有8個(gè)。材質(zhì)面板中的貼圖通道(Map Channel)用來設(shè)置這個(gè)材質(zhì)貼圖的排列受哪個(gè)UV坐標(biāo)的貼圖通道控制,系統(tǒng)默認(rèn)固有色(或過度色)貼圖受通道1(即Map channel 1)控制,展UV(Unwrap uvw)修改器面板的貼圖通道(Map Channel)默認(rèn)是2,因?yàn)橐话闱闆r下都是用UVW Map調(diào)整貼圖坐標(biāo),這個(gè)UV坐標(biāo)占據(jù)通道1,有的童鞋使用展平修改器時(shí),發(fā)現(xiàn)模型的貼圖沒有變化,是因?yàn)檎蛊叫薷钠鞯馁N圖通道和材質(zhì)的貼圖通道不一致,模型的貼圖沒有受到你正在使用的材質(zhì)貼圖展平UV的控制,如下圖所示:

展平修改器一般情況下是用于控制光照貼圖的(也就是控制烘焙貼圖),光照貼圖默認(rèn)占據(jù)通道2,所以展平修改器的通道默認(rèn)是2,有時(shí)因?yàn)槟P偷馁N圖坐標(biāo)不正確,需要手工拆UV,也就是需要使用一下展平修改器,此時(shí)必須將通道改為1,這個(gè)大家必須注意,否則拆了半天,材質(zhì)貼圖沒變化。

剛才小姐姐說,貼圖通道可以有8個(gè),通道1默認(rèn)是分配給材質(zhì)固有色貼圖的,通道2默認(rèn)是分配給光照貼圖的,其他6個(gè)可以用來展平法線貼圖、高光貼圖、陰影貼圖、AO貼圖等等,一般我們只需要過度色貼圖和光照貼圖兩個(gè)通道。

UV展平后有兩種用途,一種用于美工在photoshop中繪制貼圖,另一種用于控制紋理貼圖,沒有美術(shù)功底的童鞋,當(dāng)然不會(huì)繪制貼圖啦,那就用展平的UV坐標(biāo)來控制紋理貼圖好了。

我們手工展UV是為了矯正不正確的紋理貼圖,所以展平UV的貼圖通道就改為1。

展平UV大家可以想象成拆盒子一樣,要拆盒子,得有縫,沒有縫,是拆不開的,拆UV,一般也得有縫,UV縫可以系統(tǒng)自動(dòng)定義,也可以手工繪制,系統(tǒng)定義的縫經(jīng)常不是我們所想要的,所以對(duì)于控制材質(zhì)貼圖的UV,我們一般都是手工來繪制拆縫的,這里就不具體繪制拆縫了。拆縫繪制好后,就可以展UV了。展平UV修改器的展平方式很多,如下圖所示:

正確拆分(或展平)的UV,棋盤格應(yīng)該是方方正正(長(zhǎng)寬相等或近似相等),排列整齊,這樣貼圖貼上去才沒問題,如下圖所示,絕對(duì)不允許排列錯(cuò)亂、扭曲、拉伸或擠壓,否則就像上面的例子一樣。


另外在一個(gè)物體中,對(duì)于一種材質(zhì),棋盤格的密度必須相等,除非特殊要求。棋盤格的除了長(zhǎng)寬相等、排列規(guī)整外,還必須合理,什么是合理呢?例如下圖中的回轉(zhuǎn)體,網(wǎng)上很多例子都將其端面的棋盤格排列成下圖所示:

小姐姐個(gè)人認(rèn)為回轉(zhuǎn)體的端面,應(yīng)該讓棋盤格繞環(huán)向(或圓周方向)排列,為什么呢,假設(shè)這個(gè)物體是個(gè)木頭,端面的紋理應(yīng)該是一圈一圈的年輪,按照上圖的排列,木紋貼上去,紋理肯定是線性的,這是不正確的,再假設(shè)這個(gè)物體是一個(gè)機(jī)械零件,端面的紋理應(yīng)該是車削加工的刀紋,一圈一圈的,按照上面的排列,金屬紋理貼上去,也不會(huì)又一圈一圈的刀紋,而是線性紋理,這是不合理的UV拆分,為什么在這里要強(qiáng)調(diào)這個(gè)問題呢,因?yàn)槲覀兦懊嫠懻摰膱?chǎng)景,好多UV坐標(biāo)有問題的物體就是回轉(zhuǎn)體。

小姐姐對(duì)上面例子的模型重新拆分貼圖UV,并使用“條帶展平”拆分后得到下圖所示的效果,錯(cuò)誤的UV坐標(biāo)得到了矯正,而且上下面的棋盤格沿圓周方向排列,這才是合理的,如果貼上磚紋,紋理自然會(huì)環(huán)向分布。由圖可見,UV坐標(biāo)消除了錯(cuò)亂、扭曲、拉伸和擠壓

同理,對(duì)其他有問題的模型重新拆分貼圖UV后,效果如下:


通過手工拆分UV之后,錯(cuò)亂、扭曲、拉伸的UV得到了矯正。這里說明一下,對(duì)于一個(gè)物體,材質(zhì)相同的部分,除了UV坐標(biāo)正確、合理之外,棋盤格大小必須一致,也就是UV坐標(biāo)的密度必須相同,如果UV密度不同,就像你的手心手背一樣。另外同一場(chǎng)景中的不同物體,如果材質(zhì)及貼圖相同,UV密度也必須相同,這樣才看上去協(xié)調(diào)。

那么如何讓一個(gè)物體的所有面的UV密度相同呢?按照下圖所示的方法來完成:

一個(gè)物體各個(gè)面的UV密度統(tǒng)一了之后,那材質(zhì)和貼圖相同的不同物體如何統(tǒng)一呢?很簡(jiǎn)單,選擇每個(gè)物體,點(diǎn)擊上圖中第六步的圖標(biāo),所有物體的UV就全部均勻一致了,如下圖所示:

將貼圖去換回原本的貼圖后,貼圖不再有錯(cuò)亂、扭曲、拉伸和擠壓現(xiàn)象了,如下圖所示:

UV正確拆分后,不需要太高分辨率的貼圖就可以讓模型的貼圖很清晰,貼圖分辨率太高,烘焙和實(shí)時(shí)運(yùn)行時(shí)機(jī)器負(fù)載太大。

手工拆分貼圖UV后,也可以將其應(yīng)用于光照貼圖,這就需要通過貼圖通道的復(fù)制將材質(zhì)貼圖的UV復(fù)制給通道2,當(dāng)然也可以用機(jī)器自動(dòng)展平光照貼圖的UV。

好了,廢話就說到這里,矯正了模型的貼圖坐標(biāo)之后,下面我們就來重新烘焙上面的例子,按之前設(shè)定的參數(shù),重新烘焙后結(jié)果下(有時(shí)約12分鐘):




添加燈光輝光和地面模糊反射之后的效果如下:

由圖可見,先前的問題都已經(jīng)消除掉了。

這個(gè)場(chǎng)景的夜景烘焙后續(xù)會(huì)補(bǔ)充,下面大家一起來看看一個(gè)小區(qū)室外場(chǎng)景的烘焙

● 社區(qū)室外日景烘焙

這個(gè)案例的3D場(chǎng)景截圖如下所示,這個(gè)場(chǎng)景原本900多萬面,小姐姐用單面建模方法重新構(gòu)建模型,只用了4.5萬面,用于VR和游戲的場(chǎng)景必須用精簡(jiǎn)建模,以保證手機(jī)端的流暢運(yùn)行。

在3D軟件中拆分每個(gè)物體的UV于通道2,一般童鞋一個(gè)物體拆分一個(gè)UV,實(shí)際上多個(gè)物體可以共享一個(gè)光照?qǐng)D的UV,也就是選中多個(gè)物體一起拆分,得到一個(gè)UV,這樣這些物體就共享一個(gè)UV了,拆分好UV后倒入U(xiǎn)3D,如下圖所示:

這個(gè)場(chǎng)景日景的燈光比較簡(jiǎn)單,用一盞模擬太陽光平行光作為主光源,并勾選陰影,用天光和環(huán)境光作為輔助光源彌補(bǔ)主光源的盲區(qū),其他參數(shù)按前面例子的方法設(shè)置,有前面知識(shí)的鋪墊,相信大家可以自行完成烘焙的相關(guān)參數(shù)設(shè)置,小姐姐烘焙完成的結(jié)果截圖如下(用時(shí)12分鐘):










烘焙完成后大家可按照前面小姐姐介紹的方法用ps對(duì)場(chǎng)景進(jìn)行潤(rùn)色,當(dāng)然不是對(duì)圖片調(diào)色,而是借用圖片的調(diào)節(jié),來調(diào)整整個(gè)場(chǎng)景的顏色,以避免在Unity中重復(fù)烘焙。這里小姐姐就不上圖了,相信大家都可以自行完成這個(gè)操作的。

● 社區(qū)室外夜景烘焙

這個(gè)場(chǎng)景的夜景燈光相對(duì)來說比較復(fù)雜,小姐姐設(shè)想以建筑的亮化霓虹燈和路燈共同作為主光源照亮場(chǎng)景,用射燈作為輔助性裝飾輔助光點(diǎn)綴建筑,同時(shí)用微弱的天光和環(huán)境光也作為輔助光照亮建筑的邊緣,燈光布設(shè)截圖如下:(待續(xù))

說明:后面更精彩,今天將全部更新完畢,請(qǐng)隨時(shí)關(guān)注!

總結(jié)

以上是生活随笔為你收集整理的unity3d烘焙教程 持续更新中【2020】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。