朋友問起我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結果範例
Maya裡的Render Layer就有預設的模組,可以快速設定AO算圖。簡介如下:
1.右下角切換到Render Layer視窗,這裡是用來設定分層算圖之處。左邊紅圈圖示是建立新圖層,右邊是可以選取物件,創建新圖層時直接加入。只有加入圖層的物件才會出現在該層算圖結果,當然燈光也是,只有加入圖層的燈光才會在該層有照明效果喔。
這步確切要做的就是選取要算AO的物件,按右邊紅圈圖示,建一個加入物件的新圖層。
2.建完圖層如果想加入新物件,可以選取物件,在圖層上右鍵=>Add Selected Object,同理可以Remove移除。
在圖層上右鍵=>Presets=>Occlusion,這層就直接幫你設定好AO算圖了!在該層上看Render Setting,可以看到算圖引擎已經自動用紅字覆寫(Overwrite)為mental ray算圖,其他設定也都就位。
3.設定好是設定好了,按算圖時肯定會慢到爆炸...預設值中測定距離的設定會算到無窮遠處,所以要算很久;如果物件裡蓋了假的半球天空,更可能因為四面八方都遮蔽而一團黑(一般假天空在AO中還是隱藏起來吧)...因此要來調整設定。
打開Windows中上材質用的Hypershade視窗,設定AO其實會做一個把所有物件套上某新增Surface Shader的動作。雙擊此材質球,打開Attribute Editor,點選Out Color後面的連結圖示。
4.AO的設定基本上都在這個occlusion node上。主要影響效果的有:
(1)Sample-計算取樣,愈高得到的結果就愈精細,當然代價是你的算圖時間
(2)Spread-應該是射線發散的角度多廣,從畫面上來說,看起來是影響暗部的模糊或銳利程度。一般也不需要動它。
(3)Max Distance-屏蔽偵測的最大運算距離,超過此距離仍未偵測到物體則判定沒有屏蔽效應。設定得愈大就愈容易變暗,也運算的愈久。預設值0代表無限遠,強烈建議修改:一方面不致得到太髒的效果,一方面不會算到死。
Max Distance的適當數值要視情況判斷。因為比例尺和場景不一樣,在這個檔案恰當的距離,在別的檔案可能太緊或太鬆,必須經過測試,依畫面需求決定。
5.AO圖層的使用。通常和陰影一樣,以Multiply混合模式疊加,調整透明度,並用濾鏡調點顏色避免全黑。
純Maya Software算圖
上圖疊上AO(文章最頂AO範例那張),Multiply、透明度50%的合成結果
為了強調AO效果,所以壓得比較明顯,是不是顯得比較真實、有層次呢?這範例只是基礎幾何體,如果是複雜的模型、調得好的話,光看AO圖層就有高雅的感覺,是展示模型的好幫手喔~
端午節竟然在弄這個...祝大家佳節愉快

感謝啦 , 有東西繼續PO耶 , 讚啦 , 喔喔喔喔喔 收下囉,超感謝.....
太客氣了。謝謝關心,一起加油嘿~
AO也有一種說法是Skylight,軟體定義的名稱不同,但效果跟原理是一樣的:p
喔喔,小米用過的哪些軟體是這麼稱呼呢?謝謝補充喔:P
3D軟體應用方式我不太懂,不過有興趣看阿狗的話日後可以補上XDD
阿狗嗎...不是實作程式碼我還會想看一下XD 感謝嘿~
喔喔喔讚,我現在才看到這個orz
2010圖曾右鍵沒有presets>occousion耶
新版本我也沒用過啊 請找高明orz
從 2009 開始就已經換地方了~
在 Render 中按右鍵,點選 Attribute 進入 Attribute Editor,按右上方的 Presets 選擇 Occlusion
上面少打幾個字,是在 Render Layer 中按右鍵
說高明高明到XD
看到文章正要說Skylight時,就看到小米說了XD 3Ds MAX就是Skylight + Light Tracer 如圖:http://nocatohs.web.fc2.com/SL.jpg 不過個人還是比較喜歡自己打光+Radiosity (純屬個人喜好) 如圖:http://images.plurk.com/3880075_6e09ad43efe91a8f4b69efb3361cb6ff.jpg http://nocatohs.web.fc2.com/3D0.jpg
打燈是一定要的,一般很少直接用AO吧,只是合成時用來加分啊XD 學了沒用就忘得快,更別說超過一年沒打光了...這些是你的作業嗎?挺精緻的耶:)
AO 就是 AO 在 max 裡面也叫 AO, Skylight 跟 AO 沒關係
因為小弟才疏學淺,學校也沒教AO,上網自學,看到幾種方法可以在MAX作AO 一種去算是先去改成Mental Ray(假如原本是預設的話) 在去材質那裡,Type 的 Material/Map Browser 改成 Mental Ray 到把Surface Samples調高之後,在去Render成Texture 另一種方法就是如skylight,上個白色材質,然後Render成Texture就有了 v=aGTWZBVBgqI有教學
To Noca 你客氣了。 一般來說在 max 中製作 AO,都是用你說的第議中做法,用 metalray 的 AO 材質。事實上,maya 的 AO 也一樣是這樣做的。 你說的第二種方法,是邪道吧~哈