王 剛, 馬 錦
(重慶市勘測院,重慶 401120)
游戲開發引擎在三維場景可視化表達方面表現突出,已被應用于建筑、影視和三維地理信息等多個領域。在三維地理信息的可視化過程中,如何整合不同參考系下的多源地理數據一直是一個難題。地理數據參考有大地坐標系、投影坐標系、地理坐標系和工程坐標系等多種坐標系統,不同坐標參考下數據的位置、形狀存在明顯差異。傳統的地理信息系統(GIS)通常支持常用的坐標轉換功能,以實現兩個或多個參考系下的數據在可視化和疊加分析等操作中的位置統一。游戲開發引擎早期的建設過程中并沒有考慮多參考系地理數據的整合問題,因此在將其用于三維GIS的建設時,存在坐標難以統一的問題。本研究以虛幻引擎4(Unreal Engine 4,UE4)為例,分析不同坐標系下數據在UE4中存在的問題,針對存在的問題研究解決方法并應用實踐。
虛幻引擎是EpicGames公司開發的三維場景創作平臺,UE4是其第四代產品,目前已更新至4.27,在不久的將來第五代虛幻引擎也將正式推出。UE4具有強大的三維可視化、虛擬仿真、場景交互等功能,不僅是應用最廣泛的游戲創作平臺,還被用于影視、建筑、汽車、GIS等領域。在跨平臺方面,UE4可以支持Windows、IOS、Android、Xbox等多種平臺,為不同設備不同場景的應用提供了強大的支撐[1]。此外,UE4的開發具有藍圖和C++兩種模式,其官網提供了大量的開發教程,其開發方式簡單,門檻低,深受廣大3D創作者的青睞。
在三維地理信息場景的建設中,三維地理數據通過轉為FBX和OBJ等中間格式導入UE4引擎中,利用UE4的大氣模擬、光影效果、粒子效果以及材質系統等功能,可以逼真地模擬真實地理場景,同時利用其交互功能,可以在時間和空間上對逼真的地理場景進行漫游。
UE4自身的坐標系統為空間直角坐標系,而三維地理數據的坐標系有空間直角坐標系、投影坐標系、地理坐標系和工程坐標系,將不同坐標系的數據整合到UE4平臺中主要存在坐標軸方向不統一、形變不同、參考面不統一以及定位精度不夠等方面的問題。
UE4中的坐標系為左手系,而三維地理數據的坐標系多數為右手系,左手系與右手系的差異表現在z軸方向的不同,如圖1所示。

圖1 左手坐標系與右手坐標系差異示意圖
由于坐標軸方向的不同,右手空間直角坐標系導入后,保持z軸向上,則y軸的方向會被翻轉,原本的正方向會變成負方向,發生翻轉的地物與實際地物呈鏡像顯示,顯示情況如圖2所示。

圖2 數據因坐標軸方向的不同而發生翻轉
坐標軸方向的不同給地理場景的可視化、位置計算、方向判斷、感知信息接入等環節造成了一定的影響,在應用過程中需要進行專門處理。
地球表面是一個不規則的球面,將不規則的球面通過數學變換展開到平面上的過程稱為地圖投影,不論選擇何種投影方式,投影過程中都會發生形變。以高斯-克呂格投影為例,其示意圖如圖3所示。

圖3 高斯-克呂格投影示意圖
高斯-克呂格投影是一種橫軸等角切圓柱投影,分為3°分帶和6°分帶兩種。無論是3°分帶還是6°分帶,其投影結果都有以下4個特點[2]:(1)中央經線上無變形;(2)除中央經線外其他地方均有變形,且變形長度均大于1(即被拉伸);(3)距離中央經線越遠的地方,變形越大;(4)距離赤道越遠的地方,變形越小。
根據以上特點可知,投影坐標系下不同區域的地物形變方向和形變程度均不相同,不同的投影系下的數據受參考橢球、投影方式以及中央經線等影響,相同區域的地物變形也會不同。將不同投影坐標系下的三維地理數據導入UE4中,其位置會存在差異。
地理空間數據的高程和方向因坐標系的不同而存在差異,其中空間直角坐標系與一般的平面直角坐標系存在本質的不同。
以CGCS2000橢球體空間直角坐標系為例,原點和軸向的定義是:原點在地球的質量中心;z軸指向IERS參考極(IRP)方向;x軸為IERS參考子午面(IRM)與通過原點且同z軸正交的赤道面的交線;y軸與z、x軸構成右手正交坐標系。示意圖如圖4所示。
空間直角坐標系是三維地理數據常用的參考系,其優勢可以將整個地球表面、地下以及空中用一個坐標系表達,在這個坐標系下地物幾乎不存在變形,地物的形狀、相對位置精確。利用空間直角坐標系進行數據的組織是地理空間數據“上球”的重要方式。

圖4 空間直角坐標系示意圖
投影坐標系與工程坐標系的高程通常以似大地水準面為準,方向為垂直向上,而在空間直角坐標系中,地物是垂直于橢球面向上的,不同位置的地物其朝向不同。參考系為空間直角坐標系的地理數據導入UE4中,很難與平面直角坐標系數據進行配準,給數據的疊加分析和可視化造成了困難。
虛幻引擎最初是為了游戲開發而打造的,沒有將地理數據的范圍大、精度要求高的特點考慮其中。在UE4編輯器中,數據類型只有單精度(float)而沒有雙精度(double)類型。眾所周知,單精度數據類型的比特數為32,有效數字為6~7位,且UE4編輯器中的距離單位通常為厘米,由此可以推算,當精度為厘米級時,UE4中可精確表示的最大坐標范圍在10~100 km之間,定位精度要求更高的數據則可表示的范圍更小。在地理場景的搭建中,數據范圍往往比較大,遠遠超過了單精度浮點型數據類型的精度,float數據類型無法滿足UE4中大場景的定位需求,從而影響多源地理數據的疊加。
根據以上分析,虛幻引擎加載地理三維數據過程中存在坐標軸方向不一致、參考面不一致、形變不均勻以及數據精度不滿足等問題,本文對這些問題結合實際應用環境,提出了相應的解決方案。
在地理三維模型數據導入UE4過程中,因坐標軸方向不同引起的y坐標值相反問題可以從數據導入引擎后和數據導入引擎前兩個環節進行解決。
當數據導入引擎內部后,可以在引擎內部進行翻轉,使其y軸方向上的值為原來的相反數。UE4提供了簡單易用的位置變換接口,用戶只需要在編輯器中對應的位置輸入變換值即可。如圖5所示,選擇要變換的模型數據,在圖中的位置輸入數值“-1”,模型數據即會發生翻轉。

圖5 UE4編輯器中利用位置變換對y軸進行翻轉
除了在編輯器中進行變換,還可以對導入前的數據進行預處理。在預處理過程中無需對模型的所有頂點坐標進行更改,只需要給模型加一個變換矩陣即可。坐標變換計算如公式(1)。

(1)
式中:P′為變換后的左手坐標系下的點坐標;Sy為由于翻轉y軸的變換矩陣;P為右手系下的點坐標。
通過以上方法進行坐標軸的翻轉實現右手系和左手系的轉換可以使地理場景在UE4中正常顯示。
相對形變是由于坐標參考系不統一導致的,減小或消除相對形變的重要手段是統一坐標參考系,該過程需要將不同坐標系下的數據轉換到同一坐標系下。坐標轉換通常情況下可以分為已知參考系的坐標轉換和未知參考系的坐標轉換,未知參考系的坐標轉換需要通過控制點進行轉換參數的擬合,通常分為平面四參數和三維七參數兩種。
(1)已知參考系坐標轉換。已知參考系的坐標轉換通過借助數學函數庫進行高斯反算、橢球變換和坐標投影等過程完成。例如將西安80坐標系3度分帶105°帶下的數據轉換到CGCS2000坐標系3度分帶105°帶下的步驟如圖6所示。

圖6 已知參考系間的坐標變換
(2)四參數轉換。平面四參數轉換方式利用已知同名點進行擬合獲得最佳的轉換參數,利用公式(2)進行轉換[3]。

(2)
式中:x0,y0為平移參數;α為旋轉參數;1+m為尺度參數;x2,y2為輸出坐標系下的平面直角坐標;x1,y1為原坐標系下平面直角坐標。
(3)七參數轉換。與四參數轉換原理相似,七參數轉換是用于三維坐標間的轉換[4],相對四參數多了1個平移參數和2個旋轉參數,轉換公式如(3)所示。
(3)
式中包括三個平移參數,三個旋轉參數和一個尺度因子。其中x,y,z表示轉換后的坐標; Δx,Δy,Δz為平移參數;εx,εy,εz為旋轉參數;m為尺度參數;x′,y′,z′為原坐標系下的三維坐標。
空間直角坐標系下的地物在地表上呈現一個球面,具有一定的曲率,將其導入UE4后與平面數據無法疊加,對此可以預先將空間直角坐標系數據轉換到平面坐標系,可以利用地圖投影的方式進行[5]。當工程范圍不大時,可以通過矩陣變換將曲面數據與平面數據盡可能重合,以減小差異。如圖7所示是地表曲面與平面疊加的高差與位置分析。
如圖7所示,當范圍距離D為1 km時,高差ΔH≈0.0784 m。在UE4中將平面系三維數據與空間直角坐標系球面數據進行疊加效果如圖8所示。當D超過一定范圍時,球面坐標系數據和平面坐標系數據高差會明顯增加,球面數據會被平面數據遮擋。同時,隨著D的增加,地物在平面上的距離也會發生明顯變化。對于此方法的適用范圍,可以根據工程的精度要求進行確定。

圖7 曲面與平面疊加高差與位置關系示意圖

圖8 球面坐標系數據與平面坐標系數據(底板數據)疊加效果
為了滿足UE4中單精度數值存儲類型的數據精確性,工程中可將絕對坐標的值拆分為兩部分,其中統一的、大數值的偏移量保留于數據外部,而文件中存儲的則是減去一個較大數值后的數字,可以為-99 999.9~99 999.9之間,如此可以保證1 mm的定位精度。例如投影平面坐標值為(65 312 345.6,327 512 345.6)(單位cm)則可以表示為(653×105+12 345.6,3 275×105+12 345.6)。
利用以上的分析與研究,本文進行了虛幻引擎加載多源地理數據的實驗。實驗使用數據有CGCS2000投影坐標系下的傾斜攝影實景數據、WGS84空間直角坐標系下的地形數據以及地方獨立坐標系下的手工模型數據。
實驗將傾斜攝影實景數據通過坐標值拆分的形式進行了坐標值的減小,從而避免其導入UE4后丟失精度,利用四參數的形式將手工模型與傾斜攝影實景數據所匹配,最后利用七參數轉換的方式將地形數據與前者數據進行匹配。最終結果顯示,三者數據位置相對準確,可以滿足三維地理場景的視覺要求,顯示效果如圖9所示。

圖9 多源三維數據整合效果
本文從虛幻引擎加載多源地理數據存在的坐標不統一的問題出發,分析了各參考系下數據的特點,提出了解決坐標軸翻轉、數據變形、參考面不統一以及數據精度不夠的方法,可為虛幻引擎加載多源地理數據提供參考。