蘇柳(四川大學計算機學院,成都 610065)
全景播放技術中的幀渲染
蘇柳
(四川大學計算機學院,成都610065)
近年來,隨著計算機技術的飛速發(fā)展,多媒體所包含的種類也越來越多,所能表現(xiàn)的形式以及能夠表現(xiàn)出的效果也越來越多,而一些比較傳統(tǒng)的表現(xiàn)方式也越來越無法滿足大部分客戶對于展示方式的要求。
全景播放技術是把二維的平面圖模擬成真實的三維空間,呈現(xiàn)給觀賞者,使觀賞者能夠從各個方向和任意的角度觀看場景,以達到模擬和再現(xiàn)場景的真實環(huán)境效果。在全景播放系統(tǒng)中,其中一項關鍵的技術是全景圖像的渲染,由于序列幀不可能一次性地讀入內(nèi)存,所以播放的幀率也是一個需要解決的問題。本文采用等距圓柱投影法使全景圖得到正確的渲染,并在渲染的過程中采用緩沖區(qū)對象的技術和紋理替換的技術來提高幀率。
1.1等距圓柱投影法
全景圖是一種廣角圖,其視角涵蓋地平線正負各180°,垂直正負各90°,目前使用較廣泛的是等距圓柱投影法,該方法又被稱為球面投影或簡化圓柱投影,假設球面和圓柱面相切于赤道,將球面上的經(jīng)緯線投影到圓柱面上,然后沿圓柱面的一條母線展開成平面的一種投影[1-2]。圖1展示了這種投影方法。
圖1 等距圓柱投影
使用等距圓柱投影得到的全景圖經(jīng)緯線之間等距,所以這種全景圖的長寬比例固定為2:1。圖2是使用等距圓柱投影得到的完整全景圖。
全景播放技術支持這種格式的全景圖,系統(tǒng)可以渲染完整的全景圖。全景圖像的渲染過程與上述全景圖像的獲取過程正好相反,渲染全景圖是將該全景圖作為紋理,粘貼到球體模型上。在OpenGL中,紋理貼圖需要將紋理坐標與點的空間三維坐標一一對應,將全景圖分割成360×180個小方格,通過這種方式渲染出來的全景圖精度是足夠的,紋理坐標以圖像的左下角為(0,0)點,向上為y軸正方向,向左為x軸正方向,這樣很容易就能得到對應點的紋理坐標,同時,由于全景圖中經(jīng)緯度坐標是等間距分布的,這里假設圖像最左下角為(0°,0°),求出每個點對應的經(jīng)緯度坐標。需要強調(diào)的是,圖像在內(nèi)存中是倒著存放的,所以這里的左下角實際上是圖像的左上角。
對于全景圖中任意一點P,P點距全景圖左邊長度為 a,距下邊的長度為 b,這里采用(a,b)表示 P點在全景圖中的位置。全景圖的寬度為 width,高度為height,那么P點的紋理坐標為(a/width,b/height),根據(jù)先前定義的經(jīng)緯度坐標系,易得P點的經(jīng)緯度坐標(a/ width×360,b/height×180)。
在三維空間坐標系中,假定坐標系原點是經(jīng)緯球的球心,y軸穿過經(jīng)緯球的兩個極點,經(jīng)緯球經(jīng)度為0°的經(jīng)線與 z軸的負半軸相交,該經(jīng)緯球半徑為1,經(jīng)緯球上點Q的經(jīng)緯度為(i,j),那么對應的三維坐標為:
綜上所述,已知全景圖中的一點P在全景圖中的位置是(a,b),全景圖的寬度為 width,高度為 height可得其紋理坐標為(a/width,b/height),其三維空間坐標為:
全景播放技術使用上述坐標轉(zhuǎn)換的方法實現(xiàn)全景圖的渲染。圖3展示了這一轉(zhuǎn)換過程。
圖3 坐標轉(zhuǎn)換過程
1.2VBO和VAO
做全景圖渲染的過程中,使用了OpenGL中緩沖區(qū)對象(buffer object)的技術[3],OpenGL是按照客戶機-服務器模式設計的,OpenGL中處理數(shù)據(jù)時,必須將數(shù)據(jù)從客戶機內(nèi)存?zhèn)鬏數(shù)椒掌髦校达@卡的顯存中,當數(shù)據(jù)沒有修改時,這樣的方式是不需要的,所以OpenGL在 1.5版本時增加了緩沖區(qū)對象,能夠允許應用程序顯示的指定數(shù)據(jù)傳輸?shù)椒掌髦校@樣就當數(shù)據(jù)沒有修改時,就不需要重新傳輸,增加了處理的效率。VBO即Vertex Buffer Object[3],VBO其實就是顯卡中的顯存,為了提高渲染速度,可以將要繪制的頂點數(shù)據(jù)緩存在顯存中,這樣就不需要將繪制的頂點數(shù)據(jù)重復從CPU發(fā)送到GPU。OpenGL3.0中增加了頂點數(shù)組對象VAO,即Vertex Array Object[3],封裝和使用頂點數(shù)組相關的狀態(tài)參數(shù)。這些類型的對象允許我們使用較少的函數(shù)調(diào)用就能夠修改大量的狀態(tài)設置,使用其可以盡可能使性能達到最大化。
紋理映射技術本質(zhì)上是通過使用圖片像壁紙一樣粘在物體模型的表面上來模擬細節(jié),使用紋理映射技術即可以提高模擬的逼真度,而且還可以加快顯示速度[3]。圖4為紋理映射的原理圖。
T(u,v)代表相應的紋理像素,P(x,y,z)代表物體上的點,S(xD,yD)代表屏幕空間的投影點,通過紋理空間、物體空間和屏幕空間之間的一系列的變換過程,最終在屏幕上形成三維效果的畫面。
和修改原有紋理相比,創(chuàng)建新紋理的開銷更大一些。用新的信息修改一個現(xiàn)有紋理的全部或一部分常常比從頭創(chuàng)建一個新紋理更合適[4]。在全景播放系統(tǒng)中,由于是對序列幀進行播放,如果每次播放一幀就去創(chuàng)建一個新的紋理,會大大降低程序的幀率,所以采用替換紋理的技術,先創(chuàng)建一個紋理,然后反復調(diào)用相應的替換紋理函數(shù),用新的序列幀紋理作為紋理數(shù)據(jù)。
圖4 紋理映射原理圖
圖5為全景圖的渲染效果圖。
對不同分辨率的全景圖在相同的配置環(huán)境下做幀率測試,比較未采用紋理替換與采用紋理替換后的幀率,這里測試的是硬盤中圖像的播放幀率而不是內(nèi)存中圖像的播放幀率,因為不可能將序列幀一次性地加載到內(nèi)存。
表1 幀率測試結(jié)果
通過表1可以看出,采用紋理替換后,幀率的提升非常明顯。由此可以看出,采用紋理替換技術,可以有效地提高幀率。
本文采用等距圓柱投影實現(xiàn)了全景圖的正確渲染,并采用緩沖區(qū)對象的技術和紋理替換技術有效地提高了全景播放系統(tǒng)的播放幀率。
圖5 全景圖渲染效果圖
[1]Donald Hearn,M.Pauline Baker.計算機圖形學(第三版)[M].蔡士杰,宋繼強,蔡敏譯.北京:電子工業(yè)出版社,2010.7.
[2]郭俊美.基于圖像的柱面全景圖生成技術研究[D].西安:西安科技大學,2010.
[3]Dave Shreiner,Graham Sellers,John Kessenich,Bill Licea-Kane.王銳等譯.OpenGL編程指南(原書第8版)[M].北京:機械工業(yè)出版社,2014
[4]Richard S.Wright,Jr,Nicholas Haemel,Graham Sellers,Benjamin Lipchak.OpenGL編程寶典[M].北京:人民郵電出版社,2013.3.
Cylindrical Equidistant Projection;Frame Rendering;Coordinate Transformation;Texture Substitution
Rending in the Panoramic Display Technology
SU Liu
(College of Computer Science,Sichuan University,Chengdu 610065)
1007-1423(2015)23-0039-04
10.3969/j.issn.1007-1423.2015.23.009
蘇柳(1989-),男,湖北鐘祥人,碩士研究生,研究方向為圖形圖像技術
2015-07-06
2015-08-03
近年來,隨著計算機技術的飛速發(fā)展,多媒體的表現(xiàn)形式也越來越多。全景播放技術是指將全景序列圖逐幀正確地渲染到二維的顯示器上,實現(xiàn)任意方向和角度觀賞的360度全景景觀的效果。為了正確地渲染全景圖,采用等距圓柱投影法,經(jīng)由一系列的坐標變換,最后轉(zhuǎn)換為正確的三維坐標。為了提高播放幀率,在幀渲染的過程中采用緩沖區(qū)對象的技術和紋理替換的技術。實驗結(jié)果表明,該方法使全景圖得到正確的渲染,有效地提高播放的幀率。
等距圓柱投影;幀渲染;坐標變換;紋理替換
國家“863”計劃項目(No.2013AA013902)
In recent years,with the rapid development of computer technology,multimedia also has more forms.Panoramic display technology refers to the sequence diagram frame by frame rendering on two-dimensional display correctly,and implements the effect that you can view the 360 degree panoramic from any direction and angle.In order to correctly render panorama,uses cylindrical equidistant projection method,through a series of coordinate transformation,and finally converted to the correct three-dimensional coordinates.To improve the broadcast frame rate,in the process of rendering,uses the buffer object technology and texture substitution technology.The experimental results show that the method makes panorama properly rendering,and effectively improves the play of the frame rate.ate.