赫春曉,呂志慧,邱 天,陳 超
(1. 江蘇省測繪研究所,江蘇南京210013;2. 江蘇省基礎(chǔ)地理信息中心,江蘇南京210013)
近年來,隨著Web技術(shù)的發(fā)展,尤其是Web3D技術(shù)的發(fā)展,促使Web 技術(shù)逐漸往三維方向發(fā)展。伴隨著HTML5、WebGL 等規(guī)范的建立和完善,及以谷歌、火狐等為代表的主流瀏覽器對WebGL 規(guī)范的全面支持[1-2],在Web3D 方面涌現(xiàn)了一批優(yōu)秀的基于WebGL 的三維JavaScript 開源庫,從而使得傳統(tǒng)的依賴于桌面端或是瀏覽器插件式的三維應(yīng)用逐漸轉(zhuǎn)向Web端無插件三維應(yīng)用。但是,受限于瀏覽器本身性能和三維數(shù)據(jù)體量,當(dāng)三維應(yīng)用的數(shù)據(jù)量達(dá)到或超過城市級時,三維模型的渲染效率易受到影響,從而造成用戶的瀏覽體驗較差。因此,本文旨在對應(yīng)用較廣泛的以傾斜攝影三維模型和人工精細(xì)三維模型為代表的表面三維模型為對象,研究城市級表面三維模型的數(shù)據(jù)優(yōu)化方法,以期用于提升Web 端城市級表面三維模型的渲染效率,增強Web 端大規(guī)模表面三維模型的展示能力。
細(xì)節(jié)層次(Level of detail,LOD)技術(shù)[3-5]利用幾何體包圍盒計算觀察者與物體的距離,使用戶可以根據(jù)物體模型的節(jié)點在顯示環(huán)境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數(shù)和細(xì)節(jié)度,從而獲得高效率的渲染運算。該技術(shù)是最常用作提升三維模型渲染效率的技術(shù)方法。本文的優(yōu)化方法也是依據(jù)LOD技術(shù)思路構(gòu)建并優(yōu)化表面三維模型的層次細(xì)節(jié),從而達(dá)到提升城市級表面三維模型渲染效率的目的。
本文研究對象為應(yīng)用較廣泛的傾斜攝影三維模型和人工精細(xì)三維模型。傾斜攝影三維模型多是通過專業(yè)的三維軟件生產(chǎn)得到的,數(shù)據(jù)普遍由算法對航拍傾斜攝影數(shù)據(jù)自動計算生成,數(shù)據(jù)體量大,表面結(jié)構(gòu)復(fù)雜,數(shù)據(jù)本身內(nèi)置了LOD。模型紋理經(jīng)過了軟件的壓縮和優(yōu)化。
人工精細(xì)三維模型廣泛來源于傳統(tǒng)C/S 三維地理信息系統(tǒng)數(shù)據(jù),由人工利用3dsmax 等建模軟件創(chuàng)建的三維模型。該類模型表面幾何細(xì)節(jié)相對有限,模型三角面數(shù)量普遍較少,總體的數(shù)據(jù)體量相對較小。為在表面幾何細(xì)節(jié)有限的情況下盡可能提高視覺效果,數(shù)據(jù)可能大量使用高分辨率紋理,甚至可以占數(shù)據(jù)總?cè)萘康?0%以上,會極大制約渲染效率。
由于兩種模型在模型特點上不同,因此盡管兩種模型結(jié)構(gòu)相似,但是處理方法不同,傾斜模型LOD的優(yōu)化重點在于模型幾何壓縮,而人工精細(xì)三維模型LOD的優(yōu)化除幾何壓縮之外,更重要的優(yōu)化體現(xiàn)在模型的紋理壓縮方面。
1.3.1 傾斜攝影三維模型優(yōu)化方法
傾斜攝影三維模型通常是由軟件按照LOD 的要求創(chuàng)建的,模型本身是按照LOD進行組織的,但是這種內(nèi)置的細(xì)節(jié)層次模型主要面向桌面環(huán)境,對于Web應(yīng)用存在粗細(xì)節(jié)層次模型層級不足的問題,遠(yuǎn)景瀏覽時加載速度慢,對城市級數(shù)據(jù)影響尤為嚴(yán)重。因此,針對現(xiàn)有層次細(xì)節(jié)不足的問題,本文擬通過在原有細(xì)節(jié)層次的基礎(chǔ)上,通過添加更粗粒度的層次細(xì)節(jié),從而提升遠(yuǎn)景瀏覽顯示效率。
本文采用了頂層節(jié)點合并壓縮的方式構(gòu)建粗粒度的層次細(xì)節(jié)。方法根據(jù)傾斜模型分塊生產(chǎn)的特性,將模型按照行列索引進行重排列構(gòu)建以0行0列為原點的行列索引模型矩陣,將N*N的子矩陣從原點開始間隔N進行移動,與模型矩陣套合,將子矩陣內(nèi)涉及的模型進行合并,從而擴展得到上一級的細(xì)節(jié)層次,循環(huán)執(zhí)行該過程直到頂層的數(shù)據(jù)量小于設(shè)置的閾值為止。
合并后的模型壓縮方法通常可通過常規(guī)的模型簡化方法進行。傾斜模型原始最粗一級實際上細(xì)節(jié)已經(jīng)較少,再往上簡化,模型的細(xì)節(jié)完全可以忽略,只需保留外輪廓及紋理即可滿足視覺上的可視化效果,因此,可通過構(gòu)建模型三維凸包[6]的方式替代模型簡化,一方面可以減少模型簡化迭代計算的工作量,另一方面,可以極大地減少模型的數(shù)據(jù)量。
合并后模型的紋理壓縮方法通過紋理烘焙進行,利用紋理烘焙對合并后的模型紋理進行壓縮,將新生成的紋理作為模型三維凸包的紋理,進行紋理映射得到最終的簡化模型。處理的邏輯及成果如圖1所示。
1.3.2 人工精細(xì)三維模型優(yōu)化方法
人工精細(xì)模型由于本身不具備層次細(xì)節(jié),因此優(yōu)化方法主要是構(gòu)建人工精細(xì)模型的層次細(xì)節(jié)。最精細(xì)級為原始模型,為加快渲染效率,本文對原始模型進行拆分處理,在保留原始細(xì)節(jié)的基礎(chǔ)上,得到多個小塊模型,從而解決單個模型數(shù)據(jù)量大加載慢的問題。本文采用基于紋理的模型拆分方法進行:首先讀取模型的原始紋理目錄,然后以紋理為單元劃分不同的紋理單元,對模型按照劃分出的紋理單元處理,將共用同一紋理單元的部分拆分出來,進而得到不同紋理單元的多個子塊,實現(xiàn)大尺寸模型的拆分,如圖2所示。
圖1 傾斜攝影三維模型優(yōu)化處理示意
圖2 基于紋理的模型拆分示意
中景的多級粗細(xì)節(jié)層次模型處理,一方面按照固定壓縮比對粗細(xì)節(jié)層次模型的三角面幾何進行壓縮;一方面使用烘焙技術(shù)將模型紋理替換為低分辨率單一紋理。
遠(yuǎn)景的多級粗細(xì)節(jié)層次模型,對于城市級數(shù)據(jù)而言,需顧及大范圍的模型合并壓縮。本文主要以模型文件為單元,將一個模型文件內(nèi)的全部模型進行合并,對合并后的模型構(gòu)建三維凸包,區(qū)塊紋理合并后進行紋理烘焙壓縮區(qū)塊紋理,生成遠(yuǎn)景的多級細(xì)節(jié)層次模型。處理流程示意圖如圖3所示。
選取約50 km2的某市傾斜攝影三維模型和約110 km2的某市人工精細(xì)三維模型為對象,利用提出的模型優(yōu)化方法構(gòu)建面向Web 端城市級LOD 模型,驗證方法的可行性。
圖4 為傾斜攝影三維模型,其中圖4a 為遠(yuǎn)景全貌,通過模型頂層向上合并,并經(jīng)過紋理烘焙減小遠(yuǎn)景節(jié)點的數(shù)據(jù)量,從而提升加載速度。圖4b 和圖4c為中景和近景模型原LOD的顯示效果。
圖5 為人工精細(xì)三維模型,其中圖5a 和圖5b 為遠(yuǎn)景全貌和中景,通過區(qū)塊模型合并壓縮和紋理合并壓縮生成粗細(xì)節(jié)模型。圖5c中離視角近的為原始模型經(jīng)過拆分后的模型,通過模型拆分方式達(dá)到不影響顯示效果的情況下,減少單個模型的數(shù)據(jù)量從而提升加載速度;離視角遠(yuǎn)的為單個模型經(jīng)過模型簡化和紋理烘焙生成的較低分辨率模型。
從實驗結(jié)果可以看出,本文提出的方法可以較好地適應(yīng)城市級大范圍表面三維模型的渲染,構(gòu)建的模型LOD能夠提升Web環(huán)境下城市級表面三維模型的加載渲染效率,提升用戶體驗。
本文在傾斜攝影三維模型優(yōu)化方面,依據(jù)三維模型數(shù)據(jù)特點,基于LOD技術(shù),通過對現(xiàn)有最粗節(jié)點的合并構(gòu)建三維凸包,并利用紋理烘焙方法壓縮模型紋理的方法,構(gòu)建了面向Web 端城市級大范圍數(shù)據(jù)的多級層次細(xì)節(jié),解決模型的原始LOD 在網(wǎng)絡(luò)環(huán)境下層級不足,加載過慢影響渲染效率的問題。在人工精細(xì)模型優(yōu)化方面,通過對原始模型基于共用紋理單元進行拆分,在不影響原始模型精細(xì)程度的基礎(chǔ)上,解決了模型過大加載緩慢的問題。通過模型幾何壓縮,以模型文件為單元的區(qū)塊模型合并構(gòu)建三維凸包的方式構(gòu)建中景至遠(yuǎn)景的層次細(xì)節(jié),并結(jié)合紋理烘焙方法對原紋理進行壓縮,大大減少了模型紋理的數(shù)據(jù)量,構(gòu)建了面向Web 端城市級人工精細(xì)模型的多級層次細(xì)節(jié)。此外,以城市級別的兩類三維模型為對象,驗證了方法的可行性,為Web端城市級的表面三維模型高效渲染提供方法參照,具有較強實用性。
圖3 人工精細(xì)模型LOD構(gòu)建示意
圖4 城市級傾斜攝影三維模型效果
圖5 城市級人工精細(xì)三維模型效果