當(dāng)前位置:首頁(yè)>軟件教程>maya教程>教程內(nèi)容

講解Ambient Occlution的原理與高級(jí)應(yīng)用(4)

來(lái)源:網(wǎng)絡(luò) 作者: 學(xué)習(xí):11155人次

導(dǎo)言:

Ambient occlusion也就是大家熟知的環(huán)境遮擋,簡(jiǎn)單點(diǎn)說(shuō),就是一個(gè)取樣點(diǎn)上被其他幾何體覆蓋的程度,它是被通常用來(lái)模擬全局光照效果的簡(jiǎn)單方法。

下面教程開(kāi)始

環(huán)境遮擋的原理

基本的原理跟final gather類似,其取樣點(diǎn)的生成是一樣的。

首先從攝像機(jī)發(fā)出取樣光線,取樣光線和物體的交點(diǎn),就是我們說(shuō)的取樣點(diǎn),然后從取樣點(diǎn)發(fā)出次光線(probe rays)。

接著Ambient occlusion和fg就不一樣了。Ambient occlusion的次光線是每一條光線是否被周?chē)奈矬w所遮擋,如果遮擋了直接返回值,不做任何的Shader計(jì)算,也就是取樣點(diǎn)的周?chē)晃矬w阻擋著不讓看到背景的百分比;fg的次光線不太一樣,他的次光線與周?chē)奈矬w相交以后,它要求焦點(diǎn)處的顏色值,然后返回的是顏色值,而不是Ambient occlusion的真假值。

最后也是不一樣的,作為Ambient occlusion,每一個(gè)取樣點(diǎn)其實(shí)就是渲染時(shí)輸出的色彩值,而fg只是為渲染時(shí)的fg point,它代表著要渲染點(diǎn)附近的光照,在渲染時(shí)用來(lái)產(chǎn)生照明。(圖01)

圖01

 

下面我就結(jié)合MentalRay for Maya,跟大家一起討論一下Ambient occlusion的一些應(yīng)用。MentalRay for Maya中有三個(gè)節(jié)點(diǎn)是我們?cè)谑褂铆h(huán)境遮擋時(shí)需要用到的,mib_amb_occlusion,mib_fg_ occlusion,mib_bent_normal_env,如下圖。(圖02)

 

圖02

 

 

環(huán)境遮擋的使用

在介紹實(shí)際的應(yīng)用之前,我們用一個(gè)簡(jiǎn)單的場(chǎng)景作介紹,場(chǎng)景中只有一盞物理燈。默認(rèn)渲染如圖。(圖03)

 

圖03

Ambient occlusion(AO)經(jīng)典的環(huán)境遮擋效果,也被稱為漫反射遮擋(Diffuse occlusion),可以用來(lái)縮放對(duì)材質(zhì)環(huán)境光的貢獻(xiàn),它一般賦給材質(zhì)的環(huán)境光參數(shù)(Ambient),更進(jìn)一步說(shuō)他最好賦給Lambertian材質(zhì)。如下圖。(圖04)

圖04

 

渲染的效果如下圖。(圖05)

 

圖05

 

 

現(xiàn)在暗部的細(xì)節(jié)出來(lái)了,可見(jiàn)AO很好的模擬了全局光。

 

Reflective occlusion發(fā)射沿著反射光線的方向發(fā)射次光線,而不像Ambient occlusion那樣以物體表面的法線方向?yàn)橹行陌l(fā)射次光線,下面的示意圖說(shuō)明了之間的不同。(圖06)

 

圖06

 

 

在MentalRay for Maya中實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,只需要將mib_amb_occlusion節(jié)點(diǎn)參數(shù)中的Inflective打開(kāi)就行了。(圖07)

 

圖07

 

 

同時(shí)我們可以調(diào)整小spread的值為0.1,使得反射遮擋的效果更加明顯,渲染效果如圖。(圖08)

 

圖08

 

 

大家可以很明顯的看到物體的暗部是沿著反射方向產(chǎn)生的。

 

我們可以給mib_amb_occlusion的bright的參數(shù)連接一個(gè)環(huán)境節(jié)點(diǎn),使得環(huán)境對(duì)我們的材質(zhì)有了影響,但這不說(shuō)明次光線對(duì)環(huán)境光進(jìn)行了采樣計(jì)算,它只是把遮擋的結(jié)果與環(huán)境光簡(jiǎn)單相乘罷了,連接和渲染結(jié)果如圖。(圖09、圖10)

 

圖09

圖10

 

第二種連接方法就是將我們的攝像機(jī)連接到環(huán)境球查詢節(jié)點(diǎn)上,然后設(shè)輸出參數(shù)為1(取樣環(huán)境),另外可以選擇occlusion in alpha,如圖。(圖11、圖12)

 

圖11

圖12

 

 

從渲染結(jié)果來(lái)看,效果是一樣的,但是他對(duì)環(huán)境球取樣的階段是不一樣的。我們可以減小它的spread參數(shù),也就是改變次光線取樣范圍,使得反射更集中,渲染如圖。(圖13)

 

圖13

 

mib_fg_ occlusion的使用mib_fg_ occlusion其實(shí)就是一個(gè)選擇器,也就是說(shuō)如果在渲染的時(shí)候渲染全局中打開(kāi)了final Gather,我們就用final gather來(lái)計(jì)算遮擋,反而反之,節(jié)點(diǎn)連接如圖。(圖14、圖15)

 

圖14

圖15

 

 

mib_bent_normal_env的使用在講mib_bent_normal_env之前,我們有必要了解一下mib_amb_occlusion其他的輸出模式(output_mode)。

 

0是標(biāo)準(zhǔn)的遮擋模式,1是環(huán)境進(jìn)行取樣模式,2、3就是bent normal模式。所謂bent normal就是計(jì)算未遮擋的次光線,求平均值,所得到的就是bent normal的法線矢量,名字很形象。

 

矢量的三個(gè)分量的值分別對(duì)應(yīng)紋理的RGB三個(gè)值,output Mode的模式2輸出的是世界坐標(biāo)系,模式3輸出的是攝像機(jī)坐標(biāo)系。(圖16)

 

圖16

 

模式2,世界坐標(biāo)系。(圖17)

 

圖17

 

模式3,攝像機(jī)坐標(biāo)系。(圖18)

 

圖18

 

 

mib_bent_normal_env其實(shí)是為了加速環(huán)境遮擋所制作的一個(gè)節(jié)點(diǎn),在動(dòng)畫(huà)中對(duì)于我們場(chǎng)景中的不移動(dòng)不變形并且沒(méi)有別的物體接近一直影響到他的受光物體,我們就可以采用這種方法,所以局限性很大,但是帶來(lái)最大的好處就是渲染速度巨大提升,因?yàn)槲覀儾挥酶櫲魏我粭l光線。

 

我們可以預(yù)先將環(huán)境遮擋和bent normal烘焙成紋理文件,我們也可以用lightmap節(jié)點(diǎn)幫我們將文件保存進(jìn)紋理文件,連接的示意圖如圖。(圖19)

 

圖19

 

我們連接的紋理文件(圖中虛線框),一定要把writable選項(xiàng)打開(kāi),才能使我們的紋理寫(xiě)道磁盤(pán)文件上,連接圖如下。(圖20)

 

圖20

 

烘焙完紋理以后,前期工作就算完成了,就可以用我們的mib_bent_normal_env了。

 

我們可以這樣理解這個(gè)節(jié)點(diǎn),他的作用跟把烘焙的紋理不但能直接加到物體的材質(zhì)上,而且它可以是相對(duì)環(huán)境的反應(yīng),只不過(guò)我們要用一張環(huán)境貼圖,而不是真實(shí)物體的影響。

 

這種方法主要是用在實(shí)時(shí)渲染(realtime rendering),也就是我們說(shuō)的游戲中,能模擬很好的全局光照。下面是我們烘焙好的兩張圖,一張是環(huán)境遮擋,另一張是bent normal。(圖21、圖22)

 

圖21

圖22

 

 

環(huán)境遮擋

連接方法示意圖。(圖23)

 

圖23

 

節(jié)點(diǎn)的實(shí)際連接圖。(圖24)

 

圖24

 

環(huán)境遮擋的高級(jí)應(yīng)用實(shí)際應(yīng)用中,將環(huán)境遮擋,單獨(dú)渲染成一層,然后再后期是使我們最常用的方法,因?yàn)橹灰覀儾蛔非笪锢淼恼鎸?shí)度的話,這種方法是很靈活方便的。

 

我們?cè)赑S中舉個(gè)例子。下面是我們渲染的兩個(gè)層,一層是color層,另一層就是occ層。(圖25、圖26)

 

圖25

圖26

 

 

在PS里面我們可以把occ層設(shè)為mutiply模式,合成后為下圖。(圖27)

 

圖27

 

在MentalRay中,我們可以把Ambient occlusion作為一個(gè)Light shader,成為燈光的內(nèi)建環(huán)境遮擋,節(jié)點(diǎn)連接如圖。(圖28)

 

圖28

 

渲染如圖。(圖29)

 

圖29

 

我們可以分析一下,每個(gè)渲染點(diǎn)需要查詢燈光,我們的燈光是環(huán)境遮擋Shader,他會(huì)返回這個(gè)點(diǎn)的照明強(qiáng)度為這個(gè)點(diǎn)的遮擋程度,背離燈光的地方,途中黑色的地方,因?yàn)樗跓艄獾年幱皡^(qū),也就是說(shuō)它不會(huì)去查詢燈光照明強(qiáng)度的,因此沒(méi)辦法調(diào)用環(huán)境遮擋,從而成了黑色。

 

到此為止,我們的環(huán)境遮擋就講到這里了,感謝大家看我的教程。

學(xué)習(xí) · 提示

  • 一定要打開(kāi)PS,跟著教程做一遍,做完的圖到這交作業(yè):提交作業(yè)
  • 建議練習(xí)時(shí),大家自己找素材,盡量不要用教程提供的素材。
  • 教程有看不懂的地方,可以到論壇發(fā)帖提問(wèn):新手求助
  • 加官方微信,隨時(shí)隨地,想學(xué)就能學(xué):ps_bbs,或掃右側(cè)二維碼!
  • 關(guān)注我們學(xué)更多,每天都有新教程:新浪微博 抖音視頻 微信小程序
- 發(fā)評(píng)論 | 交作業(yè) -
最新評(píng)論
暫無(wú)評(píng)論,交個(gè)作業(yè)支持一下吧~

關(guān)注大神微博加入>>

網(wǎng)友求助,請(qǐng)回答!