Unity的Light probe解析:
1、Light Probe原理文章源自四五設計網-http://www.wasochina.com/22795.html
LightProbe主要解決了如何在動態對象和角色上使用烘焙的照明信息。它在計算的時候采用的是球諧函數來對球面上的亮度信息進行編碼。核心就是球面亮度信號編碼和重建。文章源自四五設計網-http://www.wasochina.com/22795.html
上圖表示的就是一個原始的亮度信號會被分解成一系列帶縮放參數的基函數之和,如果我們知道這些基函數的縮放系數的話,就可以在運行時快速的重建原始的亮度信息。文章源自四五設計網-http://www.wasochina.com/22795.html
所以lightprobe的內存消耗是很低的,只需要將縮放系數與其對應的基函數相乘之后再求和的結果就是近似的原始信號。文章源自四五設計網-http://www.wasochina.com/22795.html
在Unity中,Baked GI的LightProbe采用的3階球諧函數,RealtimeGI采用的是2階球諧函數。文章源自四五設計網-http://www.wasochina.com/22795.html
2、場景中的運用文章源自四五設計網-http://www.wasochina.com/22795.html
為了進一步理解我們在場景中創建一個如圖所示的半封閉空間來模擬房間。關閉掉場景中默認的DirectionalLight文章源自四五設計網-http://www.wasochina.com/22795.html
然后在左上角再添加一盞點光源,為了方便觀察將光源的顏色改為紅色或者其他,稍微增加光源強度intensity以及范圍range。文章源自四五設計網-http://www.wasochina.com/22795.html
當前中間的兩塊擋板都是static,所以目前看起來所接收的光照正常,但是如果我們把第一塊取消勾選static,即這塊物體時移動的話,就需要在光源周圍添加light probe,將光源的數據進行分解然后傳遞給動態物件,才會得到正確的光照。文章源自四五設計網-http://www.wasochina.com/22795.html
3、創建light probe文章源自四五設計網-http://www.wasochina.com/22795.html
點擊Hierarchy的Create,在Light中選擇最后一個Light Probe Group
然后會看到場景里面出現了幾個相連的小球立方,那些小球就是用來獲取計算原始光源。
我們將light probe拉到光源附近,ctrl加左鍵可以選擇單個小球,然后我們把后面的四個小球選中ctrl + d進行復制,復制完成以后拉開距離,就得到如下圖所示的light probe
然后打開lighting settings用默認參數點擊Generate Lighting對整個場景進行燈光烘焙
烘焙完成以后選中我們設置為了no static的第一塊板,會發現它連了三個小球,而這三個小球就是在進行light probe球諧函數計算的時候,參與計算的三個小球,整塊板所有的光線信息都是來源于這個三個小球所接受的信息權重計算后進行插值得到的結果
所以,在unity中,light probe會根據物體所在的位置,選擇四面體,然后使用組成四面體的點進行插值。
而且,light probe只針對no static的物件進行計算,不對static的物體有作用。
所以如果我們在場景中選擇第二塊藍色板的話,是不用有相關的probe小球出現的。
另外,如果我們在第一塊板的附近放一個cube,正常情況下在cube身上會接收到來自木板的反射光,但是實際上卻是模板對cube沒有任何的光源反射影響
而當我們把木板改成static后,再次進行烘焙就會得到完全不一樣的效果
Cube得到了大量來自木板的反射,由此可見,被light probe作用的no static物體,其自身是不會產生反射的。


評論