顧春華 丁友東 張 曜
1.上海電影藝術學院影視制作中心,上海 201203
2.上海大學上海電影學院,上海 200072
3.盟圖(上海)數字科技有限公司,上海 200052
在視效制作中,運動匹配常常被人們稱為跟蹤(Tracking)。因此,從廣義角度而言,運動匹配大致可分為二維跟蹤和三維跟蹤兩大類別。其中,二維跟蹤又可細分為單點跟蹤(One Point Tracking)、多點跟蹤 (Multi-points Tracking)和平面跟蹤 (Planar Tracking)等;三維跟蹤又可細分為固定機位的匹配(Fixed Camera Tracking)、三維攝像機跟蹤(Camera Tracking)、物體跟蹤(Object Tracking)以及動作捕捉(Motion Capture)等,如圖1所示。
圖1 運動匹配的分類
從狹義角度而言,運動匹配的主要方面是進行三維攝像機跟蹤(或稱攝像機軌跡反求)。三維攝像機跟蹤是通過對實拍鏡頭畫面中跟蹤特征點視差變化的分析和計算,反求出該鏡頭在實際拍攝時鏡頭的焦距參數、相機的運動信息以及場景的布局情況等信息。因此,運動匹配也可理解為攝像機的跟蹤反求和三維場景的數字化還原。
對于在實拍鏡頭畫面中添加三維資產的視效鏡頭制作而言,數字藝術家一旦獲得虛擬相機和場景信息就可以將制作好的三維模型、三維角色、三維特效和數字繪景等數字資產添加到實拍鏡頭畫面中,并且達到看起來像是由同一攝像機,在同一場景“拍攝”而成的視覺效果。因此,運動匹配為實拍鏡頭畫面與三維元素之間建立了橋梁。[1]
在本文中,由于筆者著重研究關于實拍鏡頭畫面鏡頭畸變的優(yōu)化處理,因此本文中所指的運動匹配主要指三維攝像機跟蹤。
在光信號轉變?yōu)殡娦盘柕倪^程中,由于攝像機光學系統(tǒng)并不是精確地按理想化的小孔成像原理工作,物體點在攝像機成像面上實際所成的像與理想成像之間存在有光學畸變誤差。[2]因此,由于透鏡中央區(qū)的放大率與邊緣區(qū)的放大率不一致導致成像畫面偏離理想位置出現拉伸或壓縮的圖像變形現象被稱之為鏡頭畸變。鏡頭畸變的程度從畫面中心至畫面邊緣依次遞增,畫面邊緣反映得更為明顯。在實際應用中,攝像機鏡頭畸變現象是不可避免的,不論鏡頭的光學設計如何精密都無法消除鏡頭畸變。但是,鏡頭畸變并不影響成像畫面的清晰程度,只會改變成像畫面的形狀。[3]
對于光學鏡頭而言,畸變誤差主要分為徑向畸變、離心畸變和薄棱鏡畸變。這三種畸變均會引起像點的徑向偏差,其中,離心畸變和薄棱鏡畸變還會引起切向偏差。徑向畸變一般是由鏡頭的形狀缺陷所引起的,如徑向曲率的變化,該畸變使像點沿徑向偏移。[4]拍攝電影所使用的鏡頭一般都采用更為精密的加工處理,因此畸變系數相對較小且都屬于徑向畸變。徑向畸變分為桶形畸變(Barrel Distortion)和枕形畸變(Pincushion Distortion)兩種。
桶形畸變是由鏡頭中透鏡物理性能以及鏡片組結構引起的成像畫面呈桶形“膨脹”的畫面失真現象。因此,桶形畸變也常稱為桶形失真。在使用廣角鏡頭或使用變焦鏡頭的廣角端時,最容易出現桶形失真現象。當畫面中含有直線 (尤其是靠近畫面邊緣的直線)的時候,桶形失真最容易被察覺。與桶形失真相對的是枕形失真。
枕形畸變是由鏡頭中透鏡物理性能以及鏡片組結構引起的成像畫面呈枕形“收縮”的畫面失真現象。因此,枕形畸變也常稱為枕形失真。在使用長焦鏡頭或使用變焦鏡頭的長焦端時,最容易出現枕形失真現象。當畫面中有直線 (尤其是靠近畫面邊緣的直線)的時候,枕形失真最容易被察覺。與枕形失真相對的是桶形失真,如圖2所示。
圖2 桶形畸變和枕形畸變
在視效制作中,鏡頭畸變的處理幾乎貫穿于整個視效流程:從片場拍攝部門 (On-set Department)在拍攝現場的數據采集到三維置景部門(Layout Department)對實拍鏡頭畫面進行相機反求和場景創(chuàng)建再到數字合成部門 (Compositing Department),將三維渲染或數字繪景等元素真實、無痕地匹配合成到實拍鏡頭中,都需要考慮或面對鏡頭畸變的處理。在跟蹤環(huán)節(jié),由于使用廣角鏡頭或長焦鏡頭拍攝的畫面往往都會產生不同程度的鏡頭畸變現象。如果未經鏡頭畸變校正處理,直接使用含有鏡頭畸變的原始鏡頭進行跟蹤反求將無法獲得正確的結果。[5]同時,由于三維軟件中的虛擬攝像機不表現任何鏡頭畸變特征,因此,為模擬真實相機和物理鏡頭的成像特征,在三維渲染等元素的視效處理過程中(尤其是實拍鏡頭畫面中合成三維元素),通常需要進行鏡頭畸變正向去除與反向添加的處理。我們將鏡頭畸變的處理過程稱之為展開(Flattening)或復原(Unwarping)。[6]
運動匹配是實現三維渲染或數字繪景等元素與實拍鏡頭畫面在運動軌跡和透視比例等方面進行匹配的重要技術之一。運動匹配在視效制作過程中大致可歸納為以下流程。
首先,跟蹤師使用跟蹤軟件對在片場使用相同鏡頭及參數拍攝的棋盤格圖像(Checker Board)素材和原始鏡頭進行計算,一方面用于獲得鏡頭的畸變信息,另一方面基于輸出 (或創(chuàng)建)的去畸變鏡頭(Undistortion Plate)進行跟蹤反求,進而創(chuàng)建虛擬攝像機(3D Camera)、三維場景(3D Scene)以及場景點云(Point Cloud)等三維資產。
然后,下游的動畫師或三維特效師等再將以上三維資產導入三維軟件,并以去畸變鏡頭畫面為參考進行三維動畫設計和三維視效制作。
最后,合成師需要將上游所發(fā)布的三維渲染或數字繪景等元素合成匹配到實拍畫面中。同時,由于三維軟件中的虛擬攝像機不表現鏡頭畸變現象,即三維軟件渲染得到的三維元素往往不帶任何的鏡頭畸變信息。因此,合成師還需要將鏡頭畸變信息反向添加到未含有鏡頭畸變信息的三維渲染或數字繪景等元素之上,從而匹配實拍鏡頭畫面的鏡頭畸變信息。
在視效制作流程中,運動匹配部門發(fā)布的虛擬相機和三維等數字資產不僅可以供動畫和特效等部門使用,還可以供其它部門使用。例如,合成師基于三維攝像機反求輸出的虛擬攝像機進行三維攝像機投影技術 (Projection)的綜合應用。雖然運動匹配在影視視效制作過程中扮演著不可或缺的角色,但是對于跟蹤精準的視效鏡頭,觀眾在最終的畫面中是看不出其痕跡的,[7]如圖3所示。
圖3 運動匹配在視效制作過程中的流程關系圖
雖然鏡頭畸變對畫面的影響非常微妙,但是精準的鏡頭畸變卻是畫面真實感體現的重要因素。目前,很多項目在實際制作過程中由于拍攝現場的數據記錄問題或運動匹配反求計算的精度問題,常常使得鏡頭畸變的結果較不準確。另外,對實拍鏡頭畫面進行鏡頭畸變正向去除與反向添加的過程中勢必會引起去畸變鏡頭畫面尺寸的放大或縮小,從而對動畫、特效、燈光及合成等下游環(huán)節(jié)帶來諸多不便與麻煩。很多項目在實際制作過程中往往對鏡頭畸變僅作粗略的處理,更有甚者,在制作過程中完全不考慮鏡頭畸變的處理。因此,當前視效制作中鏡頭畸變的流程有待優(yōu)化與提升。
為便于描述和理解,本文所指的“全流程”具體是指與鏡頭畸變處理緊密聯系的視效制作環(huán)節(jié),例如跟蹤反求、動畫制作、特效制作、燈光渲染以及后期合成等。
3.2.1目的與意義
由于該方案的設計旨在使鏡頭畸變正向去除與反向添加流程中始終確保去畸變鏡頭的畫面尺寸與實拍鏡頭畫面的畫面尺寸保持完全統(tǒng)一。因此,本方案不僅減少以往流程中的不便與錯誤,而且規(guī)范視效制作的流程,提高視效鏡頭的真實感。同時,由于數字合成貫穿于鏡頭畸變正向去除與反向添加流程的始末,筆者將以數字合成制作角度作為切入點,基于主流合成軟件Nuke為平臺進行鏡頭畸變的優(yōu)化與設計。
3.2.2流程設計
首先,筆者將基于在片場使用相同鏡頭及參數拍攝的棋盤格圖像素材或使用LensDistortion節(jié)點等常規(guī)方式獲得鏡頭的畸變信息;然后,添加位移變換 (Transform)節(jié)點并利用表達式語句對去畸變鏡頭畫面的寬、高以及中心點進行設置。最后,再次使用Transform 節(jié)點并對合成畫面進行反轉操作以反向添加鏡頭畸變信息。
3.2.2.1鏡頭畸變的正向去除
專業(yè)級別的鏡頭跟蹤與反求軟件都具有鏡頭畸變處理的插件與流程,例如3DEqualizer提供了鏡頭畸變導出套件插件 (Lens Distortion Plugin Kit)以使得Nuke 11或更高版本中的LensDistortion節(jié)點可以直接讀取3DEqualizer的鏡頭模型數據并非常方便地將3DEqualizer 反求的鏡頭數據導入到Nuke中使用;PFTrack 早期也提供了工具PFBarrel for Nuke插件以使在Nuke軟件中使用PFTrack導出的鏡頭畸變模型。但是,隨著鏡頭模型數量的增加與各類合成軟件的兼容性等原因,目前普遍使用STMap數據圖進行鏡頭畸變信息的傳遞。另外,對于畫面內容較為簡單的實拍鏡頭,也可直接使用NukeX 中的LensDistortion (鏡頭畸變)節(jié)點進行鏡頭畸變的大致處理。當然,對于較高標準的鏡頭畸變處理,往往需要在片場使用相同鏡頭及參數拍攝棋盤格圖像素材,以供后期合成部門精準處理相同場次鏡頭的鏡頭畸變信息。
本文中,由于主流跟蹤軟件3DEqualizer 與Nuke軟件也可通過LensDistortion節(jié)點進行傳遞,因此筆者使用LensDistortion1節(jié)點進行鏡頭畸變的正向去除。
3.2.2.2使用表達式語句設置去畸變鏡頭畫面尺寸
在鏡頭畸變的正向去除過程中勢必會引起畫面尺寸的改變。一般情況下,桶形畸變的鏡頭去除鏡頭畸變后會呈現畫面尺寸放大的情況;枕形畸變的鏡頭去除鏡頭畸變后會呈現畫面尺寸縮小的情況。因此,為了使去畸變鏡頭的畫面的尺寸與原始鏡頭畫面的畫面尺寸保持一致,筆者將使用Nuke中的Transform 節(jié)點并利用表達式語句對去畸變鏡頭畫面的寬、高以及中心點進行設置。
首先,將Transform1 節(jié)點連接于鏡頭畸變正向去除節(jié)點下游并對縮放 (Scale)屬性控件編譯以下表達式語句:
1/ (sqrt(pow ((input.bbox.r-input.bbox.x),2)+pow ((input.bbox.t-input.bbox.y),2))/sqrt(pow (width,2)+pow (height,2)))
即,計算輸入的去畸變鏡頭畫面的邊界框(Bounding Box)對角線與原始鏡頭畫面對角線相除后的倒數,從而獲取精準的縮放參數值;
然后,對中點心 (Center)屬性控件編譯以下表達式語句:
x:width/2 y:height/2
即計算原始鏡頭畫面的中心點參數值,從而確定去畸變鏡頭畫面縮放中心點的位置。
通過以上設置,筆者基本上已經將去畸變鏡頭的畫面尺寸與原始鏡頭的畫面尺寸作了縮放匹配,此時兩者的畫面尺寸保持統(tǒng)一。在實際制作過程中,數字合成師也常會將去畸變鏡頭序列進行預合成輸出以供下游或其它部門使用。同時,為確保去除邊界框外的像素信息,在渲染輸出前也可添加裁切(Crop)節(jié)點或尺寸重設 (Reformat)節(jié)點進行畫面尺寸設置,如圖4所示。
圖4 使用表達式語句獲取去畸變鏡頭畫面的縮放參數值和縮放中心點
3.2.2.3基于相同畫面尺寸和鏡頭畸變進行各類資產的設計制作
此時,渲染輸出的去畸變鏡頭序列可用于跟蹤反求和下游燈光渲染、數字繪景、動效和光效元素及其它未含有鏡頭畸變信息的數字資產的設計制作。由于此時實拍鏡頭畫面與去畸變鏡頭以及各類數字資產都基于相同畫面尺寸而制作,因此可以有效避免因畫面尺寸不統(tǒng)一而帶來的諸多問題。
3.2.2.4鏡頭畸變的反向添加
完成鏡頭的合成匹配后,為模擬真實相機和物理鏡頭的成像特征,數字合成師還需要進行鏡頭畸變的反向添加處理,從而使去畸變鏡頭、三維渲染元素、數字繪景元素及其它未含有鏡頭畸變信息的數字資產都獲得同原始鏡頭一致的鏡頭畸變信息。
另外,在實際項目制作過程中,數字合成師僅需將鏡頭畸變信息反向添加于三維渲染和數字繪景元素及其它未含有鏡頭畸變信息的素材之上。因為如果最終合成畫面中的實拍鏡頭畫面由去畸變鏡頭反向添加畸變信息經圖像變形而來,或多或少會引起畫面質量的損失。同時,對于桶形畸變而言,由于反向添加鏡頭畸變信息后會引起合成添加元素畫面尺寸的整體縮小 (尤其是靠近畫面邊緣區(qū)域或合成添加的元素含有出畫或入畫的動畫情況)。為避免反向添加鏡頭畸變信息帶來的縮放裁切問題,在燈光渲染環(huán)節(jié)有必要提高過掃描 (Overscan)屬性參數值,以使最終渲染輸出的畫面尺寸稍大于原始鏡頭畫面的畫面尺寸。
鏡頭畸變的反向添加或多或少也會引起畫面尺寸的改變。因此,在反向添加鏡頭畸變信息之前,筆者首先進行畫面尺寸的處理。由于在鏡頭畸變正向去除過程中,筆者使用了使用表達式語句設置了去畸變鏡頭畫面尺寸。因此,在鏡頭畸變反向添加過程中,筆者只需使用Transform2 節(jié)點并對其進行反轉操作。
首先,拷貝Transform1節(jié)點并將粘貼新生成的Transform2節(jié)點連接到未含有鏡頭畸變信息的數字資產下游。打開Transform2節(jié)點屬性面板箱(Properties Bin)面板并勾選反轉(Invert)選項,如圖5所示。
圖5 再次使用Transform 節(jié)點并對其進行反轉操作
完成畫面的尺寸處理后,筆者將進行鏡頭畸變的反向添加,拷貝鏡頭畸變正向去除中所使用的LensDistortion1節(jié)點并將粘貼新生成的LensDistortion2 節(jié)點連接到Transform2 節(jié)點下游。打開LensDistortion2節(jié)點Properties Bin面板并將Lens-Distortion標簽頁中的未畸變(Undistort)屬性控件進行取消勾選。同樣,為確保去除邊界框之外的像素信息,數字合成師也可在渲染輸出之前添加Crop節(jié)點或Reformat節(jié)點進行畫面尺寸設置。
最后,筆者再對視效制作中鏡頭畸變的正向去除與反向添加優(yōu)化設計流程進行梳理,如圖6所示。
圖6 視效制作中鏡頭畸變的正向去除與反向添加優(yōu)化設計流程圖
由于在實際項目制作中最終合成畫面中的實拍鏡頭畫面不能由去畸變鏡頭反向添加畸變信息通過圖像變形而來,因此最終合成畫面可優(yōu)化為由原始鏡頭與反向添加鏡頭畸變的三維渲染、數字繪景及其它未含有鏡頭畸變信息的數字資產所組成,如圖7所示。
圖7 鏡頭畸變的正向去除與反向添加優(yōu)化設計流程圖
本文基于視效制作全流程以數字合成制作角度為切入點,基于主流合成軟件Nuke為平臺進行鏡頭畸變的優(yōu)化設計,從而實現在不改變畫面尺寸的情況下處理鏡頭畸變的正向去除與反向添加。該優(yōu)化設計不僅使得視效全流程都能夠基于相同的畫面尺寸開展視效設計與制作,而且有效解決因鏡頭畫面尺寸不統(tǒng)一而帶來的諸多不便與錯誤。希望能夠對視效制作人員在處理鏡頭畸變與鏡頭跟蹤等制作工作有所參考。?