韓 敘,席 萌
(北京天文館,北京 100044)
1983年,美國(guó)益世公司(E&S)的數(shù)字式投影系統(tǒng)Digistar問(wèn)世。以此為標(biāo)志,數(shù)字影像技術(shù)正式走進(jìn)球幕影院,開(kāi)啟了數(shù)字球幕電影的時(shí)代[1-2]。數(shù)字球幕電影的誕生,不僅為觀眾帶來(lái)強(qiáng)烈的沉浸式觀影體驗(yàn),而且打破了傳統(tǒng)膠片受限的內(nèi)容題材,拓展了球幕影院的使用范圍[3]。近年來(lái),國(guó)內(nèi)球幕影院行業(yè)蓬勃發(fā)展,很多科技館、博物館、主題公園的場(chǎng)所都配置了球幕影院[4]。影院數(shù)量不斷增加,種類逐漸豐富,對(duì)數(shù)字球幕電影的制作能力和效率提出了更高的要求。
目前,數(shù)字球幕電影的主流制作手段是通過(guò)3D動(dòng)畫實(shí)現(xiàn)的。所謂3D動(dòng)畫,是指包含長(zhǎng)、寬、高三個(gè)維度的動(dòng)畫模式,建立完全虛擬的空間場(chǎng)景,目前已成為動(dòng)畫產(chǎn)業(yè)發(fā)展的主流[5]。3D動(dòng)畫的靈活性較強(qiáng),可以自由地設(shè)定環(huán)境、視角、對(duì)象、光照等,不受實(shí)景拍攝時(shí)的各種限制條件的約束,也成為了沉浸式影像的主流制作方式。但是,由于球幕電影的畫面視角為360°*180°,覆蓋面積遠(yuǎn)遠(yuǎn)大于普通3D動(dòng)畫電影,且分辨率一般達(dá)到4 000*4 000像素及以上,使用常規(guī)動(dòng)畫生產(chǎn)手段需要面臨較為嚴(yán)峻的后期制作壓力。比如:受到3D動(dòng)畫軟件中渲染相機(jī)的視角范圍及輸出分辨率的限制,大多數(shù)3D動(dòng)畫軟件無(wú)法直接輸出適合球幕電影分辨率的魚眼圖片,所以需要通過(guò)多通道相機(jī)渲染后拼接的方式完成制作[6]。
目前,通過(guò)多通道拼接制作球幕電影的相關(guān)論文較少,如文獻(xiàn)[7]提出,將已拼接好的靜態(tài)全景圖像通過(guò)虛擬球面變換方式重投影,轉(zhuǎn)換為魚眼圖像[7],該方法需要先通過(guò)全景攝像機(jī)或其他方式得到全景圖像,制作方法并不適用全部動(dòng)畫軟件。一些球幕電影制作公司,如Skansky、E&S等,將自身制作技術(shù)封裝成3D動(dòng)畫軟件商用插件或軟件,如DomeXF、Glom等,這些軟件雖然能夠在動(dòng)畫或后期軟件中適用于球幕影院的魚眼圖像,但是大多存在如下問(wèn)題:其一,由于技術(shù)壟斷,價(jià)格昂貴,單一授權(quán)的插件售價(jià)幾千到上萬(wàn)美元不等;其二,功能受限,針對(duì)目前多種類型的球幕影院,可調(diào)節(jié)參數(shù)較少,無(wú)法制作適配所有規(guī)格的球幕電影內(nèi)容;其三,計(jì)算效率低,一般在3D軟件內(nèi)使用CPU串行方式計(jì)算,面對(duì)較大分辨率或較多圖像序列幀等情況執(zhí)行效率低,成為制作環(huán)節(jié)中的瓶頸。
筆者長(zhǎng)期從事球幕電影制作工作,經(jīng)過(guò)整理與實(shí)踐,提出一種適用于3D動(dòng)畫球幕電影的魚眼圖像制作的設(shè)計(jì)及實(shí)現(xiàn)方法,并據(jù)此開(kāi)發(fā)了相應(yīng)的軟件程序。經(jīng)球幕放映系統(tǒng)的實(shí)驗(yàn)測(cè)試,表明所提算法能正確地將二維魚眼圖像還原到球幕影院中,保證3D動(dòng)畫制作的物體無(wú)任何扭曲,證明了算法的可行性與有效性。
提出的面向3D動(dòng)畫球幕電影的魚眼圖像制作過(guò)程主要包括4個(gè)步驟:
(1)基于等距魚眼投影的數(shù)學(xué)模型,將二維的魚眼圖像與三維的虛擬球面建立映射關(guān)系;
(2)根據(jù)球幕影院的特點(diǎn)對(duì)虛擬球面進(jìn)行變換;
(3)將虛擬球面與3D動(dòng)畫空間位置建立映射關(guān)系;
(4)為上述步驟生成的魚眼圖像消除鋸齒。
上述4個(gè)步驟中,前3步將魚眼圖像的每個(gè)像素與3D動(dòng)畫空間的位置建立一一映射關(guān)系,第4步對(duì)所得的魚眼圖像效果進(jìn)行優(yōu)化。
球幕影院的屏幕是一個(gè)半球形的異形屏幕,而球幕電影通過(guò)魚眼圖像方式進(jìn)行播放。所以,第一步就是通過(guò)坐標(biāo)轉(zhuǎn)換將二維的魚眼圖像同三維的半球面影院屏幕建立映射關(guān)系。根據(jù)輸出魚眼圖像的分辨率設(shè)置,創(chuàng)建魚眼圖像并對(duì)該圖像上的每個(gè)像素進(jìn)行坐標(biāo)轉(zhuǎn)換,確定其對(duì)應(yīng)三維球面的位置信息。
物體的影像由球面映射到平面,通過(guò)光軸的入射光會(huì)有顯著的折射,因此會(huì)有不同的投影方式,主要有等立體角投影、正射投影、等距投影、極射赤面投影等[8]。這些投影方式?jīng)]有優(yōu)劣之分,不同的投影方式適用于不同的應(yīng)用場(chǎng)景。目前,通用的球幕電影魚眼圖像格式使用等距投影變換,即投影圖像上的點(diǎn)到圖像中心的距離和球面上對(duì)應(yīng)點(diǎn)與球心連線到光軸的方向角成比例[9]。其示意模型如圖1所示,上部分表示地平式球幕影院半球面屏幕,下部分是寬高比1∶1的正圓形魚眼圖像,其映射關(guān)系為:球面弧度α正比于平面圖像上的距離d,數(shù)學(xué)公式為d=kα,一般在數(shù)學(xué)模型取k=1。這樣由球面映射到魚眼圖像在徑向上是均勻分布的,物體無(wú)任何扭曲,更符合人們所看到的現(xiàn)實(shí)世界。
圖1 等距魚眼模型
當(dāng)前數(shù)字球幕電影的世界通用影像格式,是在2005年IPS(國(guó)際天文館協(xié)會(huì))大會(huì)上,將球幕電影放映文件規(guī)范定義為等距方位魚眼圖像(equidistant azimuthal fisheye),它是一種基于等距變形的球面方位投影。該魚眼格式規(guī)定:球幕電影影像為寬高比1∶1的正圓形影像,圓形圖像的四邊與正方形邊框正交相切,如圖1下部分圖像所示。在地平式球幕影院中,圖像中心區(qū)域?qū)?yīng)球頂,圖像下側(cè)對(duì)應(yīng)放映影像的前方,圖像上側(cè)對(duì)應(yīng)放映影像的后方,左側(cè)對(duì)應(yīng)放映影像的左方,右側(cè)對(duì)應(yīng)放映影像的右方。圖像水平視角360°,垂直視角180°[10]。
球幕電影制作過(guò)程中,需要制作魚眼圖像分辨率的寬和高分別為W和H像素,一般情況下W等于H。創(chuàng)建一幅正方形魚眼圖像,以它的中心作為原點(diǎn),根據(jù)輸出的圖像分辨率W×H,將每個(gè)像素的寬、高坐標(biāo)映射到[-1,1]的范圍內(nèi)。如圖2所示,定義半徑r,表示A到圖像原點(diǎn)O的距離,取值范圍介于[0,1],如果半徑大于1,則該像素位置已不在魚眼圖像的正圓形區(qū)域內(nèi),不顯示圖像內(nèi)容;定義方位角φ,表示線段OA與X軸正方向的夾角,取值范圍為[0°,360°]。則圖像中的任意像素坐標(biāo)點(diǎn)A(w,h)的半徑r和方位角φ按照公式(1)(2)計(jì)算。
(1)
(2)
一般球幕電影的視場(chǎng)角度FOV為180°,即一個(gè)完整的半球面。但根據(jù)影視鏡頭或者腳本的需要,可以小幅調(diào)整視場(chǎng)角度范圍,獲取不同的畫面內(nèi)容。如果視場(chǎng)角度大于180°,會(huì)在魚眼圖像畫面內(nèi)存儲(chǔ)更多的內(nèi)容,造成畫面徑向比例壓縮;較低的視場(chǎng)角度,效果相反,畫面內(nèi)容拉抻。大于或者小于180°都會(huì)導(dǎo)致觀看的效果失真,為了避免畫面較大的變形,一般視場(chǎng)角度定義在160°~200°為宜。在制作過(guò)程中,如圖2所示,定義高度角θ,即線段OP與Z軸正方向的夾角,取值范圍為[0°,90°]。根據(jù)等距投影的數(shù)學(xué)公式,魚眼圖像上的半徑與球面上徑向弧度成正比例關(guān)系,所以A點(diǎn)并不在P點(diǎn)的垂直線上,只有當(dāng)θ等于0°、90°時(shí),A點(diǎn)與P點(diǎn)的垂直線上重合。根據(jù)球幕電影場(chǎng)景設(shè)定的視場(chǎng)角度FOV,結(jié)合等距投影計(jì)算數(shù)學(xué)公式,可得當(dāng)前像素點(diǎn)A對(duì)應(yīng)的球面高度角θ,如公式(3)所示。
(3)
x=sinθcosφ
(4)
y=sinθsinφ
(5)
z=cosθ
(6)
圖2 虛擬球幕示意圖
經(jīng)過(guò)以上變換,將魚眼圖像上的像素A(w,h)與虛擬的球面坐標(biāo)P(x,y,z)建立映射關(guān)系[11]。
不同的球幕影院,由于大小、定位功能等不同,其傾斜角度、放映方式各不相同,在制作過(guò)程中,需要針對(duì)不同類型的球幕影院定制生成的魚眼圖像。本步驟將根據(jù)現(xiàn)有球幕影院特點(diǎn)進(jìn)行球面變換,以保證所輸出魚眼圖像能夠匹配相應(yīng)的影院特點(diǎn)。
1.2.1 根據(jù)影院傾斜角度變換
國(guó)內(nèi)球幕影院按照傾斜角度和視角范圍大致可分為四類:
(1)0°傾斜的地平式天象廳球幕,視角180°×180°;
(2)15°傾斜的天象廳球幕,視角180°×180°;
都是好畫,都是好詞,但邪門的是,這些畫,這些字,讓李陸峰觸目驚心,特別是第四幅,那團(tuán)赤焰騰騰的火,讓他額頭出汗,脊背生涼。不知不覺(jué)間,他就走向那掛走馬燈,一直走到燈下兩步遠(yuǎn)的地方。然后,他解下腰間佩刀,舉起來(lái),用刀鞘定住燈,不讓它走動(dòng),盯住那幅“烈火烹油大富貴”細(xì)看。他之所以沒(méi)有拔刀,不用利刃去撥走馬燈,說(shuō)明他懂規(guī)矩,在這種場(chǎng)合,沒(méi)有正當(dāng)理由,舞刀弄槍,顯然是不得體的。
(3)30°傾斜的IMAX球幕,視角180°×130°;
(4)90°傾斜的飛行球幕,視角180°×180°。
不同的傾角有著不同的體驗(yàn)效果,也需要對(duì)不同的場(chǎng)景空間進(jìn)行取舍。如0°傾角的地平式天象廳可以讓觀眾最大限度地獲得視角的主動(dòng)控制權(quán),其注意力主要在三維空間的頂部及半球形周向區(qū)域;90°傾角的飛行影院觀眾的視角方向被動(dòng)地受限于座椅朝向,其注意力基本集中于球幕的頂點(diǎn),即三維空間的正前方的區(qū)域[12]。所以,為了適應(yīng)不同傾角的球幕影院,在制作過(guò)程中需要進(jìn)行相應(yīng)的球面旋轉(zhuǎn)變換,選取不同的場(chǎng)景。定義俯仰角pitch。對(duì)應(yīng)影院的傾斜角度,以觀眾所示屏幕前方低頭旋轉(zhuǎn)方向?yàn)檎H缟纤龅仄绞角蚰挥霸旱膒itch角度設(shè)為0°,飛行球幕影院的pitch角度設(shè)為90°,其余球幕影院根據(jù)實(shí)際傾斜角度設(shè)置。由步驟1.1可知,魚眼圖像像素點(diǎn)A對(duì)應(yīng)的球面坐標(biāo)是點(diǎn)P(x,y,z),則旋轉(zhuǎn)后得到的球面坐標(biāo)點(diǎn)P'(x',y',z')如公式(7)~(9)所示。
x'=x
(7)
y'=y×cos(pitch)-z×sin(pitch)
(8)
z'=y×sin(pitch)+z×cos(pitch)
(9)
經(jīng)過(guò)球面旋轉(zhuǎn)后,可以得到魚眼圖像點(diǎn)A的球面坐標(biāo)點(diǎn)P'的映射關(guān)系,滿足對(duì)應(yīng)的球幕影院的不同傾角的需求。
1.2.2 根據(jù)投影機(jī)位置變換
球幕投影是指使用一臺(tái)或多臺(tái)投影機(jī),在球形屏幕上投影出完整連續(xù)的畫面。投影放映系統(tǒng)方案分為兩種,對(duì)于直徑較小(6米以下)的球幕,投影放映系統(tǒng)可以用一臺(tái)裝有魚眼鏡頭的投影儀完成。對(duì)于直徑較大的球幕(6米以上)則需要采用多臺(tái)投影儀投影拼接的顯示方式[13]。當(dāng)然,球幕直徑大小和所采用的投影放映方案沒(méi)有嚴(yán)格的界定,但是考慮到單投影放映方案的造價(jià)低廉,部署、操作簡(jiǎn)單,易于維護(hù),國(guó)內(nèi)的小型球幕影院多采用此方案。等距魚眼圖像將圓心定為中心,對(duì)于單投影放映設(shè)備,需要置于球幕影院的球心處放映,才可以保證畫面正確投影到球面上而不變形。但同時(shí),球幕影院的球心位置也是觀眾觀影的最佳區(qū)域,如果將投影機(jī)放置于此,在視覺(jué)上會(huì)遮擋觀眾視線,聽(tīng)覺(jué)上產(chǎn)生較大的投影機(jī)噪聲,且單投影機(jī)配合魚眼鏡頭造成像素的損失,觀影體驗(yàn)大打折扣[14]。
(10)
(11)
圖3 單投影機(jī)設(shè)備示意圖
經(jīng)過(guò)轉(zhuǎn)換后,可以得到魚眼圖像像素點(diǎn)A的球面坐標(biāo)點(diǎn)P''的映射關(guān)系,滿足單魚眼投影機(jī)球幕影院不同的投影位置。根據(jù)實(shí)際影院傾角及放映環(huán)景,以上兩步1.2.1及1.2.2,可以選擇性地進(jìn)行變換,將魚眼圖像上點(diǎn)A轉(zhuǎn)換坐標(biāo)為P,P'或P''。
經(jīng)計(jì)算得到球面坐標(biāo)上點(diǎn)P(或根據(jù)影院設(shè)置得到點(diǎn)P'或點(diǎn)P''),本步驟需要將球面坐標(biāo)映射到虛擬的三維空間內(nèi)。借助于3D紋理技術(shù)CubeMap模擬天空盒及環(huán)景反射的方法[15-16],將球面坐標(biāo)與3D動(dòng)畫空間建立映射關(guān)系。
在3D軟件中建立場(chǎng)景資源,根據(jù)球幕電影內(nèi)容需要,選取中心點(diǎn),并在該點(diǎn)構(gòu)建6個(gè)相互正交虛擬攝像機(jī),每個(gè)相機(jī)水平、垂直視角均為90°。確定好主攝像機(jī)拍攝角度后,渲染形成6個(gè)正方形圖像,分別對(duì)應(yīng)左、右、頂、底、前、后六個(gè)方向。取每個(gè)正方形圖像左上角坐標(biāo)為(0,0),右下角坐標(biāo)為(0,1),即紋理坐標(biāo)橫坐標(biāo)u與縱坐標(biāo)v取值范圍是[0,1],以確定每個(gè)貼圖指定像素的位置。
圖4 虛擬球面與CubeMap示意圖
表1 不同立方面對(duì)應(yīng)的UV坐標(biāo)
經(jīng)過(guò)此步驟變換,魚眼圖像任意一點(diǎn)像素點(diǎn)A(w,h),可以計(jì)算映射到由3D空間產(chǎn)生的CubeMap立方體上的點(diǎn)Q(u,v)。如果魚眼圖像上每個(gè)像素點(diǎn)重復(fù)執(zhí)行此操作,就可以建立平面圖像與3D動(dòng)畫空間中的映射關(guān)系。
鋸齒是由于對(duì)連續(xù)信息進(jìn)行離散采樣、存儲(chǔ)或表示等導(dǎo)致的一種信號(hào)失真現(xiàn)象[17-18],魚眼圖像的制作過(guò)程中,對(duì)立方圖中連續(xù)的高分辨率圖像進(jìn)行離散的低分辨率采樣和映射,不可避免地會(huì)產(chǎn)生鋸齒及畫面細(xì)節(jié)丟失現(xiàn)象。目前,圖像的抗鋸齒技術(shù)較為成熟且多樣,可以采用傳統(tǒng)的超采樣抗鋸齒算法[19](Super-Sampling Anti-Aliasing,SSAA),通過(guò)直接增加圖像的采樣頻率來(lái)減弱鋸齒現(xiàn)象[20]。
首先,制作一個(gè)相較于目標(biāo)魚眼圖像分辨率成比例放大的臨時(shí)魚眼圖像,比如,目標(biāo)分辨率4 000*4 000像素,則輸出一個(gè)8 000*8 000像素分辨率的魚眼圖片;再對(duì)其中每個(gè)像素點(diǎn)對(duì)應(yīng)的附近像素多次采樣,最終計(jì)算得到該像素著色的平均信息。這樣輸出的圖像可以有效降低鋸齒現(xiàn)象,但是相應(yīng)帶來(lái)數(shù)倍的計(jì)算開(kāi)銷,增加魚眼圖像的制作時(shí)間。在抗鋸齒步驟中,通過(guò)設(shè)置不同的臨時(shí)圖片分辨率及采樣次數(shù)會(huì)對(duì)抗鋸齒效果產(chǎn)生影響,但綜合考慮處理時(shí)間,一般以2倍的輸出分辨率,輸出的每個(gè)像素點(diǎn)取4個(gè)像素點(diǎn)平均采樣為宜。實(shí)際工作中,可以先輸出部分測(cè)試幀,觀察圖像的鋸齒現(xiàn)象,決定是否使用抗鋸齒步驟以及圖像抗鋸齒的具體參數(shù)設(shè)置。
為了驗(yàn)證所提方法的有效性,通過(guò)編寫程序生成魚眼圖像進(jìn)行仿真模擬。首先在3D動(dòng)畫軟件Maya中通過(guò)定義6個(gè)正交的攝像機(jī),視角范圍水平、垂直均為90°,渲染得到6通道圖像,圖像上的文字對(duì)應(yīng)攝像機(jī)的方向面,生成6張分辨率500*500像素的正方形圖像,如圖5(a)所示。使用Python編寫腳本,通過(guò)上述流程生成分辨率為1 000*1 000像素的魚眼圖像,結(jié)果如圖5(b)所示;圖5(c)所示視角范圍為160的輸出圖像,對(duì)原有圖像進(jìn)行拉伸;圖5(d)所示視角范圍為200的輸出圖像,原有圖像壓縮,獲取更多的畫面內(nèi)容,一般魚眼圖像的視角范圍在這二者之間。圖5(e)是圖像鋸齒消除的對(duì)比圖像,圖左側(cè)為分辨率2 000*2 000像素通過(guò)抗鋸齒獲得魚眼圖像的中心局部圖;右側(cè)為分辨率1 000*1 000像素魚眼圖像中心局部圖,可見(jiàn)輸出的魚眼圖像存在較明顯圖像失真現(xiàn)象,使用抗鋸齒有著明顯的效果。該方法已經(jīng)應(yīng)用制作了多部球幕電影,并在北京天文館天象廳(地平式球幕影院)、宇宙劇場(chǎng)(15°傾角球幕影院)以及國(guó)內(nèi)外多個(gè)不同類型的球幕影院中播放,圖像形狀和比例正確,有效還原3D動(dòng)畫中的物體形狀。
(a)CubeMap圖像
(b)魚眼圖像
(c)視角范圍160°圖像
(d)視角范圍200°圖像
(e)抗鋸齒比較圖像圖5 生成圖像
針對(duì)不同傾角的球幕影院,魚眼圖像需要相應(yīng)的俯仰角旋轉(zhuǎn),圖6(a)為15°傾斜的輸出效果,畫面更多顯示正前方內(nèi)容,國(guó)內(nèi)的天文館、科技館等較多的球幕影院帶有15°~30°的傾角;圖6(b)為90°傾斜飛行的圖像輸出效果,以正前方向?yàn)橹行娘@示畫面內(nèi)容,常用于飛行影院。
(a)15°傾斜圖像 (b)90°傾斜圖像圖6 生成圖像
針對(duì)單魚眼投影機(jī)位置不在中心的球幕影院,以魚眼圖像下方方向?yàn)橛霸赫胺?即-X軸方向,以中心為圓點(diǎn),根據(jù)前文所述,Z軸數(shù)值一般等于0。假定投影機(jī)位于影院內(nèi)左前方45°中心區(qū)域,則投影機(jī)坐標(biāo)(-0.5,-0.5,0),生成圖像如圖7(a)所示,整體圖像向球幕影院左前方偏移;多數(shù)影院將單投影機(jī)放置在觀眾后方區(qū)域,既不影響觀眾觀影,也便于工作人員操作。假定投影機(jī)位于觀眾偏后方,坐標(biāo)(0,0.8,0),則生成圖像如圖7(b)所示,投影內(nèi)容的前方區(qū)域被拉伸放大,保證投影后畫面不變形。
(a)投影機(jī)坐標(biāo)(-0.5,-0.5,0)圖像
(b)投影機(jī)坐標(biāo)(0,0.8,0)圖像圖7 生成圖像
通過(guò)虛擬球面變換,提出了一種面向3D動(dòng)畫球幕電影魚眼圖像制作的設(shè)計(jì)方法和實(shí)現(xiàn)步驟,實(shí)現(xiàn)由二維數(shù)字圖像到3D動(dòng)畫場(chǎng)景空間的映射。使用該方法制作的魚眼圖像適用于國(guó)內(nèi)外主流球幕影院播放,可定制性高;該方法不限制使用平臺(tái)與軟件,方便通過(guò)可執(zhí)行程序或者以3D動(dòng)畫軟件插件的形式實(shí)現(xiàn);該方法既可以通過(guò)CPU并行計(jì)算,也可以使用GPU的CUDA程序完成,計(jì)算速度快。該方法步驟簡(jiǎn)單,使用場(chǎng)景靈活,易并行化,可以作為制作3D動(dòng)畫球幕電影的技術(shù)基礎(chǔ)使用。