楊德勇
(北京大千陽光數(shù)字科技股份有限公司,北京 100080)
Deep的字面含義指的是:深度。一幀Deep序列在三維制作中可以理解為帶有所渲染物體在相機(jī)里的位置信息的一張圖片及在二維視角是一張圖在三維視角是有前后位置信息的(如圖1、圖2所示)。Deep是將每一個(gè)像素里的信息以點(diǎn)的方式記錄下來并帶有普通序列的Alpha、Color等層信息,同時(shí)點(diǎn)上還記錄了點(diǎn)與點(diǎn)和點(diǎn)與相機(jī)視角為基準(zhǔn)的位置信息的一種序列格式。在Nuke中我們通過“DeepSample”節(jié)點(diǎn)查看Deep序列的屬性信息,其中包括位置信息。
圖1
圖2
當(dāng)Deep具有上述所說的功能后就不難發(fā)現(xiàn)在軟件的文件對(duì)接上通過輸出Deep會(huì)解決很多通常會(huì)遇到的問題。隨著Houdini軟件在國內(nèi)行業(yè)內(nèi)的興起和大眾化,使得大多數(shù)動(dòng)畫制作在動(dòng)畫與特效流程上逐漸拋棄了Maya來制作特效效果,逐步轉(zhuǎn)為Maya做完動(dòng)畫后輸出相關(guān)文件abc到Houdini制作特效元素,最終根據(jù)不同的特效元素選擇Houdini輸出特效元素序列,或者將特效元素返回給Maya的燈光組進(jìn)行渲染。但在此之中,Houdini進(jìn)行水、粒子、煙火爆炸、云霧及其它特效時(shí)與場景模型之間經(jīng)常存在交互問題,Maya材質(zhì)的置換貼圖、資產(chǎn)代理和毛發(fā)Houdini是無法讀取的,反之Houdini中的粒子是無法直接輸出到Maya進(jìn)行渲染使用的,而Deep技術(shù)的出現(xiàn)很好地解決了這個(gè)問題,雙方軟件各自輸出帶有三維空間位置信息的Deep序列在Nuke中進(jìn)行合成,這樣在不同的位置自然形成有效的遮擋和深度關(guān)系,如圖1、圖2所示。
在Maya中輸出Deep一般基于Arnold渲染輸出,只需要在渲染設(shè)置中更換渲染序列輸出格式為“Deepexr”,如圖3。
在Houdini中輸出Deep一般是基于Mantra渲染輸出,只需要在相應(yīng)的渲染節(jié)點(diǎn)選擇“Images”下“Deep Output”中的“Deep Camera Map”并修改好序列格式即可輸出,如圖4。
圖3
圖4
前文已經(jīng)說過Deep是帶有以渲染相機(jī)為基準(zhǔn)的三維空間位置信息的序列,那么Houdini作為一個(gè)非常開元的后期制作軟件是可以通過進(jìn)行一些后臺(tái)操作后,將Maya輸出的Deep序列引入到Houdini中,取讀正確的位置信息進(jìn)行遮罩渲染(在此可能會(huì)有疑問既然都可以輸出Deep到Nuke中進(jìn)行合成為何在此要贅述遮罩渲染,原因會(huì)在下面的章節(jié)進(jìn)行解釋),這樣可以很好地解決abc文件無法記錄Maya中的毛發(fā)和置換信息而導(dǎo)致在Houdini中做遮罩渲染出的序列與Maya場景模型渲染的序列不匹配的問題。
將Maya輸出的Deep導(dǎo)入Houdini中使用首先要考慮的是兩個(gè)軟件默認(rèn)的空間比例不同,Maya的默認(rèn)空間是一個(gè)網(wǎng)格代表0.01米,而Houdini是1米,所以在Houdini制作特效元素之前,大多情況都會(huì)對(duì)Maya導(dǎo)過來的文件進(jìn)行縮放。假設(shè)縮放0.1倍,那么在Houdini中的Maya文件位置信息整體以世界坐標(biāo)為中心乘以0.1。將Deep直接導(dǎo)入到Houdini是無法使用的,因?yàn)镸aya輸出的Deep帶有的位置信息是Houdini處理過的場景10倍,所以如果將Deep導(dǎo)入進(jìn)Houdini做遮罩或者位置參考,需要先對(duì)Deep進(jìn)行等比縮放后才能進(jìn)行后續(xù)操作,具體操作如下:
(1)Mantra渲染節(jié)點(diǎn)的設(shè)置
首先在需要進(jìn)行Deep操作的Mantra渲染節(jié)點(diǎn)中找到“Edit Parameter”中的“Render Properties”輸入“View” 然后將“Background Z-Scale”和“Background Image as Matte”移到“Existing Parameters”并應(yīng)用(如圖5),在Mantra外部面上就會(huì)顯示出這兩個(gè)參數(shù)選項(xiàng)?!癇ackground ZScale”含義即景深刻度,也就是世界空間的比例大小刻度?!癇ackground Image as Matte” 在Houdini中的釋義為將渲染背景深度相機(jī)中的圖作為一個(gè)啞光對(duì)象。當(dāng)這個(gè)屬性是開啟的時(shí)候,Mantra拋棄了本身攝像頭映射的顏色,并且來自深度攝像頭映射的Alpha不會(huì)被放入最終的圖像中。這是深陰影映射文件的默認(rèn)行為,即是否將相機(jī)內(nèi)的Deep拿來作為遮罩影響層。
圖5
然后將“Background Z-Scale”與場景縮放比例相匹配(如圖6),這樣就做到從Maya輸出的abc或者fbx文件在Houdini中進(jìn)行縮放后制作的特效元素與Maya輸出的Deep序列的深度位置信息完全吻合。
圖6
(2)Camera節(jié)點(diǎn)的設(shè)置
找到渲染的Camera中最底層的“Camera-Shape”中的“Background Image”選項(xiàng),直接將Maya輸出的Deep序列導(dǎo)入進(jìn)來(如圖7)。同時(shí)我們通過視窗面板旁的“Display Background”可以對(duì)導(dǎo)入的Deep進(jìn)行二維可視化(如圖8)。
圖7
圖8
(3)Deep在Mantra中的渲染
圖9
圖10
在Houdini中勾選“Background Image as Matte” 進(jìn)行的渲染結(jié)果為圖9呈現(xiàn)的效果,不勾選進(jìn)行的渲染結(jié)果為圖10呈現(xiàn)的效果。在Houdini中以勾選“Background Image as Matte”將Deep作為遮罩進(jìn)行渲染較為常用,我們?cè)谥谱鳌讹L(fēng)語咒》饕餮出世的場景特效時(shí)Maya涉及到大體量的樹木的資產(chǎn)代理、山體的置換和人物群集等場景元素,這些都是在Houdini中不好還原,然后作為遮罩渲染的Maya文件,同時(shí)大體量的Maya文件作為abc輸出后,一個(gè)文件的大小就可能達(dá)到上百GB,這樣的abc在Houdini中運(yùn)行操作起來成本巨大。所以最后選擇Maya輸出Deep序列然后到Houdini中作為遮罩渲染,很好地解決了軟件之間文件不好互導(dǎo)的問題。
Nuke是將渲染組和特效組所有渲染的鏡頭素材進(jìn)行歸總合成輸出的軟件,在影視行業(yè)的不斷發(fā)展過程中,Nuke不斷地更新和成長,現(xiàn)已成為影視制作中不可或缺的軟件,其優(yōu)秀的三維軟件文件格式讀取能力加上自身可進(jìn)行三維視角顯示和操作,可以將abc或者fbx格式相機(jī)導(dǎo)入進(jìn)Nuke做最后的細(xì)節(jié)調(diào)整,為呈現(xiàn)更好的鏡頭效果創(chuàng)造了更多的可能性。
在Nuke中導(dǎo)入Deep序列不能直接拖拽進(jìn)行合成操作,需要通過“DeepRead”節(jié)點(diǎn)導(dǎo)入序列?!癉eep Transform”節(jié)點(diǎn)可以對(duì)素材進(jìn)行位置偏移,因?yàn)闆]有遮罩的影響,有些不受邊界框裁切的素材進(jìn)行小幅度位移是不受影響的?!癉eep Merge”節(jié)點(diǎn)對(duì)多個(gè)素材進(jìn)行合并顯示與Nuke中的常規(guī)“Merge”節(jié)點(diǎn)作用相似。“Deep To Points”節(jié)點(diǎn)用來在三維視角里顯示Deep的位置(每個(gè)點(diǎn)都記錄一個(gè)像素內(nèi)的信息),多與“Camera”節(jié)點(diǎn)配合使用,其呈現(xiàn)效果示意見圖2。“Deep Sample”節(jié)點(diǎn)查看Deep序列的屬性信息其中包括位置信息。
3.1.1 Deep在Maya、Houdini以及Nuke這三個(gè)軟件之間對(duì)接中的優(yōu)勢
綜上所述,Deep技術(shù)的信息儲(chǔ)存方式革新了影視流程化作業(yè)方式。其優(yōu)勢大致歸為以下幾點(diǎn):
(1)解決了Maya里的物體材質(zhì)置換和Houdini材質(zhì)置換不互通渲染遮罩容易產(chǎn)生偏差的問題。兩者的材質(zhì)貼圖都有著自己的組合方式,如果要實(shí)現(xiàn)同樣的置換效果需要超高成本的測試渲染比對(duì)。
(2)解決了Maya里的毛發(fā)系統(tǒng)和Houdini不互通渲染遮罩產(chǎn)生偏差的問題。Maya最新使用的毛發(fā)插件為XGen系統(tǒng),而Houdini一直都是自己的流程系統(tǒng)。兩者都不能輸出類似于abc、fbx和vdb格式記錄毛發(fā)信息的互通文件。
(3)解決了Maya中資產(chǎn)代理(如樹林)和Houdini不互通的問題。Maya通過代理物大大節(jié)省了軟件的運(yùn)行成本,但在軟件之間的素材對(duì)接上產(chǎn)生了大問題,代理物無法直接讀取進(jìn)Houdini使用。
(4)節(jié)省了精模導(dǎo)abc的耗時(shí)過長和文件緩存過大的問題,有了Deep流程作后盾就不用導(dǎo)高精度的abc文件進(jìn)Houdini做遮罩渲染。
(5)縮短了制作周期,前期確定場景簡模和動(dòng)畫關(guān)鍵幀,就可以開始Houdini的特效制作,不涉及遮罩渲染,不會(huì)因?yàn)閯?dòng)畫和模型環(huán)節(jié)有細(xì)微的調(diào)節(jié)從而導(dǎo)致特效素材需要重新輸出渲染。
3.1.2 Deep在Maya、Houdini以及Nuke這三個(gè)軟件之間對(duì)接中存在的劣勢
首先前面所提到的在Houdini中用Deep做遮罩渲染的原因是Deep文件很大,一張exr容量一般都超過1GB,如果復(fù)雜一點(diǎn)的場景輸出一幀Deep可能需要3GB以上的儲(chǔ)存空間,如果一個(gè)項(xiàng)目整體元素復(fù)雜,整體都出Deep序列可想而知需要超大容量的服務(wù)器做支撐。同時(shí)Deep文件儲(chǔ)存量大,其精確的點(diǎn)記錄方式也使得Nuke的讀取和渲染壓力巨大,所以在有些不需要在Nuke里進(jìn)行位置偏移等處理的特效元素,直接在Houdini中作為遮罩渲染以節(jié)約硬件和軟件成本。
Deep雖然可以很好地記錄位置信息,但是以點(diǎn)的形式記錄每個(gè)像素的信息和常規(guī)的模型是不同的,所以在Houdini中作為遮罩渲染不能產(chǎn)生和模型做遮罩渲染一樣的陰影關(guān)系。同時(shí)Deep在Houdini中作為遮罩渲染不能接收漫反射等二次照明,即特效素材對(duì)場景模型的光照影響是無法實(shí)現(xiàn)的,都需要后期制作或單獨(dú)出簡模影響的陰影層和影響層到后期處理等方式來解決陰影關(guān)系和二次照明的問題。
我們已經(jīng)深刻體會(huì)到Deep技術(shù)對(duì)整個(gè)行業(yè)流程的改變,諸如Weta Digital、Animal Logic、MPC和ILM等國際頂尖視效公司都在用Deep技術(shù)服務(wù)于項(xiàng)目創(chuàng)作,《少年派》《普羅米修斯》《超人:鋼鐵之軀》《饑餓游戲2:星火燎原》《復(fù)仇者聯(lián)盟》《環(huán)太平洋》和《霍比特人》等視效大片的制作都使用Deep深度合成技術(shù)。Deep技術(shù)的誕生是影視動(dòng)畫行業(yè)在不斷發(fā)展和創(chuàng)新的體現(xiàn),它提高了影視動(dòng)畫制作效率和效果。