講解Ambient Occlution的原理與高級應(yīng)用
導(dǎo)言:
Ambient occlusion也就是大家熟知的環(huán)境遮擋,簡單點(diǎn)說,就是一個(gè)取樣點(diǎn)上被其他幾何體覆蓋的程度,它是被通常用來模擬全局光照效果的簡單方法。
下面教程開始
環(huán)境遮擋的原理
基本的原理跟final gather類似,其取樣點(diǎn)的生成是一樣的。
首先從攝像機(jī)發(fā)出取樣光線,取樣光線和物體的交點(diǎn),就是我們說的取樣點(diǎn),然后從取樣點(diǎn)發(fā)出次光線(probe rays)。
接著Ambient occlusion和fg就不一樣了。Ambient occlusion的次光線是每一條光線是否被周圍的物體所遮擋,如果遮擋了直接返回值,不做任何的Shader計(jì)算,也就是取樣點(diǎn)的周圍被物體阻擋著不讓看到背景的百分比;fg的次光線不太一樣,他的次光線與周圍的物體相交以后,它要求焦點(diǎn)處的顏色值,然后返回的是顏色值,而不是Ambient occlusion的真假值。
最后也是不一樣的,作為Ambient occlusion,每一個(gè)取樣點(diǎn)其實(shí)就是渲染時(shí)輸出的色彩值,而fg只是為渲染時(shí)的fg point,它代表著要渲染點(diǎn)附近的光照,在渲染時(shí)用來產(chǎn)生照明。(圖01)
圖01
下面我就結(jié)合MentalRay for Maya,跟大家一起討論一下Ambient occlusion的一些應(yīng)用。MentalRay for Maya中有三個(gè)節(jié)點(diǎn)是我們在使用環(huán)境遮擋時(shí)需要用到的,mib_amb_occlusion,mib_fg_ occlusion,mib_bent_normal_env,如下圖。(圖02)
圖02
環(huán)境遮擋的使用
在介紹實(shí)際的應(yīng)用之前,我們用一個(gè)簡單的場景作介紹,場景中只有一盞物理燈。默認(rèn)渲染如圖。(圖03)
圖03
Ambient occlusion(AO)經(jīng)典的環(huán)境遮擋效果,也被稱為漫反射遮擋(Diffuse occlusion),可以用來縮放對材質(zhì)環(huán)境光的貢獻(xiàn),它一般賦給材質(zhì)的環(huán)境光參數(shù)(Ambient),更進(jìn)一步說他最好賦給Lambertian材質(zhì)。如下圖。(圖04)
圖04
渲染的效果如下圖。(圖05)
圖05
現(xiàn)在暗部的細(xì)節(jié)出來了,可見AO很好的模擬了全局光。
Reflective occlusion發(fā)射沿著反射光線的方向發(fā)射次光線,而不像Ambient occlusion那樣以物體表面的法線方向?yàn)橹行陌l(fā)射次光線,下面的示意圖說明了之間的不同。(圖06)
圖06
在MentalRay for Maya中實(shí)現(xiàn)起來很簡單,只需要將mib_amb_occlusion節(jié)點(diǎn)參數(shù)中的Inflective打開就行了。(圖07)
圖07
同時(shí)我們可以調(diào)整小spread的值為0.1,使得反射遮擋的效果更加明顯,渲染效果如圖。(圖08)
圖08