張 正,李 鑫
(中國電建華東勘測設計研究院(鄭州)有限公司,河南鄭州 400016)
城市信息模型平臺(City Information Modeling,CIM),融合了地理信息系統和建筑信息模型,實現了城市層面三維場景的數字化和虛擬化,涵蓋了城市建設體系多個層面的內容。近幾年,國內外學者針對CIM 的關鍵技術和應用等方面展開了一定的研究[1-3]。而虛擬漫游是CIM 建設的重要組成部分,可以讓使用者從不同的角度、距離和精細程度對城市場景進行動態交互的觀察和操作,以輔助城市管理者進行更加科學的規劃決策。
以往對漫游的研究主要集中在室內漫游或者校園、園林漫游等層面,如周信文等人基于Unity3D 設計了南昌地鐵一號線的虛擬漫游系統[4],閆秋羽等人研究了三維室內設計和人物漫游技術[5],劉菲菲和王藝儒分別使用Virtools 和Unity3D 創建了校園漫游系統和校園車輛漫游系統[6-7],劉曉崢等人則設計開發了嵩山地區的三維虛擬漫游旅游系統[8]。目前針對CIM 平臺漫游功能的技術研究還較為欠缺,因此,為迎合CIM 平臺漫游功能的未來應用需求,該文以灃西新城為研究案例,結合CIM 平臺的場景模型特點以及漫游的關鍵技術難點,對CIM 平臺漫游功能和優化技術展開研究。
灃西新城是國家級新區西咸新區的重要組成部分,作為西部科技創新引領區,其已搭建起一套融合多維城市數據的CIM 平臺,涵蓋市政規劃、城市規劃、道路橋梁建設等多個層面。該文依托該CIM 平臺,結合漫游功能未來的應用場景,對以往的漫游提出優化策略,具體的研究內容如下:
1)結合CIM 場景模型,提出多方式便捷化的漫游路徑創建方式;
2)優化漫游控制[9],提高漫游的靈活性,實現更加真實的漫游效果;
3)研究碰撞檢測算法,實現漫游路徑的自動糾正功能;
4)實現漫游的行走、駕駛、飛翔多種運動模式,并可自由切換。
根據研究內容和漫游的具體操作方法,該文提出了實現漫游功能的整體技術路線,如圖1 所示。

圖1 CIM平臺的漫游功能技術路線
依托灃西新城的信息模型數據,該文以vue 前端框架和springboot 后端框架為基礎,使用CesiumJs 引擎快速搭建CIM 城市三維場景[10]。
由于CIM 平臺中影像、模型數據體量十分龐大,需要采用一定的圖形繪制加速方法提高場景瀏覽的流暢性。目前主要有三種方法可以實現圖形的實時高速繪制[11]:
1)可見性判斷,分為外部判斷和內部判斷,外部判斷剔除視點之外的多邊形,內部判斷剔除被遮掩的多邊形[12];
2)紋理映射,通過位圖表達表面細節,根據模型離觀察者視點的距離動態調整位圖的分辨率[13];
3)多邊形簡化,使用多層次細節算法(LOD)來減少多邊形的數量,對于近處物體展示細節,對于遠處物體只展示其外輪廓[14]。
CIM 平臺漫游的三維場景搭建如圖2 所示。

圖2 CIM平臺漫游的三維場景搭建
2.2.1 路徑設置
漫游路徑的本質是由一系列路徑站點連接構成的空間曲線。要構建漫游路徑,必須先獲取站點。單個站點的參數如表1 所示。

表1 漫游站點參數
CIM 平臺已具備三維空間坐標,在CIM 的三維空間中可任意選取漫游視角點位。結合使用者的操作習慣,獲取站點的方式一般有兩種,一是通過在三維場景中點擊選中某些點作為路徑的站點;二是通過導入已設定好的漫游站點數據文件進行設置。
結合CIM 平臺的功能特點,可通過兩種更加便捷高效的方式進行路徑設置:
1)通過當前視口獲取。直接記錄當前場景視角的數據作為站點,可以讓使用者獲得漫游過程再現的感受;
2)通過道路模型的中心線轉化。由于CIM 涵蓋了道路、河流等多種模型,故可獲取模型的中心線信息,并將其轉化為路徑站點,以實現沿道路、河流方向漫游的效果。通過CIM 的最短路徑搜索功能,還可以實現城市道路網絡的點對點最近漫游。
2.2.2 漫游控制
1)速度控制
為了實現好的漫游效果,需控制漫游速度,并在漫游過程中保持勻速漫游。漫游速度的控制可以通過控制漫游時間來實現,而由于漫游路徑每一段的長度并不相同,勻速漫游情況下每一段的漫游時間也不相等,可以計算出每一段的漫游長度di,再根據總的漫游長度dw和漫游時間tw推算出每一段的漫游時間ti,每一段漫游長度di的計算公式如式(1)所示:
式中,xi為第i段漫游x軸差值;yi為第i段漫游y軸差值;zi為第i段漫游z軸差值;di為第i段漫游長度。
2)視口控制
漫游過程需進行視口控制,以給使用者真實的方向感。漫游的視口控制可通過控制heading、pitch、roll 三個視角參數來實現。可計算漫游路徑每一段的視角參數差值,然后在每一段路徑進行多次相機視角變換,來控制視口嚴格地沿著路線方向變換。視角變換的頻率set 可根據每段漫游的設置時間而定。視角變換的關鍵代碼如下:
3)重力控制
為了使用者有更加沉浸式的體驗感,有時也需要在漫游過程中進行重力模擬。漫游的重力模擬可以通過操作貼地漫游來實現,即控制漫游在每個時段與下方地形或建筑物的高度差ht始終保持在一個固定數值,具體的模擬算法見2.3.2 節。
由于漫游在開啟重力模擬過程中,會貼地漫游,其豎直面的漫游路徑不再是一條直線,而是一條不規則曲線,故為實現勻速漫游,需根據漫游時間重新運算來進行控制。
2.2.3 路線糾正
在漫游過程中,需準確地判斷漫游對象與飛行路線上的場景模型是否發生了碰撞,以增強漫游的真實性和體驗感,同時也方便使用者更正漫游路徑,具體的碰撞檢測算法見2.3.1 節。
當在漫游測試中檢測到前方有障礙物時,可根據障礙物位置獲取障礙物模型的數據信息,然后根據模型數據規劃繞行路線。
漫游路線糾正的整體流程如圖3 所示。

圖3 漫游路線糾正流程
2.2.4 模式選擇
通過對漫游重力、速度、碰撞的控制,并結合不同類型的三維場景展示,可以實現漫游的多模式選擇功能,各漫游模式的具體配置如表3 所示。

表3 漫游模式配置
2.3.1 碰撞檢測算法
該文采用基于AABB 包圍盒的碰撞檢測算法[15],AABB 包圍盒即軸對齊包圍盒,其滿足如下條件:
式中,lx、ux、ly、uy、lz、uz分別是該AABB 包圍盒在X、Y、Z坐標軸上投影的最小值和最大值坐標。該算法的基礎是空間直線與空間多邊形的求交,可以判斷在漫游過程中漫游對象是否與地形或建筑物發生碰撞。其檢測步驟為:
1)獲取當前漫游對象的視點為V;
2)獲取沿路線route 方向距離為d的點M;
3)獲取周圍要素的長方體坐標范圍;
4)判斷VM和周圍要素是否相交,如果不相交,則可進行到下一個位置M,如果相交,則執行步驟5);
5)根據當前位置坐標獲取障礙要素的模型數據,由路線和模型輪廓數據計算出繞行路線routec,將其內插到路線route 中,進行下一個點M的檢測。
2.3.2 重力模擬算法
在整個漫游過程,獲取漫游路徑水平投影范圍內的地形高程和建筑物高程,再控制漫游高度與地形和建筑物高程之間的差值在一定范圍之內,如下:
式中,ht表示第t時段漫游的高度;hbt表示第t時段漫游路徑投影下的地形或建筑物高程;hm表示視點與地形或建筑物的高度差。
該算法的核心是獲取路徑投影范圍內地形和建筑物的高程,CesiumJS 根據模型類型的不同提供了不同的api 接口。整個漫游過程重力模擬的具體步驟如下:
1)獲取漫游路徑及其水平投影lp;
2)根據漫游時間tw以一定時間頻率將漫游過程劃分為多個漫游時段lt;
3)在每個時段lt中,判斷漫游路徑水平投影范圍內的虛擬對象是地形還是建筑物,再根據CesiumJS提供的api分別獲取其高程hbt;
4)根據式(3)計算t時段漫游高度ht;
5)根據漫游高度的變化重新修正漫游路徑。
基于以上研究,該文設計了CIM 平臺的漫游功能。功能的最終實現效果為在CIM 的城市空間場景中,使用者可通過多種方式設置不同場景下的漫游路徑,然后按照設定的路徑軌跡進行定向漫游,同時支持時間參數設置,支持速度、重力和碰撞控制,提供行走、駕駛、飛行三種模式。針對錄制完成的漫游,可點擊漫游列表重新進行播放。對于城市街景、建筑模型等三維場景,支持室內與室外漫游。
基于灃西新城CIM 平臺的現有場景和功能,該文設計并完成了CIM 平臺的三維漫游功能,可以看到整個程序的運行效果如圖4 所示。

圖4 CIM平臺的漫游功能運行效果
該功能可讓使用者通過漫游觀察工程的整體效果,未來還可以基于該系統進行一些擴展,應用于城市規劃、建筑設計等領域,如結合仿真技術實現人流與車流的三維仿真,以更好地輔助交通規劃決策,結合VR 技術實現城市景觀虛擬與現實相融合[16],以更好地輔助城市規劃布局等。
該文根據CIM 平臺的技術特點和應用需求,提出了CIM 平臺的漫游功能優化內容,基于此研究了各關鍵功能的實現技術與方法,并以灃西新城為案例,設計并實現了CIM 平臺的三維漫游功能。該文獲得的成果如下:
1)根據CIM 場景模型特點,提出了視口獲取和模型中心線提取兩種更便捷的漫游路徑設置方式;
2)通過速度控制、視口控制、重力模擬等多種控制方法實現更真實地漫游效果;
3)通過AABB 包圍盒碰撞檢測算法及障礙物模型數據獲取方法,實現漫游路線自動糾正;
4)結合漫游的重力、速度、碰撞控制和場景切換,實現多模式下的漫游效果。