Unity3D-光照貼圖技術

 

概念

Lightmapping光照貼圖技術是一種加強靜態場景光照效果的技術,其優勢是能夠經過較少的性能消耗使靜態場景看上去更加真實,豐富,更加具備立體感;缺點是不能用來實時地處理動態光照。當遊戲場景包含了大量的多邊形時,實時光源和陰影對遊戲的性能的影響會很大。這時使用Lightmapping技術,將光線效果預渲染成貼圖使用到多邊形上模擬光影效果。app

烘焙參數

Object選項卡

「All」組中的參數

 

Lightmap Static:選中則表示該物體將參與烘焙。性能

Scale In Lightmap:分辨率縮放,可使不一樣的物體具備不一樣的光照精度。這樣能夠根據實際場景,令遠景中的物體採用較低的分辨率,節省光照貼圖的存儲空間。而較近的物體採用較高的分辨率,使貼圖更加逼真。spa

Lightmap Index:渲染時所使用的光照貼圖索引。值爲0,表示渲染時使用烘焙出來的第一張光照圖;值爲255,表示渲染時不使用光照圖。htm

Tiling X/Y和Offset X/Y共同決定了一個遊戲對象的光照信息在整張光照圖中的位置,區域。對象

「Lights」中的參數

Lightmapping:有3種類型可選索引

  1)RelatimeOnly:光源不參與烘焙,只做用於實時光照。遊戲

  2)Auto:表示光源在不一樣的狀況下做不一樣的響應。在烘焙時 ,該光源會做用於全部參與烘焙的物體;在實際遊戲運行中,該光源會做爲實時光源做用於那些動態的或者沒有參與過烘焙的物體 ,而不做用於烘焙過的靜態物體。在使用Dual Lightmaps的狀況下,對於小於陰影距離 (shadow Distance,Unity中用於實時生成陰影的範圍,範圍以外將不進行實時生成陰影)的物體 ,該光源將做爲實時光源做用於這些物體 ,不論是靜態仍是動態 。it

  3)表示光源只在烘焙時使用,其餘時間將不做用於任何物體。io

Color:光源顏色。效率

Intensity:光線強度。

Bounce Intensity:光線反射強度。

Baked Shadows:烘焙陰影。有三種類型能夠選擇

  1)Off:光源對象不產生陰影。

  2)On(Realtime:Hard Shadows):產生輪廓生硬的陰影。

  3)On(Realtime:Soft Shadows):產平生滑的陰影。

Shadow Samples:陰影採樣數,採樣數越多生成陰影的質量越好。

Shadow Angle:光線衍射範圍角度。

Bake選項卡

 

Mode:映射方法。

  1)Single Lightmaps:最簡單直接的方法,對性能及空間的消耗相對較小。能夠很好地表現大多數靜態場景的光影效果。

  2)Dual Lightmaps:在近處使用實時光照和部分Lightmap光照,在遠處則使用Lightmap光照,同時在實時光影和靜態光影之間作平滑過渡,使得動態光照和靜態光照能夠很好的融合。

  3)Directional Lightmaps:一方面將光影信息保存在光照貼圖上,同時還將收集到的光源方向信息保存在另外一張貼圖中,從而能夠在沒有實時光源的狀況下完成Bump/Spec映射,同時也還原了普通光照圖的光影效果。

Quality:生成光照貼圖的質量。

Bounces:光線反射次數,次數越多,反射越均勻。

Sky Light Color:天空光顏色。

Sky Light Intensity:天空光強度,值爲0時,天空色無效。

Bounces Boost:增強間接光照,用來增長間接反射的光照量,從而延續一些反射光照的範圍。

Bounces Intensity:反射光線強度的倍增值。

Final Gather Rays:光照圖中每個單元採光點用來採集光線時所發出的射線數量,數量越多,採光質量越好。

Interpolation:控制採光點顏色的插值方式,0爲線性插值,1爲梯度插值。

Interpolation Points:用於插值的採光點個數。個數越多,結果越平滑,可是過多的數量也可能會把一些細節模糊掉。因此說採光點並非越多越來,這容易致使過分平滑。

Ambient Occlusion:環境光遮蔽效果。

LOD Surface Distance:用於從高模到低模計算光照貼圖的最大世界空間距離。相似於從高模到低模來生成發現貼圖的過程。

Lock Atlas:選中,則會將全部的光照圖區域鎖定,即將物體使用光照圖相關的Tiling X/Y和Offset X/Y屬性鎖定,同時也將不能夠再調整光照貼圖的分辨率屬性以及添加新的烘焙物體到光照圖。

Resolution:光照貼圖分辨率。勾選視圖窗口右下角Lightmap Display面板的ShowResolution選項,便可顯示單元大小。假設Resolution爲50,那麼在10*10個單位面積的平面網格上將佔用光照貼圖上500*500個像素的空間。

Padding:不一樣物體的烘焙圖的間距。

Maps選項卡

Light Probes:用於設置當前使用的Light Probes Group的引用。

Array Size:設置光照貼圖個數。

Compressed:啓用使用壓縮紋理格式。

烘焙

Bake Scene有三個選項:

1)Bake Scene:烘培整個場景,若是場景中有編輯好的Light Probes,那麼也同時烘焙Light Probes。

2)Bake Selecte:只烘焙選擇的部分。採用Bake Selected功能在原有基礎上進行添加或者更新,同時系統會保留以前的光照圖。這樣不會由於部分改動而須要從新烘焙整個場景,只須要烘焙改動的部分,大大提升了烘焙效率。

3)Bake Probes:只烘焙Light Probes。

示例

1 建立一個項目,在場景中繪製以下:

 

選中Cube,在Inspector面板中勾選Static,這樣可使得Cube參與烘焙。

2 打開菜單欄中Window->Lightmapping選項,會彈出Lightmapping視圖。此時選中場景中的Directional Light,在Lightmapping視圖中的Object標籤頁中會出現對光源的設置。參數設置以下:

3 Bake標籤頁下參數設置:

                                                          

4 在Scene視圖右下角的Lightmap Display對話框中勾選Show Resolution複選框,就能夠看到光照圖在模型上的分辨率。

5 單擊Lightmapping視圖右下角的Bake Scene,選中Bake Scene映射模式,就開始生成Lightmaps。

先後對比效果以下:

1)烘焙後:

2)烘焙前:

 

注:必須將plane的屬性設置爲Static,不然Cube將不會有陰影顯示。

沒有將plane的屬性設置爲Static,效果圖以下所示:

 

寫代碼是一種藝術,甚於蒙娜麗莎的微笑。

相關文章
相關標籤/搜索