環境遮閉(Ambient Occlusion, AO)著色技術已經被大多數 3D 繪圖軟體採用,用來模擬全域照明的間接光效果。
環境遮閉的假設是:當所在位置不存在光源時,如果周圍的障礙物愈多,能夠到達該位置的光線應該愈少(被擋住的光線愈多),因此看起來就愈暗。下圖是 Blender 的 AO 效果,沒有任何燈光。其中位置 1 的角隅兩面有障礙物,所以在場景中看起來最暗;位置 2 只有一面有障礙物,看起來次暗;位置 3 周圍沒有障礙物,最亮。
影響環境遮蔽效果的一項重要參數是衰減距離(Attenuation Distance, Properties 視窗 –> World 群組 –> Gather 面板),這是從場景中模型表面上的任一點向外搜尋障礙物的距離(搜尋的範圍是一個半球),超過這個距離的障礙物,就不考慮它的遮蔽效果。比如上圖中位置 1 和 2 相距 5 個 Blender 單位(BU),衰減距離是 2,因此在位置 4 的亮度就會跟位置 3 一樣(距最近的障礙物 2.5 BU,障礙物的遮蔽效果被忽略)。
另一個影響成像品質的參數是 Gather 面板裡的 Samples。Sample(取樣)如果不夠,容易產生低對比的顆粒噪點。但愈高的取樣數,需要愈久的著色時間。
AO 並不是正確的光線反射行為,但相較於模擬光線真實行為的著色軟體,在很短的時間就能獲得不錯的效果 。不過 AO 只考慮四面八方有沒有障礙物,不考慮其他光源的位置,因此在某些狀況下會產生錯誤的結果。比如在室外場景,陽光直接照射到的地方,照理不會有陰影,但 AO 效果卻也加上了陰影(下圖 5)。在室內場景,若四面牆壁只有一面有開口,牆壁及天花板的亮度分佈應該是由開口處往內愈來愈暗,但 AO 會讓開口對側的牆壁及天花板的中央部份看起來比較亮,而誤以為有其他的光源存在(下圖 6)。
這些錯誤目前在 Blender 裡似乎還無法消除,但可以利用節點編輯器加入 Gamma 節點,調降 Gamma 值來提高陰影部份的亮度、降低明暗之間的對比,使這種錯誤不那麼明顯。
References:
環境遮閉的假設是:當所在位置不存在光源時,如果周圍的障礙物愈多,能夠到達該位置的光線應該愈少(被擋住的光線愈多),因此看起來就愈暗。下圖是 Blender 的 AO 效果,沒有任何燈光。其中位置 1 的角隅兩面有障礙物,所以在場景中看起來最暗;位置 2 只有一面有障礙物,看起來次暗;位置 3 周圍沒有障礙物,最亮。
影響環境遮蔽效果的一項重要參數是衰減距離(Attenuation Distance, Properties 視窗 –> World 群組 –> Gather 面板),這是從場景中模型表面上的任一點向外搜尋障礙物的距離(搜尋的範圍是一個半球),超過這個距離的障礙物,就不考慮它的遮蔽效果。比如上圖中位置 1 和 2 相距 5 個 Blender 單位(BU),衰減距離是 2,因此在位置 4 的亮度就會跟位置 3 一樣(距最近的障礙物 2.5 BU,障礙物的遮蔽效果被忽略)。
另一個影響成像品質的參數是 Gather 面板裡的 Samples。Sample(取樣)如果不夠,容易產生低對比的顆粒噪點。但愈高的取樣數,需要愈久的著色時間。
AO 並不是正確的光線反射行為,但相較於模擬光線真實行為的著色軟體,在很短的時間就能獲得不錯的效果 。不過 AO 只考慮四面八方有沒有障礙物,不考慮其他光源的位置,因此在某些狀況下會產生錯誤的結果。比如在室外場景,陽光直接照射到的地方,照理不會有陰影,但 AO 效果卻也加上了陰影(下圖 5)。在室內場景,若四面牆壁只有一面有開口,牆壁及天花板的亮度分佈應該是由開口處往內愈來愈暗,但 AO 會讓開口對側的牆壁及天花板的中央部份看起來比較亮,而誤以為有其他的光源存在(下圖 6)。
這些錯誤目前在 Blender 裡似乎還無法消除,但可以利用節點編輯器加入 Gamma 節點,調降 Gamma 值來提高陰影部份的亮度、降低明暗之間的對比,使這種錯誤不那麼明顯。
References:
- Wikipedia: Ambient occlusion
- Ambient occlusion 環境遮蔽
- YafaRay 課程投影片(中文)
- Lighting in Blender Internal : Interior Lighting
留言
張貼留言