Unity Progress lightmapper漸進光照的學習記錄

參考

[2018年4月25號] 使用Unity機器學習代理工具快速掌握強化學習:https://v.qq.com/x/page/l0672d8nwuk.html

 

Realtime GI介紹

Bake GI, Progressive Lightmapper,Light Probes Reflection介紹

Mixed GI Bake indirect,ShadowMask,Subtractive介紹

 

沒有光線烘焙的場景,只有直接光照和環境光,場景偏暗 

光線烘焙的場景,有直接光照和間接光,場景明亮且真實


unity中的光照系統

在Unity中,光照的計算中有兩部分,一是直接光照,二是間接光照。

燈光有三種模式,分別是Realtime,Baked,Mixed。

物體分爲兩種模式Lightmap Static和Lightmap NonStatic。

 

直接光照,間接光照

直接光是成光線經過物體一次放射進入攝像機,而間接光是光源經過多次放射進入攝像機的效果。不做處理的情況下,unity場景中只有直接光照。但是間接光照使場景看起來真實,因爲沒有光線直接到達的地方也會被不同程度的照亮,就像真實的世界裏的規則。

你會覺得有時候沒有開啓GI,物體背光面也會被照亮,那是因爲開啓了環境光,環境光會照亮所有面,當你關閉環境光會發現背光面是純黑的。

靜態物體,動態物體

對於物體,只有Lightmap static的物體參與光線烘焙,參與烘焙我們下稱爲靜態物體,反之稱爲動態物體,動態物體想分享烘焙光的話,需要藉助光探針。

 

燈光三種模式Realtime,Baked,Mixed區別

Realtime GI:使用Enlighten提前計算(非實時)多個表面之間的光路,所有可以提供實時的間接光。、

特點:Realtime光和Mixed光和靜態物體的參與光照烘焙,烘焙結束後,直接光和間接光都會實時計算。

 

Bake GI:直接和間接光照以及陰影都被烘焙在一張額外的貼圖上,場景中不會再實時計算光照。

特點:Baked光和Mixed光和靜態物體的參與光照烘焙,烘焙結束後,場景中直接光和間接光都讀貼圖。

 

Mixed GI:保留直接光照的計算,間接光照被烘焙。

特點:所有光和和靜態物體的參與光照烘焙,烘焙後直接光實時計算,而間接光讀貼圖。

 


重要參數

RealtimeGI的參數不能單個修改,所有參數在Lightmap Parameter中設置High,medium,low

下面是BakeGI的重要參數解釋

Indirect Sample:每個像素點進行間接光采樣的次數。

Lightmap resolution每個單位(一般是每米)的分辨率,越大效果越好。

 

當一個1米見方的cube,Indirect Sample設爲10,Lightmap resolution設爲4。1m對應4個像素,一個一平方米的UV對應16個像素,一個正方體6個面,則有6*16=96個像素,每個像素10詞采樣,則要96*10=960次採樣。

 

Bounces:光線反彈的次數,每增加1,計算時間都會顯著增加,最高爲4.

LightMapPadding:光照貼圖中不同面的間距。

Direction Mode選擇方向性會增加額外的貼圖,但是如果選擇非方向性,當你轉動已經完成光照貼圖烘焙的物體是,光照會出錯。

Filter:對噪點進行平滑度的處理,同時對物體連接處的陰影進行校正。

Filter Advance 兩種模式

Gaussian(用過PS的都知道高斯模糊)陰影邊緣柔和

Trous陰影邊緣會變硬,同時對物體連接處的陰影進行校正。


Progressive向比較Elighten的優勢:1.優先烘焙Scene中看見的區域2.可以一邊烘焙一邊看效果,可以暫停,可以強制結束。

參數的意義

 

值得注意的是,realtimeGI的UVchart大小不能單獨修改,但是BakeGI的UVchart大小可以修改,你甚至可以修改不同的物體對應的UVChart的大小,數值越大,上邊的光照貼圖的紋理約精細。

 

UV Overlap的問題處理

就是在Unity生成光照貼圖UV的時候,UV之間的間距過於接近,造成不同物體的UV共用了同一個像素點造成的錯誤。

解決:調整GenerateUV的間距。

模型ImportSetting中,GenerateUV-Advance-Pack Margin調大。

但是UV間距增加,每張圖的UV容量會變少,可能導致貼圖數量增加,從而導致內存增加。

 

光照貼圖的接縫

同一個物體上的UV展開,有接縫,導致最後的效果,同一個物體上有一條明顯的光照分界線。

解決:MeshRender中,勾選Stitch Seams。


光照探針

光照探針,對場景中個別的點接受的直接光照和間接光照進行記錄,形成空間陣列,當物體出於陣列中間時,物體表面的光照數據,會根據它周圍的光照探頭,進行差值(或者某種算法)計算。

通常來講,接受光照探頭的物體,不應該大於八個光探針規定的正方體區域,當單個物體較大的時候,超過了區域的時候,上面的效果會失真,這時候需要使用Light probe Proxy Volume,可以爲大型的動態物體提供預先計算的光照信息。

 

放射探針的使用

場景中某個點的視覺環境可以用Cubemap表示,用於着色器採樣,實現反射效果;

放射探針都由在一個規定的範圍,該範圍內的所有物體的放射信息都由該探針記錄,當場景中有很多金屬物品時候要注意使用放射探頭,因爲金屬對放射敏感。


Mixed GI保留直接光照的信息(可以變動),間接光照烘焙(固定不變)。

例子燈光小幅度的搖晃,對於全局的間接光照影響不大,但是直接光照的變動還是明顯的。

Mixed的三種模式

Bake Indirect:只烘焙間接光照,直接光和陰影實時計算

Shadow Mask:對於靜態物體,陰影會被烘焙到shadowmask貼圖,沒有實時陰影的效果。

Subtractive:對於靜態物體,直接和間接光照都烘焙到貼圖上。對於動態物體,高光動態,而且可以在靜態物體上投射主方向光陰影。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章