在MtoA裏,AO材質是可以製作透明物體的AO通道的,隻需要將透明貼圖鏈接到AO材質的opacity上,關閉物體的Opaque屬性就可以了。但是這種方法僅僅限於場景較為簡單,切透明物體少,並且你是通過新建渲染層給物體附加AO材質這個製作流程的。但當你的場景裏有大量物體使用了不同的透明貼圖,那麼你是依然可以通過新建渲染層,逐個附加透明AO材質來製作AO通道,但是這樣效率極其低下,同時也增加了材質球的數量,容易造成混亂(除非你求自虐,否則絕對連節點連到你跪地不起。)
鑒於上麵說的,在這裏,小弟給各位提供一個方法可以通過MtoA的AOV來實現透明物體的AO通道。那麼如果熟悉MtoA的同學一定知道直接新建custom AOV,並且連接上AO後,輸出的AO通道裏,該透明的物體仍然沒有透明的。如下圖。
Beauty層
直接AOV連接AO材質,輸出的AO層
OK,如果是這樣,那麼我們要怎麼去利用AOV來輸出透明的AO通道呢?這裏,要先清楚Arnold本身是支持透明物體輸出正確的diffuse這些固有AOV通道的,前提是你勾選了“Enable AOV Vompositon”(Mtoa 1.0之前的版本需要勾選,1.0開始已經自動集成了,不再需要自己去勾選)以及你是用的是aiStendard材質,輸出的AOV的data格式是rgb而不是rgba。像這個測試場景,勾選後輸出diffuse的通道的話,就是這樣的:
那麼既然aiStendard材質可以實現這個功能,那麼我們是否可以借助aiStendard材質這個特性,把diffuse這個著色信息變成AO的著色效果呢?答案是可以的。有用過Mentalray的同學都知道MR裏做AO效果你需要一個maya的surface材質,連接一個AO貼圖來做。這裏的思路是一樣的。那麼aiStendard如何變成一個surface材質呢?有同學會說用matte color,但是matte color不能輸出為AOV,所以不行。個人認為可行的方法就是把Emission的scale開為1。如下圖:
當然,這樣子,周圍物體是會受影響的,因為畢竟是自發光的,但是在這裏是可以忽略的,為什麼可以忽略我後麵會講。那麼至此,我們就得到了一個想要的surface shader了,接下來的就很簡單了,隻需要把AO材質連接到emission的color上,來看看效果:
那麼,我們現在把這個連好的aiStendard材質連接到一個新建的customAOV上,這還沒完,我前麵提到了我們必須使用aiStendard自己提供的AOV類型,那麼我們連接的是emission,所以在這個連好的aiStendard材質的AOV Name麵板裏,把Emission通道的名字選為創建的customAOV通道的名字。然後在Maya要做的事情就完成了,輸出的圖像如下:
Maya的節點圖如下:
看完輸出的AO圖,你們會揍我一頓說著哪裏正確了!(打我別打臉,謝謝~)但是我想說AO的信息是正確無誤了,那哪裏不對?首先是圖像沒有把背景該鏤空的黑色鏤空,為毛?因為沒有alpha通道,所以我們在到後期軟件合成的時候,就需要先把beauty層的alpha通道提取去出來給這個AO通道。本人使用的是Nuke,我利用shuffle把beauty層的alpha通道轉化為rgb信息,和這個AO通道先multiply一次,利用alpha的黑色區域把AO層裏不需要的區域遮蓋掉,並且把alpha通道拷貝給AO層,premult一次,得到一個我們需要用的AO層,如下:
Nuke的節點圖如下:
看到這一步,各位知道為什麼我之前說emission對周圍有影響也沒關係了吧?作為AOV後,覆蓋的是整個圖像,那麼就等於整個都是白板圖像了,不存在光陰影響了。到此,就可以繼續你的合成工作了!需要注意的是在合成過程中有可能會出現少許的白邊情況,收邊一下就可以了~
最後一張是利用AOV輸出的AO層,另一張是手動給材質的AO層。AO的信息是一樣的。
希望這個方法可以提高各位的工作效率啦!遁地~