宋小虎,孫琪迦,劉 照
(1.江蘇省測繪工程院,江蘇 南京 210013;2.宜興市自然資源和規(guī)劃局,江蘇 宜興 214200)
隨著傾斜三維數(shù)據(jù)獲取與處理技術(shù)的逐漸成熟,以及處理設(shè)備與應(yīng)用軟件的平民化,傾斜三維應(yīng)用成為了目前測繪地理信息行業(yè)一個很重要的數(shù)據(jù)來源。幾乎每個測繪相關(guān)單位都能夠具備傾斜數(shù)據(jù)的生產(chǎn)能力,對應(yīng)的傾斜三維數(shù)據(jù)在信息化系統(tǒng)中的使用比重也逐漸提高,國家層面也已經(jīng)提出啟動“實景三維中國建設(shè)”計劃。傾斜數(shù)據(jù)最大的特點是真實,但是對于目前主流的可視化應(yīng)用場景這是優(yōu)勢同樣是劣勢,本文將探討目前傾斜三維數(shù)據(jù)目前存在的問題,以及如何做好傾斜三維數(shù)據(jù)成果的發(fā)布優(yōu)化與可視化效果。
目前傾斜三維模型成果文件主流采用OSGB格式,本文討論的數(shù)據(jù)問題分析與優(yōu)化方法都是基于OSGB通用格式開展。
傾斜三維模型成果能否實現(xiàn)快速加載和調(diào)度,是衡量三維數(shù)據(jù)成果的一個重要指標(biāo)。對海量傾斜攝影模型數(shù)據(jù)如何進行性能優(yōu)化處理。首先需要研究影響傾斜三維數(shù)據(jù)成果應(yīng)用的主要因素。
圖形處理器場景幀率只有達到15幀以上,三維場景顯示才不卡頓。達到24幀人才能使得眼睛無法看出閃動,場景顯示自然流暢。達到30幀,畫面將非常流暢。為了提升數(shù)據(jù)瀏覽效率,我們在開展數(shù)據(jù)層面優(yōu)化之前,必須針對如下3個問題進行分析。
傾斜三維數(shù)據(jù)成果由于分塊存儲的特性以及生產(chǎn)數(shù)據(jù)的機器性能等原因,導(dǎo)致傾斜三維數(shù)據(jù)量非常大,且數(shù)據(jù)成果的Tile文件夾也很多,成果數(shù)據(jù)不光數(shù)據(jù)總量大,文件數(shù)據(jù)也是海量的,這就導(dǎo)致系統(tǒng)在進行數(shù)據(jù)調(diào)度的時候會比較慢,造成瀏覽應(yīng)用加載不流暢,實際使用場景中經(jīng)常會出現(xiàn)加載速度太慢、數(shù)據(jù)從不清晰到清晰要等待時間過長等問題。
傾斜攝影OSGB格式自帶多級分辨率的LOD數(shù)據(jù),這個LOD是在模型的生產(chǎn)過程中創(chuàng)建的,是根據(jù)密集點云逐級抽稀后構(gòu)建的三角網(wǎng)模型,在三維場景的瀏覽過程中,不同層級之間的過度很平滑,沒有突跳感,但是這樣的處理也導(dǎo)致數(shù)據(jù)體量變大、瀏覽時崩潰概率變大、低級數(shù)據(jù)不精細等問題。
傾斜三維成果基本都是按照Tile模式組織、調(diào)度、加載與渲染的。特別是在終端渲染過程中,都會把每個視野中的Tile全部載入內(nèi)存,但是對于精度較高的傾斜數(shù)據(jù),一個Tile內(nèi)的數(shù)據(jù)量都可能上G,紋理解壓后再翻10倍左右,導(dǎo)致內(nèi)存使用資源量過大。為了盡力減小渲染批次,傾斜三維數(shù)據(jù)成果在發(fā)布時,對于原來傾斜中的小數(shù)據(jù)塊(幾十K的數(shù)據(jù),包含的小于1 024×1 024的紋理)會做合并處理,每個Tile需要完全讀入內(nèi)存后再做處理。 但是這樣的處理,紋理渲染對內(nèi)存的消耗過大,對于終端配置要求較高。
目前傾斜三維數(shù)據(jù)成果主要采用傾斜三維數(shù)據(jù)生產(chǎn)軟件導(dǎo)出軟件終端軟件平臺可以使用的標(biāo)準(zhǔn)格式,比如ContextCapture中直接可以導(dǎo)出成OSGB、3DTiles等格式,這樣已經(jīng)能夠滿足了大多數(shù)的應(yīng)用場景,但是一般這種直接導(dǎo)出的對于大場景的支持通常并不是很好,比如缺少必要的優(yōu)化,無法提升加載效率,還需要要借助商業(yè)平臺的場景優(yōu)化能力,比如紋理壓縮和合并根節(jié)點等方法來優(yōu)化場景的加載效率,但是無論哪種方法都是在原有OSGB分片的基礎(chǔ)上完成,但是從初始級別到最終級別中間的過度級別往往都很差,分級化簡非常嚴重,只有加載到最后一個高精度級別才能夠具備實用的價值,中間層級的數(shù)據(jù)技術(shù)過度的價值更高于使用價值,所以這也是一個明顯的問題。
傾斜數(shù)據(jù)獲取時的作業(yè)參數(shù)設(shè)置、航飛光影條件、天氣條件、數(shù)據(jù)采集設(shè)備、建模軟件等主觀因素,導(dǎo)致各類型的數(shù)據(jù)成果存在質(zhì)量問題。其表現(xiàn)為模型建筑物出現(xiàn)重影、整體拉花、融化、光影嚴重斑駁、建筑錯位、變形、建筑粘連等問題。例如水面、玻璃、大面積單一紋理面的建筑物,無法反映物體真實紋理信息的反光面。因此模型質(zhì)量差異問題在一定程度上降低了數(shù)據(jù)成果可視化效果。
針對傾斜三維成果數(shù)據(jù)的特點,目前行業(yè)已經(jīng)形成了一些普適性的三維模型構(gòu)建與模型處理優(yōu)化方法[1-4];其中針對無人機傾斜攝影三維成果數(shù)據(jù)冗余大的特點,行業(yè)專家也提出了一些針對性的建模方法優(yōu)化[5];同時,為更好基于WEB模式發(fā)布傾斜三維數(shù)據(jù),應(yīng)用時必須在數(shù)據(jù)管理與發(fā)布上開展針對性優(yōu)化研究[6]。
在傾斜三維數(shù)據(jù)成果生產(chǎn)過程中,需要設(shè)置瓦片邊長來輸出模型成果。最終每個文件夾存儲一個瓦片(Tile)數(shù)據(jù),模型成果以測區(qū)中心區(qū)域為Tile-+000-+000開始命名,按照行列號以此類推;每個文件夾中的第一個文件(與文件夾同名),我們稱為根節(jié)點。
如果根節(jié)點數(shù)量過多,顯卡渲染的批次就比較多,而每個批的調(diào)用都會消耗一定的CPU時間,這樣會導(dǎo)致CPU負載過重,最終導(dǎo)致場景卡頓。
終端瀏覽在每批渲染調(diào)用(DP)過程中,渲染調(diào)用都會消耗一定的CPU時間,對于顯卡來說,一個批次的多邊形數(shù)量遠達不到最大繪制數(shù)量。因此盡可能將更多的多邊形放在一個批里渲染,以此來減少批的數(shù)目,最終降低CPU時間。
合并根節(jié)點后,根節(jié)點引用的二進制的瓦片數(shù)據(jù)文件可以采用點云或復(fù)合模型,目前融合的節(jié)點可以具有4種類型文件,如表1所示。
表1 實景三維數(shù)據(jù)類型
合并根節(jié)點的目的就是把單批的尺寸變大,減少批的數(shù)目進而提升性能。合并操作后大大減少了3DTiles文件夾的數(shù)據(jù),合并傾斜攝影數(shù)據(jù),使瀏覽速度大幅提升。在合并根節(jié)點的同時,進一步優(yōu)化、減少根節(jié)點金字塔層級,減少數(shù)據(jù)渲染調(diào)度的數(shù)據(jù)量,提高渲染調(diào)度效率。合并根節(jié)點環(huán)節(jié)比較費時,合并根節(jié)點需要采用多線程方式進行,采用分布式數(shù)據(jù)存儲方式,利用在線并發(fā)多節(jié)點云計算能力,大大提升優(yōu)化根節(jié)點合并速度。
傾斜三維成果中對于模型物體表面細節(jié)的表現(xiàn)主要依靠影像貼圖來實現(xiàn)的,越是高分辨率的貼圖影像自然表現(xiàn)力也是越強,但是同時帶來的問題是所需占用的內(nèi)存會成倍的上升,因此紋理質(zhì)量是制約傾斜三維成果渲染效率的主要因素,減少三維數(shù)據(jù)資源消耗,尤其是紋理的資源消耗,能夠大大提升終端渲染調(diào)度顯示效率。
此外,終端設(shè)備的顯卡并不能直接使用紋理數(shù)據(jù)的JPG格式去創(chuàng)建資源,需要在CPU和內(nèi)存里把JPG解壓縮,這張圖片解壓縮后內(nèi)大量占有內(nèi)存資源,特別是在視野大范圍場景下,需要調(diào)取大量的tile格網(wǎng)數(shù)據(jù)量較大時,大量的紋理載入導(dǎo)致內(nèi)存效果過大,導(dǎo)致單個渲染批次內(nèi)耗時過長,導(dǎo)致瀏覽卡頓等問題的出現(xiàn)。所以各個三維承載平臺上在進行紋理壓縮的同時,需要考慮紋理貼圖在內(nèi)存占用和顯示效果能達到一個盡可能的平衡,充分考慮到紋理的不同設(shè)備顯卡類型,將紋理壓縮成終端顯卡直接支持的格式,這樣顯卡在渲染過程中就不需要花費額外的開銷來解析紋理(不同的設(shè)備選擇不同的紋理壓縮方式,需要區(qū)分PC設(shè)備、安卓設(shè)備、IOS設(shè)備等情況),壓縮完成后數(shù)據(jù)會更小,加載數(shù)據(jù)更快捷,資源占用更少。
數(shù)據(jù)成果通過網(wǎng)絡(luò)實現(xiàn)在線發(fā)布,由于三維成果數(shù)據(jù)量較大,因此網(wǎng)絡(luò)終端對網(wǎng)絡(luò)環(huán)境配置要求很多,我們需要通過三角網(wǎng)壓縮、紋理壓縮等方式進行數(shù)據(jù)成果壓縮,進一步減少網(wǎng)絡(luò)數(shù)據(jù)傳輸壓力。
如果數(shù)據(jù)訪問的網(wǎng)絡(luò)配置較低,可以通過三角網(wǎng)壓縮,能夠節(jié)省帶寬50%左右,同時在發(fā)布服務(wù)器端設(shè)置 GZIP壓縮模式,能夠再節(jié)省20%左右的帶寬。但如果是在本地局域網(wǎng)中,可以不做壓縮,因為壓縮為有損壓縮,數(shù)據(jù)質(zhì)量會降,降低的不明顯。
此外,本文采用Draco進行3DTiles模型壓縮,Draco是一個用于網(wǎng)格壓縮的glTF擴展,用于壓縮和解壓縮3D網(wǎng)格,能夠顯著減少3D內(nèi)容的大小,通過壓縮頂點位置、法線、顏色、紋理坐標(biāo)和任何其他一般的頂點屬性,提高3DTiles在WEB傳輸效率和速度。使用Draco壓縮與GZIP的glTF 2.0的tileset的總加載時間可以大大縮減。
為了達到更好的傾斜三維數(shù)據(jù)成果的快速加載與瀏覽,必須優(yōu)化傾斜三維數(shù)據(jù)成果圖層的LOD距離縮放比例參數(shù),優(yōu)化設(shè)置這個參數(shù)會在原來的LOD距離基礎(chǔ)上縮放對應(yīng)的倍數(shù),進而在不同的相機距離切換對應(yīng)的層級數(shù)據(jù);最大可見距離同樣是在距離范圍之外的數(shù)據(jù)將會不可見,以此來提升瀏覽性能。
只有不斷提升傾斜三維數(shù)據(jù)成果的加載與瀏覽效率,才能進一步擴展傾斜三維數(shù)據(jù)成果的應(yīng)用范圍。我們一方面可以進一步提升終端硬件配置,提升存儲、CPU、顯卡渲染與計算能力。另一方面,我們在傾斜三維成果的數(shù)據(jù)結(jié)構(gòu)優(yōu)化與渲染調(diào)度方面,還可以進一步優(yōu)化策略和方法,使傾斜攝影模型在各種終端設(shè)備中能夠高效加載與流暢顯示。