當前位置:首頁 >教程首頁 > 遊戲程序 > Unity3D遊戲開發工程師班 >幹貨分享!unity中的Light probe解析

幹貨分享!unity中的Light probe解析

發布時間:2019-11-01 09:25:31

今天分享的幹貨是unity中的Light probe,我們在對unity中的場景添加燈光進行渲染的時候,有些為了突出角色會添加很多實時光源。但這些實時光源會使內存的消耗過大,從優化的角度出發,應該首先想辦法提高間接光的亮度。而如果我們要增加動態物體的間接光照的話,就需要用今天我們要提及的Light Probe。

1、Light Probe原理

LightProbe主要解決了如何在動態對象和角色上使用烘焙的照明信息。它在計算的時候采用的是球諧函數來對球麵上的亮度信息進行編碼。核心就是球麵亮度信號編碼和重建。

1.webp.jpg

上圖表示的就是一個原始的亮度信號會被分解成一係列帶縮放參數的基函數之和,如果我們知道這些基函數的縮放係數的話,就可以在運行時快速的重建原始的亮度信息。

所以lightprobe的內存消耗是很低的,隻需要將縮放係數與其對應的基函數相乘之後再求和的結果就是近似的原始信號。

在Unity中,Baked GI的LightProbe采用的3階球諧函數,RealtimeGI采用的是2階球諧函數。

2、場景中的運用

為了進一步理解我們在場景中創建一個如圖所示的半封閉空間來模擬房間。關閉掉場景中默認的DirectionalLight

2-1.png

然後在左上角再添加一盞點光源,為了方便觀察將光源的顏色改為紅色或者其他,稍微增加光源強度intensity以及範圍range。

2-2.webp.jpg

當前中間的兩塊擋板都是static,所以目前看起來所接收的光照正常,但是如果我們把第一塊取消勾選static,即這塊物體時移動的話,就需要在光源周圍添加light probe,將光源的數據進行分解然後傳遞給動態物件,才會得到正確的光照。

3、創建light probe

點擊Hierarchy的Create,在Light中選擇最後一個Light Probe Group

3-1.webp.jpg

然後會看到場景裏麵出現了幾個相連的小球立方,那些小球就是用來獲取計算原始光源。

3-2.webp.jpg

我們將light probe拉到光源附近,ctrl加左鍵可以選擇單個小球,然後我們把後麵的四個小球選中ctrl + d進行複製,複製完成以後拉開距離,就得到如下圖所示的light probe

3-3.webp.jpg

然後打開lighting settings用默認參數點擊Generate Lighting對整個場景進行燈光烘焙

3-4.webp.jpg

3-5.webp.jpg

烘焙完成以後選中我們設置為了no static的第一塊板,會發現它連了三個小球,而這三個小球就是在進行light probe球諧函數計算的時候,參與計算的三個小球,整塊板所有的光線信息都是來源於這個三個小球所接受的信息權重計算後進行插值得到的結果

3-6.webp.jpg

所以,在unity中,light probe會根據物體所在的位置,選擇四麵體,然後使用組成四麵體的點進行插值。

而且,light probe隻針對no static的物件進行計算,不對static的物體有作用。

所以如果我們在場景中選擇第二塊藍色板的話,是不用有相關的probe小球出現的。

3-7.webp.jpg

另外,如果我們在第一塊板的附近放一個cube,正常情況下在cube身上會接收到來自木板的反射光,但是實際上卻是模板對cube沒有任何的光源反射影響

3-8.webp.jpg

而當我們把木板改成static後,再次進行烘焙就會得到完全不一樣的效果

3-9.webp.jpg

Cube得到了大量來自木板的反射,由此可見,被light probe作用的no static物體,其自身是不會產生反射的。

來源:  Thepoly 微信公眾號

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答
×

確定