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