王行風,汪云甲
(中國礦業(yè)大學 環(huán)境與測繪學院,徐州 221116)
伴隨著城市空間立體化開發(fā)進程的加速,室內空間應用的總規(guī)模大幅增加,室內環(huán)境越來越復雜,功能也越來越重要。同時伴隨著物聯(lián)網感知定位技術的發(fā)展,基于大型場館的室內導航應用需求越來越受到關注,導航由室外進入室內成為地理信息系統(tǒng)(geographic information system,GIS)進一步發(fā)展的必然[1]。
傳統(tǒng)的導航應用主要集中于室外區(qū)域,技術上則主要利用二維矢量地圖或二維影像來實現(xiàn),雖然部分產品初步實現(xiàn)了添加興趣點三維模型的功能,但基礎底圖依然是采用二維矢量地圖進行展示。在室內復雜環(huán)境下,尤其是在多層大型建筑物內部,這種基于二維矢量/柵格的導航地圖往往因為不夠直觀而難于為用戶提供快速理解周邊環(huán)境及所處方位的足夠信息[2-3]。因此,基于增強現(xiàn)實技術,面向個人移動平臺(手機、平板等)研發(fā)室內三維導航系統(tǒng)已成為當前位置服務領域新的研究熱點和重點領域[4-5]。但個人移動平臺固有的存儲容量和計算能力有限的現(xiàn)狀以及用戶對三維模型的高逼真度、流暢渲染等的現(xiàn)實需求之間的矛盾使得個人移動平臺端的三維模型可視化質量和繪制效率成為室內三維應用中迫切需要解決的工程問題[6-7]。
模型復用、多細節(jié)層次、動態(tài)調度以及可見性裁減都是三維應用中普遍采用的實時渲染技術[8-12]。本文擬從輕量化建模的角度,利用數(shù)據(jù)庫技術重新組織三維模型數(shù)據(jù),通過合理的數(shù)據(jù)重構,有效降低數(shù)據(jù)冗余,提升數(shù)據(jù)傳輸和繪制的效率,為高逼真度的三維模型可視化繪制奠定可靠的數(shù)據(jù)基礎和保證。
圖1 3D場景數(shù)據(jù)組織和管理
三維模型的表示方法有柵格和矢量兩種類型。柵格類型基于體元、結構簡單、空間疊加操作方便,但占用存儲空間大、數(shù)據(jù)精度低、缺乏空間拓撲關系,不利于空間分析等的實現(xiàn)[9-10]。矢量類型利用坐標來表達空間對象,在一定程度上克服了柵格數(shù)據(jù)冗余嚴重、精度低的缺點,同時又可以采用數(shù)據(jù)庫技術對模型實體之間的拓撲關系進行管理,因此宜于空間分析操作的有效實現(xiàn)。因此,
矢量結構是實際應用中三維建模中常用的數(shù)據(jù)類型。矢量格式的三維數(shù)據(jù)多以模型對象為基本單元進行數(shù)據(jù)的組織和管理。但隨著用戶對模型高逼真度的追求,模型數(shù)據(jù)量飛速增長,單個復雜實體的真三維模型就可能包含幾萬、幾十萬甚至幾百萬個多邊形,從而導致系統(tǒng)繪制效率低下[11],難以滿足個人移動平臺三維(3D)模型及場景流暢渲染的需求。本文采用矢量數(shù)據(jù)類型,在考慮室內三維空間導航及網絡路徑拓撲構建需要的基礎上,參考相關文獻[7,12-13],結合渲染引擎的工作機理,將3D模型對象抽象為頂點、三角面、外觀(材質/紋理)等基本單元,對3D模型數(shù)據(jù)進行重新組合和優(yōu)化處理,構造了針對三維數(shù)據(jù)的SLMATV數(shù)據(jù)組織和管理方案(場景-模型層-模型-外觀-三角形-頂點,scene-layer-mode-appearance-triangle-vertex,SLMATV),獲得較為緊湊的模型數(shù)據(jù)組織方式,在兼顧渲染效率的基礎上,以達到模型輕量化的目的。數(shù)據(jù)組織和管理方案見圖1。場景是由一個或多個圖層以及圖層屬性值的集合,圖層是根據(jù)不同的主題進行組織的模型集合體,是一個獨立單位。SLMATV主要是側重于從降低數(shù)據(jù)冗余,實現(xiàn)模型數(shù)據(jù)輕量化的角度以到達流暢渲染的目的?;舅悸窞椋?/p>
圖2 簡單立方體
三角形ID點幾何坐標法向量貼圖坐標點ID點坐標法向ID法向向量ID坐標Point1x1,y1,z1normal1nx1,ny1,nz1Texture1tx1,ty1三角形1Point4X4,y4,z4normal4nx4,ny4,nz4Texture4tx4,ty4Point5x5,y5,z5normal5nx5,ny5,nz5Texture5tx5,ty5Point6x6,y6,z6normal6nx6,ny6,nz6Texture6tx6,ty6三角形2Point5x5,y5,z5normal5nx5,ny5,nz5Texture5tx5,ty5Point4x4,y4,z4normal4nx4,ny4,nz4Texture4tx4,ty4Point4x4,y4,z4normal4nx4,ny4,nz4Texture4tx4,ty4三角形3Point1x1,y1,z1normal1nx1,ny1,nz1Texture1Tx1,ty1Point3x3,y3,z3normal3Nx3,ny3,nz3Texture3Tx3,ty3……………………
頂點實體數(shù)據(jù)主要包括幾何坐標、法向量及貼圖坐標等屬性信息,其存儲的傳統(tǒng)方法多是以模型頂點為存儲的基本單元逐三角形存儲。這里以圖2的簡單立方體為例,傳統(tǒng)的存儲方式如表1,從中可見,頂點1為6個三角形所共有,它的幾何坐標、法向量和貼圖坐標最多可能被存儲6次,這種存儲方法導致數(shù)據(jù)冗余現(xiàn)象較為嚴重,直接影響了數(shù)據(jù)的讀取及模型的渲染效率[7]。本文從降低數(shù)據(jù)冗余的角度,按照“頂點·屬性·索引列表”的思想對頂點的數(shù)據(jù)進行重新組織,組織方式為將頂點的幾何坐標、紋理和法線向量等作為屬性信息分別以列表方式存儲(表2、表3和表4),這種存儲方式頂點的幾何信息、紋理坐標和法線向量信息分別列表進行存儲,沒有重復存儲的節(jié)點信息,考慮到三維模型頂點數(shù)據(jù)眾多,這樣可以大幅度減少存儲的空間占用。
表2 頂點幾何坐標表
表3 頂點法向量
表4 紋理坐標
注:w指深度紋理坐標。
3D實體建模多以單個平面作為基本組織和繪制單元。一般來說,單個3D模型包含很多平面,很多情況下,這些平面可能具有相同的材質。繪制的時候渲染引擎(如OpenGL等)多會逐個平面進行繪制[7,9],這就不可避免的造成多個材質的頻繁切換,從而影響到三維模型的渲染效率[14]。因此,為了提高繪制效率和渲染的速度,SLMATV方案改成以材質和紋理狀態(tài)為單位的數(shù)據(jù)存儲方式,并集中存儲具有相同紋理和材質屬性的模型數(shù)據(jù),一個appearance可能具有多個平面,但這些平面具有完全相同的材質,從而避免材質的頻繁切換或者著色器的傳送次數(shù)。SLMATV方案采用數(shù)據(jù)庫存儲技術存儲的外觀表見表5和表6。
構建索引表的目的是通過提供索引信息來消除相鄰模型邊界、公用頂點之間的數(shù)據(jù)冗余和不一致的問題。索引表的建立雖是添加了額外的數(shù)據(jù),但相比之下,整型數(shù)據(jù)的索引信息要比存儲大量重復的浮點型的頂點屬性信息數(shù)據(jù)存儲開銷要小得多。這是實現(xiàn)達到模型輕量化的關鍵環(huán)節(jié),具體方法是在對3D頂點屬性、外觀對象數(shù)據(jù)存儲的基礎上,構建模型·外觀、外觀·三角形、三角形·頂點、三角形·三角形關系等索引表。
表5 外觀·材質表
注:此處的光照模型采用Phong模型,tf,ka,kd,ks,ke為4個float值,其余都為單個float。
表6 外觀·紋理表
2.3.1 模型·外觀索引表
一個實體模型可能由不同的外觀,如材質/紋理構成的。外觀可由一個以上的多個平面組成,是最基本的繪制單位。模型-外觀索引表表達了模型由哪些外觀組成的,具體如表7。在進行模型繪制的時候,可以外觀進行繪制。
表7 模型·外觀表
2.3.2 外觀·三角形索引
一個外觀包含了諸多頂點,構成了數(shù)目眾多的三角形。外觀-三角形索引表保存了構成外觀的三角形頂點的索引,數(shù)目眾多,在繪制的時候就可以根據(jù)索引獲得三角形頂點屬性信息。索引表的結構見表8。
表8 外觀·三角形表
2.3.3 三角形·頂點索引
三角形利用構成其三頂點在頂點數(shù)組中的索引值來表達,三角形的一個頂點需要保存兩個索引值,分別對應幾何坐標、紋理坐標或法向量列表中的索引號(當三角形上有紋理時,僅保存幾何坐標和紋理坐標;當無紋理時,僅保存幾何坐標和法向量值)。索引表的結構見表9。
2.3.4 三角形·三角形關系表索引
三角形關系表反映了三角形之間的鄰接關系,能夠呈現(xiàn)三角形之間的拓撲關系,在需要對三角形進行邊界分析和處理的時候,這種三角形拓撲關系具有莫大的幫助,有助于空間查詢、空間分析處理等實現(xiàn)[15,16]。例圖(圖3)和相應的索引表的結構見表10。
表9 三角形·頂點索引表
圖3 三角形關系
ID鄰接關系AB,EBA,CCB,DDC,EEA,D
本文利用矢量模型,采用數(shù)據(jù)庫技術對三維模型數(shù)據(jù)進行組織和重構,通過降低數(shù)據(jù)量和減少渲染計算量從而改善個人移動平臺上三維模型的繪制效率。為測試本文所提方法的實用性,此處選擇了5個不同規(guī)模的3D模型(花盆、座椅、樓梯、屏風、辦公室)作為樣本進行測試分析(圖4)。選用的測試個人平臺為三星GALAXY Note 10.1,處理器為Exynos 5420,屏幕為10.1英寸,分辨率為2 560*1 600,操作系統(tǒng)為安卓(Android)4.3。
測試方法是比較建模軟件所構建的三維模型數(shù)據(jù)與本文方案所重構數(shù)據(jù)之間的數(shù)據(jù)量差異,這將直接降低系統(tǒng)的存儲空間以及減少系統(tǒng)IO訪問的時間開銷。表11是幾何模型重構前后的數(shù)據(jù)壓縮率對比表,從表中可以看出,不同規(guī)模的3D模型數(shù)據(jù)量都出現(xiàn)了減少,壓縮率最高可以達到36.5%,有效提升了模型數(shù)據(jù)從外存儲器(SDCARD)調入顯存的讀取效率。而且由于模型頂點和三角面法向量信息的預先存儲、以空間換時間的策略有效降低了個人移動平臺的計算開銷,能夠明顯改善模型渲染效率。需要說明的是,由于紋理貼圖的圖片是以外部文件的方式存儲在SDCARD中的,具體應用時才調入。因此,表中所計算的數(shù)據(jù)量不包含紋理圖片,且由于在紋理貼圖的時候,法向量信息不再需要,因此,對于利用大量貼圖圖片的模型來說,數(shù)據(jù)量可以實現(xiàn)進一步的壓縮。
表11 樣本數(shù)據(jù)外觀幾何模型數(shù)據(jù)壓縮對比
圖4 測試樣本
為了測試所提方案應用的綜合性能,本文利用某單位辦公室作為綜合性能測試樣本??紤]到個人移動平臺的渲染性能,對幾何模型造型進行了一定的概括和簡化,并未完全仿照實景構建,但由于模型較多,數(shù)據(jù)量的規(guī)模達到了15 MB,壓縮后數(shù)據(jù)規(guī)模也達到了約10 MB左右(表11)。在未采用可見面裁剪、多細節(jié)層次等實時渲染技術的前提下,客戶端平臺的屏幕刷新率達到了15 fps,而在采取相關實時繪制技術之后,屏幕刷新率可以到18~20 fps(圖5),完全可以滿足個人移動平臺三維模型流暢渲染交互漫游的實時要求。
圖5 綜合性能測試(辦公室內部)
隨著移動互聯(lián)網時代的到來以及個人移動平臺技術的發(fā)展,基于智能終端平臺開發(fā)室內三維導航產品,具有內在發(fā)展的實際需要。在目前移動平臺存儲容量、網絡傳輸帶寬以及計算能力依然有限的前提下,對室內三維場景進行輕量化建模,減小三維模型的資源量,縮短渲染時間,提高渲染的流暢性,便于移動平臺客戶端的三維數(shù)據(jù)傳輸和人機交互,成為室內三維導航應用的關鍵技術之一。本文針對移動平臺三維模型渲染的特點,給出了SLMATV數(shù)據(jù)重構的思路,對三維模型數(shù)據(jù)進行重新組織和優(yōu)化,消除數(shù)據(jù)冗余,去除與渲染無關的信息。實例測試表明,該方案對于三維模型數(shù)據(jù)的輕量化,提升三維模型的合理調度、快速構建和高速渲染大有裨益,可以在保證渲染效率和質量的基礎,支持室內場景的三維模型展現(xiàn),為移動平臺室內三維導航、GIS應用提供可視化的數(shù)據(jù)源。在此基礎上進一步分析和整合,構建能夠統(tǒng)一描述室內空間多種特征的室內拓撲模型構建以及輔助提高室內定位系統(tǒng)定位精度的三維地圖匹配技術等方面是進一步深入研究和進行突破的關注點。
[1] 王思寧.從室外到室內的微時代[J].軟件工程師,2012(10):9-10.
[2] NOSSUM A S.Indoor Tubes a Novel Design for Indoor Maps[J].Cartography and Geographical Information Science,2011,33(2):192-200.
[3] 張朝.基于Web 的房屋虛擬展示關鍵技術的研究[J].科技傳播,2010(11):258-260.
[4] 張?zhí)m,王光霞,袁田,等.室內地圖研究初探[J].測繪與空間地理信息,2013,36(9):43-47.
[5] HUANG B.Web-based Dynamic and Interactive Environmental Visualization[J].Computers,Environment and Urban Systems,2003,27(6):62-636
[6] 龔俊,柯勝男,鮑曙明.顧及高效可視化的CAD模型數(shù)據(jù)組織方法[J].計算機應用研究,2008,25(10):3056-3059.
[7] 關云,劉幸.3dsmax5 室內設計經典作品解析[M].北京:中國電力出版社,2003.
[8] DUMN F,PARBERRY L.3D數(shù)學基礎:圖形與游戲開發(fā)[M].史銀雪,陳洪,王榮靜,譯.北京:清華大學出版社,2005.
[9] 張海榮.地理信息系統(tǒng)原理與應用[M].徐州:中國礦業(yè)大學出版社,2008.
[10] 李曉明.顧及語義拓撲的大規(guī)模三維空間數(shù)據(jù)高效管理方法[D].武漢:武漢大學,2011.
[11] 陳靜,吳思,謝秉雄.面向GPU繪制的復雜三維模型可視化方法[J].武漢大學學報:信息科學版,2014,39(1):106-111.
[12] 劉剛,吳沖龍,何珍文,等.地上下一體化的三維空間數(shù)據(jù)庫模型設計與應用[J].中國地質大學學報,2011,36(2):367-374.
[13] 朱慶,李曉明,張葉廷,等.一種高效的三維GIS 數(shù)據(jù)庫引擎設計與實現(xiàn)[J].武漢大學學報:信息科學版,2011,36(2):127-132+139.
[14] 張劍清,賀少軍,蘇國中.三維模型重建中影像紋理重組織方法研究[J].武漢大學學報:信息科學版,2005,30(2):115-117+185.
[15] 朱慶.3維GIS 技術進展[J].地理信息世界,2011(2):25-27+33.
[16] 朱慶.三維GIS及其在智慧城市中的應用[J].地球信息科學,2014,16(2):151-157.