友問起我Ambient Occlusion的作法,索性就生了這篇教程,不然我3D方面藏拙都來不及,不會想做教程啦...

首先,什麼是Ambient Occlusion(簡稱AO)呢?這是3D Rendering中,mental ray算圖的一種技術。簡單說,它的原理是looking around the scene from the point of view of each point on a surface,愈多光撞到物體(而非射向虛空)AO愈暗。由此得到物體交界處,因為屏蔽而造成的陰影更詳細內容請參考維基百科

由於一般Software算圖(無Ray tracing)如果不刻意補燈,根本算不出角落屏蔽的陰影。AO的優點在其結果可以代替補光造成的柔和陰影 ,加強畫面層次。而且因為它是計算物件間距離,不用拆UV、套材質、打燈,只要有好的模型就可以秀出漂亮的結果。所以現今商業3D動畫常採Software算圖、合成時加上AO,前者避免Ray tracing過長的算圖時間,同時又從後者得到更佳的光影效果。

AO結果範例
AOSetting005.jpg

Maya裡的Render Layer就有預設的模組,可以快速設定AO算圖。簡介如下:

1.右下角切換到Render Layer視窗,這裡是用來設定分層算圖之處。左邊紅圈圖示是建立新圖層,右邊是可以選取物件,創建新圖層時直接加入。只有加入圖層的物件才會出現在該層算圖結果,當然燈光也是,只有加入圖層的燈光才會在該層有照明效果喔。

這步確切要做的就是選取要算AO的物件,按右邊紅圈圖示,建一個加入物件的新圖層。

AOSetting001.jpg 

2.建完圖層如果想加入新物件,可以選取物件,在圖層上右鍵=>Add Selected Object,同理可以Remove移除。

圖層上右鍵=>Presets=>Occlusion,這層就直接幫你設定好AO算圖了!在該層上看Render Setting,可以看到算圖引擎已經自動用紅字覆寫(Overwrite)為mental ray算圖,其他設定也都就位。
AOSetting002.jpg 

3.設定好是設定好了,按算圖時肯定會慢到爆炸...預設值中測定距離的設定會算到無窮遠處,所以要算很久;如果物件裡蓋了假的半球天空,更可能因為四面八方都遮蔽而一團黑(一般假天空在AO中還是隱藏起來吧)...因此要來調整設定。

打開Windows中上材質用的Hypershade視窗,設定AO其實會做一個把所有物件套上某新增Surface Shader的動作。雙擊此材質球,打開Attribute Editor,點選Out Color後面的連結圖示。
AOSetting003.jpg

4.AO的設定基本上都在這個occlusion node上。主要影響效果的有:

(1)Sample-計算取樣,愈高得到的結果就愈精細,當然代價是你的算圖時間
(2)Spread-應該是射線發散的角度多廣,從畫面上來說,看起來是影響暗部的模糊或銳利程度。一般也不需要動它。
(3)Max Distance-屏蔽偵測的最大運算距離,超過此距離仍未偵測到物體則判定沒有屏蔽效應。設定得愈大就愈容易變暗,也運算的愈久。預設值0代表無限遠,強烈建議修改:一方面不致得到太髒的效果,一方面不會算到死。

Max Distance的適當數值要視情況判斷。因為比例尺和場景不一樣,在這個檔案恰當的距離,在別的檔案可能太緊或太鬆,必須經過測試,依畫面需求決定。
AOSetting004.jpg

5.AO圖層的使用。通常和陰影一樣,以Multiply混合模式疊加,調整透明度,並用濾鏡調點顏色避免全黑。

純Maya Software算圖
Test_SW.jpg 

上圖疊上AO(文章最頂AO範例那張),Multiply、透明度50%的合成結果
Test_cmps.jpg

為了強調AO效果,所以壓得比較明顯,是不是顯得比較真實、有層次呢?這範例只是基礎幾何體,如果是複雜的模型、調得好的話,光看AO圖層就有高雅的感覺,是展示模型的好幫手喔~

端午節竟然在弄這個...祝大家佳節愉快

創作者介紹
創作者 批克獸/PXL 的頭像
批克獸/PXL

呆夢天空

批克獸/PXL 發表在 痞客邦 留言(12) 人氣()