慕旭
(易智瑞信息技術(shù)有限公司,北京 100028)
數(shù)字孿生作為現(xiàn)實世界的虛擬資產(chǎn),可以實現(xiàn)對現(xiàn)實世界的復(fù)制,并提供面向城市的真實三維虛擬場景可視化,有利于實現(xiàn)城市運行狀態(tài)的模擬和智慧城市的科學(xué)決策。鑒于數(shù)字孿生城市需要覆蓋城市規(guī)模的場景,利用無人機(jī)建立城市規(guī)模的場景具有高效、環(huán)保、低成本高精度的優(yōu)點。當(dāng)前各個組織已經(jīng)為這個模型設(shè)計了多種數(shù)據(jù)格式,例如GLTF、3DTiles、I3S 和OpenSceneGraph (OSGB)。但目前的可視化方案渲染這些海量數(shù)據(jù)還具有一定挑戰(zhàn)。針對這一問題,研究人員主要從模型簡化和可視化策略優(yōu)化兩個方面進(jìn)行了大量工具。為了簡化傾斜攝影測量模型,有研究學(xué)者提出了一種二次誤差測量(QEM) 的半邊折疊方法,該方法減少了渲染的壓力。此外,一些研究人員提出了可視化策略,包括瓦片金字塔建模、場景調(diào)度算法和內(nèi)存調(diào)度方法,以利用互聯(lián)網(wǎng)的傳輸性能和硬件的計算性能[1]。此類方法已成功應(yīng)用于Google Earth、Cesium、ArcGIS,以及其他用于可視化城市場景的web-GIS 平臺項目。但是,在使用這些方法時,通過減少硬盤讀取時間和內(nèi)存開銷來提高渲染性能仍然是一項艱巨的任務(wù)[2-3]。
此外,為了模擬數(shù)字世界中的實際場景,材質(zhì)、光照、渲染和其他計算機(jī)圖形(CG)技術(shù)也非常重要。Unity3D、虛幻引擎(UE)等游戲引擎采用了前沿的CG 技術(shù),通過結(jié)合GIS 技術(shù)在這些游戲引擎中重構(gòu)實際場景,引起了交叉學(xué)科研究的關(guān)注。例如,在Unity3D 中,可視化地形編輯器允許用戶導(dǎo)入數(shù)字高程模型(DEM),幫助開發(fā)人員有效地設(shè)計地形場景。然而,尤其是當(dāng)用戶快速更改查看區(qū)域時,大規(guī)模、高精度的傾斜攝影測量模型的可視化仍需要改進(jìn)。本文旨在優(yōu)化傾斜攝影測量模型的可視化方法。在可視化體驗方面,提出了一種可以提高可視化效果和真實感的方法,在UE 中實現(xiàn)了傾斜攝影測量模型可視化的原型系統(tǒng)。通過這個原型系統(tǒng)進(jìn)行了實驗,證明了所提出的方法提高了可視化效果。
游戲引擎指的是一套工具,可以幫助開發(fā)者使用命令更快更容易地創(chuàng)建游戲,而這些命令過去需要通過游戲引擎的插件進(jìn)行大量編碼。由于Unity、Unreal Engine 或CryEngine 等免費游戲引擎的出現(xiàn),可以創(chuàng)建具有以前無法想象的沉浸感的3D 空間表示。玩家控制的化身(虛擬角色)的實現(xiàn)使用戶能夠從模仿自然現(xiàn)實世界視角的以自我為中心的相機(jī)視角感知構(gòu)建的虛擬環(huán)境。用戶可以通過按鍵、鼠標(biāo)或按鈕輸入在虛擬空間中自由移動。因此,與“傳統(tǒng)”的2D 可視化技術(shù)或預(yù)渲染的偽3D 可視化技術(shù)相反,基于游戲引擎的環(huán)境可以從幾乎無限種不同的角度來感知[4]。虛幻引擎(Unreal Engine)是一個游戲開發(fā)引擎。它由Epic Games 公司在1988 年開發(fā)。起初,UE 主要面向第一人稱射擊游戲進(jìn)行開發(fā)。目前,它被廣泛用于創(chuàng)建格斗游戲、角色扮演游戲和其他應(yīng)用中。
2015 年UE 宣布開源以來,UE 逐漸嘗試加載地理信息數(shù)據(jù),功能強(qiáng)大的游戲引擎的免費可用性徹底改變了GIS 數(shù)據(jù)三維可視化的可能性。除了許多其他功能外,這些引擎還包括對真實物理系統(tǒng)的模擬。他們的早期版本往往與第一人稱射擊游戲相關(guān)聯(lián),應(yīng)用場景也更多。基于免費提供的UE,人們可以創(chuàng)建和分享自己的虛擬景觀,這些虛擬景觀可以通過現(xiàn)代VR 眼鏡等實現(xiàn)沉浸式VR 技術(shù)體驗。許多學(xué)科的研究人員都在探索新的可能性。處理空間數(shù)據(jù)和信息的研究團(tuán)隊對基于高度準(zhǔn)確的空間表示的虛擬景觀的開發(fā)非常感興趣。為了實現(xiàn)這種高空間精度,可以使用不同的地理數(shù)據(jù)資源。這些資源指的是相當(dāng)傳統(tǒng)的來源,例如測繪單位。然而坐標(biāo)系統(tǒng)成為了二者結(jié)合的關(guān)鍵技術(shù)之一。
在定位地球上的物體時,必須選擇坐標(biāo)參考系統(tǒng)(CRS) 來表示位置。使它變得復(fù)雜的是地球既不是平面也不是球體:而是橢球體。有不同的橢球模型(稱為基準(zhǔn)),最著名的是地球的WGS84 坐標(biāo)參考。例如,對于WGS84 橢球,軸的長度之間存在大約22 公里的差異。
圖1
a = 6 378 137.0 米
b = 6 356 752.314 245 米
1/f = 298.257 223 563
每個坐標(biāo)參考系使用其所基于的橢球模型定義位置。但是,有不同種類的坐標(biāo)參考系統(tǒng),每種都有額外的屬性。投影通常分為三類,以經(jīng)緯度和高度為坐標(biāo)的地理坐標(biāo)系、投影后的平面坐標(biāo)系及以球心為原點的XYZ(單位米)的笛卡爾坐標(biāo)系。
圖2
如上圖,地球是橢球而不是圓球,這樣,在球面坐標(biāo)系和笛卡爾坐標(biāo)系之間轉(zhuǎn)換時需要特殊處理:r=r_s+h(r_s 和h 不在一條線)。特別是笛卡爾坐標(biāo)系轉(zhuǎn)球面坐標(biāo)系時,無法直接求解,需要用Newton-Raphson 方法迭代求解。
UE 附帶了一個地理配準(zhǔn)插件,可以使用它來定義一個特定坐標(biāo)系統(tǒng)中的原點坐標(biāo),并提供在每個不同坐標(biāo)系之間轉(zhuǎn)換坐標(biāo)的功能。在Unreal 中,每個物體都有相對于該場景原點定義的坐標(biāo),因此要知道任意地理參考位置,需要在地球上定位引擎原點。
UE 將考慮兩種不同的情況:
平坦地區(qū):虛擬場景環(huán)境足夠小,可以用平坦的地面(小于數(shù)百公里)來近似。在這種情況下,UE 認(rèn)為地面是以投影模式建模的,并且所有坐標(biāo)都可以在投影坐標(biāo)系中定義,并具有一個簡單的平移偏移量。
全球場景:虛擬場景環(huán)境非常大,需要考慮地球的曲率。在這種情況下,UE 期望幾何形狀覆蓋整個行星,呈球形或橢圓形。在這種情況下,有兩種方法可以放置原點:在地球形狀的中心,或在表面上的任何點。在后者中,假設(shè)Z 軸指向上方,并且此時垂直于橢球體。
下圖可以說明這兩種情況。
圖3
在平坦的星球上,坐標(biāo)中心選擇的建模原點是P 點。它是地球上的任意位置,可以使用地理坐標(biāo)(緯度和經(jīng)度)或笛卡爾坐標(biāo)定義,但在特定的投影坐標(biāo)系中。然后,XYZ 坐標(biāo)在坐標(biāo)內(nèi)表示為東/北/上(East/North/Up)方向。
在圓形地球上,有兩種不同的選擇:
(1)坐標(biāo)原點位于行星中心。這是ECEF 的情況,原點處沒有幾何圖形,而是位于具有較大值的坐標(biāo)處,具體取決于地球半徑。ECEF CRS 是笛卡爾坐標(biāo)系,軸與引擎軸對齊。
(2)坐標(biāo)原點位于行星表面上的任意點。就像在平面行星的情況下,這些坐標(biāo)可以用地理或投影坐標(biāo)系表示。在這個位置保持水平的向上方向與橢球法線對齊會更方便,并確保平面幾何的方向是這樣一種方式,即前(Front)和右(Right)向量與北(North)和東(East)向量匹配。
在地理空間行業(yè)中,大多數(shù)坐標(biāo)以右手坐標(biāo)系表示,但虛幻引擎使用左手坐標(biāo)系。為了與地理空間使用保持一致,地理配準(zhǔn)插件使用右手坐標(biāo)系表示坐標(biāo)。這意味著它在轉(zhuǎn)換坐標(biāo)時會在某個點反轉(zhuǎn)Y 坐標(biāo)。UE 在場景范圍不大,通常采用投影后的平面坐標(biāo)系,比如固定左下角點為原點,但GIS 中的場景范圍通常比較大,很多數(shù)據(jù),比如3DTiles 采用的是RTC(relative to centre)的方式,每一份數(shù)據(jù)都有自己指定的原點,外圍矩形框是場景范圍,內(nèi)部矩形是部分模型的范圍,內(nèi)部的數(shù)據(jù)以左下角點作為自己的原點,從而保證浮點數(shù)能夠支持該范圍的精度。Float 和double 對應(yīng)的精度分別是小數(shù)點后7 位和16 位,如果此時精度還達(dá)不到要求,Cesium 下會采用RTE(relativeto eye)來解決抖動問題,這等同于一個根據(jù)視角變化而動態(tài)更新紅點位置,取一個視角范圍內(nèi)的位置作為原點。同時,因為shader 只支持float類行,采用float-float 的方式模擬double,以性能換取精度。UE 中如果場景范圍較大,則提供了rebasing 的方式,分為static 和dynamic 兩種,應(yīng)該對應(yīng)Cesium 中RTC 和RTE 這兩個模式。
圖4
UE 在github 上提供了GeoCoordinates 插件來支持投影轉(zhuǎn)換,MIT 協(xié)議。從Webinar 中看到,UE 主要還是專注在如何利用GIS 的數(shù)據(jù),因此資助了很多團(tuán)隊為其開發(fā)數(shù)據(jù)導(dǎo)入的插件,讓UE 可以加載主要的GIS 數(shù)據(jù)服務(wù),確保UE 平臺在渲染和仿真上的優(yōu)勢,并借助VR,AR 這些XR的方式提高用戶體驗。
OSGB 是一種存儲3D 場景數(shù)據(jù)的OpenSceneGraph二進(jìn)制場景數(shù)據(jù)格式。本文所使用的實驗數(shù)據(jù)為網(wǎng)絡(luò)公開下載的OSGB 文件。為了實現(xiàn)虛幻引擎中的數(shù)據(jù)重組和數(shù)據(jù)選擇方法,需要四類屬性值,包括瓦片的對應(yīng)范圍、瓦片的紋理和幾何形狀、瓦片對應(yīng)的圖形信息、元數(shù)據(jù)信息需要索引。整個過程可以分為四個方面:
圖5 數(shù)據(jù)預(yù)處理
當(dāng)用戶靠近場景中的模型時,希望網(wǎng)格體看起來非常精細(xì)。但是,一旦用戶遠(yuǎn)離模型,就不需要該模型非常詳細(xì)和復(fù)雜。如果它只占用屏幕上的幾個像素并且用戶幾乎看不到它,那么擁有非常復(fù)雜和詳細(xì)的網(wǎng)格是沒有意義的。但是,當(dāng)用戶靠近模型并且可以清楚地看到它時,需要對模型進(jìn)行詳細(xì)說明。在UE 中,可以在場景中放置一個模型,當(dāng)用戶遠(yuǎn)離它時切換到不太復(fù)雜的模型,以使場景渲染的更流暢??梢酝ㄟ^使用層次細(xì)節(jié)層次(Level of Details,LOD)來做到這一點。
瓦片金字塔模型是LOD 算法設(shè)計的。該模型首先根據(jù)空間分區(qū)和組織策略將大規(guī)模數(shù)據(jù)集劃分為小段。四叉樹從粗到細(xì)建立,每個段的數(shù)據(jù)副本附加到樹節(jié)點。由于這種方法可以幫助在可視化過程中根據(jù)精度要求消除冗余數(shù)據(jù),因此在引擎設(shè)計中起著至關(guān)重要的作用。
為了避免傾斜攝影瓦片文件過多導(dǎo)致數(shù)據(jù)請求增加,最常用的數(shù)據(jù)制作工具ContextCapture 中的傾斜攝影測量模型按區(qū)域劃分塊,并在其中創(chuàng)建瓦片金字塔結(jié)構(gòu)的LOD模型每個區(qū)域。與原始的瓦片金字塔結(jié)構(gòu)相比,它在瓦片金字塔上部的根節(jié)點上進(jìn)行了模型幾何簡化和紋理壓縮。每個瓦片金字塔的下部根據(jù)四叉樹結(jié)構(gòu)劃分。
圖6 傾斜攝影測量模型的層次結(jié)構(gòu)
UE 在世界分區(qū)系統(tǒng)中使用網(wǎng)格將場景劃分為可以在運行時動態(tài)加載和卸載的對象。然而,有時用戶希望遠(yuǎn)處且非交互的對象(例如遠(yuǎn)處的山脈、樹木和懸崖)仍然可見。分級層次細(xì)節(jié)模型(Hierarchical Level of Detail,HLOD)使用自定義HLOD 層來組織大量靜態(tài)模型并生成單個代理模型和材質(zhì)。此技術(shù)用于可視化未加載的世界分區(qū)網(wǎng)格單元,在用于大規(guī)模傾斜模型可視化時,以減少每幀的繪制調(diào)用次數(shù)并提高性能。
為驗證本文方法的可行性,本文進(jìn)行實驗的運行環(huán)境為:Windows 系 統(tǒng),Intel Core i5 -6300HQ CPU 為2.30GHz,內(nèi)存容量8G。基于UE5 引擎開發(fā)了傾斜攝影測量模型加載原型系統(tǒng)。其中傾斜攝影數(shù)據(jù)使用官網(wǎng)示例數(shù)據(jù),實現(xiàn)3Dtiles 在UE5 的加載。
本文提出了一種基于虛幻引擎的傾斜攝影測量模型數(shù)據(jù)可視化方法,通加載UE 支持的3Dtiles 格式研究GIS 引擎數(shù)據(jù)處理方案,作為數(shù)據(jù)可視化的方法,以場景真實沉浸式體驗為目標(biāo),通過對傾斜攝影測量模型在UE 的處理加載,來實現(xiàn)對城市傾斜攝影測量模型的真實可視化。以UE的方案進(jìn)行城市傾斜攝影測量模型數(shù)據(jù)的可視化,能夠較好地解決城市攝影測量模型的渲染與可視化問題,并且可提高場景真實沉降體驗感,能夠避免因局部數(shù)據(jù)請求發(fā)生變化而影響整個城市傾斜攝影測量模型的可視化效果,使得傾斜攝影測量模型數(shù)據(jù)可視化更加高效,體驗感更高?;谔摶靡娴膬A斜攝影測量模型數(shù)據(jù)可視化方法,希望能為3D WebGIS 的更好實現(xiàn)提供一種優(yōu)化,合理的傾斜攝影測量模型數(shù)據(jù)可視化可行性方案,也為將來類似理論的研究提供一定的參考價值。