韓 敘,席 萌
(北京天文館,北京 100044)
1983年,美國益世公司(E&S)的數(shù)字式投影系統(tǒng)Digistar問世。以此為標志,數(shù)字影像技術正式走進球幕影院,開啟了數(shù)字球幕電影的時代[1-2]。數(shù)字球幕電影的誕生,不僅為觀眾帶來強烈的沉浸式觀影體驗,而且打破了傳統(tǒng)膠片受限的內容題材,拓展了球幕影院的使用范圍[3]。近年來,國內球幕影院行業(yè)蓬勃發(fā)展,很多科技館、博物館、主題公園的場所都配置了球幕影院[4]。影院數(shù)量不斷增加,種類逐漸豐富,對數(shù)字球幕電影的制作能力和效率提出了更高的要求。
目前,數(shù)字球幕電影的主流制作手段是通過3D動畫實現(xiàn)的。所謂3D動畫,是指包含長、寬、高三個維度的動畫模式,建立完全虛擬的空間場景,目前已成為動畫產(chǎn)業(yè)發(fā)展的主流[5]。3D動畫的靈活性較強,可以自由地設定環(huán)境、視角、對象、光照等,不受實景拍攝時的各種限制條件的約束,也成為了沉浸式影像的主流制作方式。但是,由于球幕電影的畫面視角為360°*180°,覆蓋面積遠遠大于普通3D動畫電影,且分辨率一般達到4 000*4 000像素及以上,使用常規(guī)動畫生產(chǎn)手段需要面臨較為嚴峻的后期制作壓力。比如:受到3D動畫軟件中渲染相機的視角范圍及輸出分辨率的限制,大多數(shù)3D動畫軟件無法直接輸出適合球幕電影分辨率的魚眼圖片,所以需要通過多通道相機渲染后拼接的方式完成制作[6]。
目前,通過多通道拼接制作球幕電影的相關論文較少,如文獻[7]提出,將已拼接好的靜態(tài)全景圖像通過虛擬球面變換方式重投影,轉換為魚眼圖像[7],該方法需要先通過全景攝像機或其他方式得到全景圖像,制作方法并不適用全部動畫軟件。一些球幕電影制作公司,如Skansky、E&S等,將自身制作技術封裝成3D動畫軟件商用插件或軟件,如DomeXF、Glom等,這些軟件雖然能夠在動畫或后期軟件中適用于球幕影院的魚眼圖像,但是大多存在如下問題:其一,由于技術壟斷,價格昂貴,單一授權的插件售價幾千到上萬美元不等;其二,功能受限,針對目前多種類型的球幕影院,可調節(jié)參數(shù)較少,無法制作適配所有規(guī)格的球幕電影內容;其三,計算效率低,一般在3D軟件內使用CPU串行方式計算,面對較大分辨率或較多圖像序列幀等情況執(zhí)行效率低,成為制作環(huán)節(jié)中的瓶頸。
筆者長期從事球幕電影制作工作,經(jīng)過整理與實踐,提出一種適用于3D動畫球幕電影的魚眼圖像制作的設計及實現(xiàn)方法,并據(jù)此開發(fā)了相應的軟件程序。經(jīng)球幕放映系統(tǒng)的實驗測試,表明所提算法能正確地將二維魚眼圖像還原到球幕影院中,保證3D動畫制作的物體無任何扭曲,證明了算法的可行性與有效性。
提出的面向3D動畫球幕電影的魚眼圖像制作過程主要包括4個步驟:
(1)基于等距魚眼投影的數(shù)學模型,將二維的魚眼圖像與三維的虛擬球面建立映射關系;
(2)根據(jù)球幕影院的特點對虛擬球面進行變換;
(3)將虛擬球面與3D動畫空間位置建立映射關系;
(4)為上述步驟生成的魚眼圖像消除鋸齒。
上述4個步驟中,前3步將魚眼圖像的每個像素與3D動畫空間的位置建立一一映射關系,第4步對所得的魚眼圖像效果進行優(yōu)化。
球幕影院的屏幕是一個半球形的異形屏幕,而球幕電影通過魚眼圖像方式進行播放。所以,第一步就是通過坐標轉換將二維的魚眼圖像同三維的半球面影院屏幕建立映射關系。根據(jù)輸出魚眼圖像的分辨率設置,創(chuàng)建魚眼圖像并對該圖像上的每個像素進行坐標轉換,確定其對應三維球面的位置信息。
物體的影像由球面映射到平面,通過光軸的入射光會有顯著的折射,因此會有不同的投影方式,主要有等立體角投影、正射投影、等距投影、極射赤面投影等[8]。這些投影方式?jīng)]有優(yōu)劣之分,不同的投影方式適用于不同的應用場景。目前,通用的球幕電影魚眼圖像格式使用等距投影變換,即投影圖像上的點到圖像中心的距離和球面上對應點與球心連線到光軸的方向角成比例[9]。其示意模型如圖1所示,上部分表示地平式球幕影院半球面屏幕,下部分是寬高比1∶1的正圓形魚眼圖像,其映射關系為:球面弧度α正比于平面圖像上的距離d,數(shù)學公式為d=kα,一般在數(shù)學模型取k=1。這樣由球面映射到魚眼圖像在徑向上是均勻分布的,物體無任何扭曲,更符合人們所看到的現(xiàn)實世界。

圖1 等距魚眼模型
當前數(shù)字球幕電影的世界通用影像格式,是在2005年IPS(國際天文館協(xié)會)大會上,將球幕電影放映文件規(guī)范定義為等距方位魚眼圖像(equidistant azimuthal fisheye),它是一種基于等距變形的球面方位投影。該魚眼格式規(guī)定:球幕電影影像為寬高比1∶1的正圓形影像,圓形圖像的四邊與正方形邊框正交相切,如圖1下部分圖像所示。在地平式球幕影院中,圖像中心區(qū)域對應球頂,圖像下側對應放映影像的前方,圖像上側對應放映影像的后方,左側對應放映影像的左方,右側對應放映影像的右方。圖像水平視角360°,垂直視角180°[10]。
球幕電影制作過程中,需要制作魚眼圖像分辨率的寬和高分別為W和H像素,一般情況下W等于H。創(chuàng)建一幅正方形魚眼圖像,以它的中心作為原點,根據(jù)輸出的圖像分辨率W×H,將每個像素的寬、高坐標映射到[-1,1]的范圍內。如圖2所示,定義半徑r,表示A到圖像原點O的距離,取值范圍介于[0,1],如果半徑大于1,則該像素位置已不在魚眼圖像的正圓形區(qū)域內,不顯示圖像內容;定義方位角φ,表示線段OA與X軸正方向的夾角,取值范圍為[0°,360°]。則圖像中的任意像素坐標點A(w,h)的半徑r和方位角φ按照公式(1)(2)計算。

(1)

(2)
一般球幕電影的視場角度FOV為180°,即一個完整的半球面。但根據(jù)影視鏡頭或者腳本的需要,可以小幅調整視場角度范圍,獲取不同的畫面內容。如果視場角度大于180°,會在魚眼圖像畫面內存儲更多的內容,造成畫面徑向比例壓縮;較低的視場角度,效果相反,畫面內容拉抻。大于或者小于180°都會導致觀看的效果失真,為了避免畫面較大的變形,一般視場角度定義在160°~200°為宜。在制作過程中,如圖2所示,定義高度角θ,即線段OP與Z軸正方向的夾角,取值范圍為[0°,90°]。根據(jù)等距投影的數(shù)學公式,魚眼圖像上的半徑與球面上徑向弧度成正比例關系,所以A點并不在P點的垂直線上,只有當θ等于0°、90°時,A點與P點的垂直線上重合。根據(jù)球幕電影場景設定的視場角度FOV,結合等距投影計算數(shù)學公式,可得當前像素點A對應的球面高度角θ,如公式(3)所示。

(3)
x=sinθcosφ
(4)
y=sinθsinφ
(5)
z=cosθ
(6)

圖2 虛擬球幕示意圖
經(jīng)過以上變換,將魚眼圖像上的像素A(w,h)與虛擬的球面坐標P(x,y,z)建立映射關系[11]。
不同的球幕影院,由于大小、定位功能等不同,其傾斜角度、放映方式各不相同,在制作過程中,需要針對不同類型的球幕影院定制生成的魚眼圖像。本步驟將根據(jù)現(xiàn)有球幕影院特點進行球面變換,以保證所輸出魚眼圖像能夠匹配相應的影院特點。
1.2.1 根據(jù)影院傾斜角度變換
國內球幕影院按照傾斜角度和視角范圍大致可分為四類:
(1)0°傾斜的地平式天象廳球幕,視角180°×180°;
(2)15°傾斜的天象廳球幕,視角180°×180°;
都是好畫,都是好詞,但邪門的是,這些畫,這些字,讓李陸峰觸目驚心,特別是第四幅,那團赤焰騰騰的火,讓他額頭出汗,脊背生涼。不知不覺間,他就走向那掛走馬燈,一直走到燈下兩步遠的地方。然后,他解下腰間佩刀,舉起來,用刀鞘定住燈,不讓它走動,盯住那幅“烈火烹油大富貴”細看。他之所以沒有拔刀,不用利刃去撥走馬燈,說明他懂規(guī)矩,在這種場合,沒有正當理由,舞刀弄槍,顯然是不得體的。
(3)30°傾斜的IMAX球幕,視角180°×130°;
(4)90°傾斜的飛行球幕,視角180°×180°。
不同的傾角有著不同的體驗效果,也需要對不同的場景空間進行取舍。如0°傾角的地平式天象廳可以讓觀眾最大限度地獲得視角的主動控制權,其注意力主要在三維空間的頂部及半球形周向區(qū)域;90°傾角的飛行影院觀眾的視角方向被動地受限于座椅朝向,其注意力基本集中于球幕的頂點,即三維空間的正前方的區(qū)域[12]。所以,為了適應不同傾角的球幕影院,在制作過程中需要進行相應的球面旋轉變換,選取不同的場景。定義俯仰角pitch。對應影院的傾斜角度,以觀眾所示屏幕前方低頭旋轉方向為正。如上所述地平式球幕影院的pitch角度設為0°,飛行球幕影院的pitch角度設為90°,其余球幕影院根據(jù)實際傾斜角度設置。由步驟1.1可知,魚眼圖像像素點A對應的球面坐標是點P(x,y,z),則旋轉后得到的球面坐標點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)過球面旋轉后,可以得到魚眼圖像點A的球面坐標點P'的映射關系,滿足對應的球幕影院的不同傾角的需求。
1.2.2 根據(jù)投影機位置變換
球幕投影是指使用一臺或多臺投影機,在球形屏幕上投影出完整連續(xù)的畫面。投影放映系統(tǒng)方案分為兩種,對于直徑較小(6米以下)的球幕,投影放映系統(tǒng)可以用一臺裝有魚眼鏡頭的投影儀完成。對于直徑較大的球幕(6米以上)則需要采用多臺投影儀投影拼接的顯示方式[13]。當然,球幕直徑大小和所采用的投影放映方案沒有嚴格的界定,但是考慮到單投影放映方案的造價低廉,部署、操作簡單,易于維護,國內的小型球幕影院多采用此方案。等距魚眼圖像將圓心定為中心,對于單投影放映設備,需要置于球幕影院的球心處放映,才可以保證畫面正確投影到球面上而不變形。但同時,球幕影院的球心位置也是觀眾觀影的最佳區(qū)域,如果將投影機放置于此,在視覺上會遮擋觀眾視線,聽覺上產(chǎn)生較大的投影機噪聲,且單投影機配合魚眼鏡頭造成像素的損失,觀影體驗大打折扣[14]。


(10)
(11)

圖3 單投影機設備示意圖
經(jīng)過轉換后,可以得到魚眼圖像像素點A的球面坐標點P''的映射關系,滿足單魚眼投影機球幕影院不同的投影位置。根據(jù)實際影院傾角及放映環(huán)景,以上兩步1.2.1及1.2.2,可以選擇性地進行變換,將魚眼圖像上點A轉換坐標為P,P'或P''。
經(jīng)計算得到球面坐標上點P(或根據(jù)影院設置得到點P'或點P''),本步驟需要將球面坐標映射到虛擬的三維空間內。借助于3D紋理技術CubeMap模擬天空盒及環(huán)景反射的方法[15-16],將球面坐標與3D動畫空間建立映射關系。
在3D軟件中建立場景資源,根據(jù)球幕電影內容需要,選取中心點,并在該點構建6個相互正交虛擬攝像機,每個相機水平、垂直視角均為90°。確定好主攝像機拍攝角度后,渲染形成6個正方形圖像,分別對應左、右、頂、底、前、后六個方向。取每個正方形圖像左上角坐標為(0,0),右下角坐標為(0,1),即紋理坐標橫坐標u與縱坐標v取值范圍是[0,1],以確定每個貼圖指定像素的位置。

圖4 虛擬球面與CubeMap示意圖


表1 不同立方面對應的UV坐標
經(jīng)過此步驟變換,魚眼圖像任意一點像素點A(w,h),可以計算映射到由3D空間產(chǎn)生的CubeMap立方體上的點Q(u,v)。如果魚眼圖像上每個像素點重復執(zhí)行此操作,就可以建立平面圖像與3D動畫空間中的映射關系。
鋸齒是由于對連續(xù)信息進行離散采樣、存儲或表示等導致的一種信號失真現(xiàn)象[17-18],魚眼圖像的制作過程中,對立方圖中連續(xù)的高分辨率圖像進行離散的低分辨率采樣和映射,不可避免地會產(chǎn)生鋸齒及畫面細節(jié)丟失現(xiàn)象。目前,圖像的抗鋸齒技術較為成熟且多樣,可以采用傳統(tǒng)的超采樣抗鋸齒算法[19](Super-Sampling Anti-Aliasing,SSAA),通過直接增加圖像的采樣頻率來減弱鋸齒現(xiàn)象[20]。
首先,制作一個相較于目標魚眼圖像分辨率成比例放大的臨時魚眼圖像,比如,目標分辨率4 000*4 000像素,則輸出一個8 000*8 000像素分辨率的魚眼圖片;再對其中每個像素點對應的附近像素多次采樣,最終計算得到該像素著色的平均信息。這樣輸出的圖像可以有效降低鋸齒現(xiàn)象,但是相應帶來數(shù)倍的計算開銷,增加魚眼圖像的制作時間。在抗鋸齒步驟中,通過設置不同的臨時圖片分辨率及采樣次數(shù)會對抗鋸齒效果產(chǎn)生影響,但綜合考慮處理時間,一般以2倍的輸出分辨率,輸出的每個像素點取4個像素點平均采樣為宜。實際工作中,可以先輸出部分測試幀,觀察圖像的鋸齒現(xiàn)象,決定是否使用抗鋸齒步驟以及圖像抗鋸齒的具體參數(shù)設置。
為了驗證所提方法的有效性,通過編寫程序生成魚眼圖像進行仿真模擬。首先在3D動畫軟件Maya中通過定義6個正交的攝像機,視角范圍水平、垂直均為90°,渲染得到6通道圖像,圖像上的文字對應攝像機的方向面,生成6張分辨率500*500像素的正方形圖像,如圖5(a)所示。使用Python編寫腳本,通過上述流程生成分辨率為1 000*1 000像素的魚眼圖像,結果如圖5(b)所示;圖5(c)所示視角范圍為160的輸出圖像,對原有圖像進行拉伸;圖5(d)所示視角范圍為200的輸出圖像,原有圖像壓縮,獲取更多的畫面內容,一般魚眼圖像的視角范圍在這二者之間。圖5(e)是圖像鋸齒消除的對比圖像,圖左側為分辨率2 000*2 000像素通過抗鋸齒獲得魚眼圖像的中心局部圖;右側為分辨率1 000*1 000像素魚眼圖像中心局部圖,可見輸出的魚眼圖像存在較明顯圖像失真現(xiàn)象,使用抗鋸齒有著明顯的效果。該方法已經(jīng)應用制作了多部球幕電影,并在北京天文館天象廳(地平式球幕影院)、宇宙劇場(15°傾角球幕影院)以及國內外多個不同類型的球幕影院中播放,圖像形狀和比例正確,有效還原3D動畫中的物體形狀。

(a)CubeMap圖像

(b)魚眼圖像

(c)視角范圍160°圖像

(d)視角范圍200°圖像

(e)抗鋸齒比較圖像圖5 生成圖像
針對不同傾角的球幕影院,魚眼圖像需要相應的俯仰角旋轉,圖6(a)為15°傾斜的輸出效果,畫面更多顯示正前方內容,國內的天文館、科技館等較多的球幕影院帶有15°~30°的傾角;圖6(b)為90°傾斜飛行的圖像輸出效果,以正前方向為中心顯示畫面內容,常用于飛行影院。

(a)15°傾斜圖像 (b)90°傾斜圖像圖6 生成圖像
針對單魚眼投影機位置不在中心的球幕影院,以魚眼圖像下方方向為影院正前方,即-X軸方向,以中心為圓點,根據(jù)前文所述,Z軸數(shù)值一般等于0。假定投影機位于影院內左前方45°中心區(qū)域,則投影機坐標(-0.5,-0.5,0),生成圖像如圖7(a)所示,整體圖像向球幕影院左前方偏移;多數(shù)影院將單投影機放置在觀眾后方區(qū)域,既不影響觀眾觀影,也便于工作人員操作。假定投影機位于觀眾偏后方,坐標(0,0.8,0),則生成圖像如圖7(b)所示,投影內容的前方區(qū)域被拉伸放大,保證投影后畫面不變形。

(a)投影機坐標(-0.5,-0.5,0)圖像

(b)投影機坐標(0,0.8,0)圖像圖7 生成圖像
通過虛擬球面變換,提出了一種面向3D動畫球幕電影魚眼圖像制作的設計方法和實現(xiàn)步驟,實現(xiàn)由二維數(shù)字圖像到3D動畫場景空間的映射。使用該方法制作的魚眼圖像適用于國內外主流球幕影院播放,可定制性高;該方法不限制使用平臺與軟件,方便通過可執(zhí)行程序或者以3D動畫軟件插件的形式實現(xiàn);該方法既可以通過CPU并行計算,也可以使用GPU的CUDA程序完成,計算速度快。該方法步驟簡單,使用場景靈活,易并行化,可以作為制作3D動畫球幕電影的技術基礎使用。