張 正,李 鑫
(中國(guó)電建華東勘測(cè)設(shè)計(jì)研究院(鄭州)有限公司,河南鄭州 400016)
城市信息模型平臺(tái)(City Information Modeling,CIM),融合了地理信息系統(tǒng)和建筑信息模型,實(shí)現(xiàn)了城市層面三維場(chǎng)景的數(shù)字化和虛擬化,涵蓋了城市建設(shè)體系多個(gè)層面的內(nèi)容。近幾年,國(guó)內(nèi)外學(xué)者針對(duì)CIM 的關(guān)鍵技術(shù)和應(yīng)用等方面展開(kāi)了一定的研究[1-3]。而虛擬漫游是CIM 建設(shè)的重要組成部分,可以讓使用者從不同的角度、距離和精細(xì)程度對(duì)城市場(chǎng)景進(jìn)行動(dòng)態(tài)交互的觀察和操作,以輔助城市管理者進(jìn)行更加科學(xué)的規(guī)劃決策。
以往對(duì)漫游的研究主要集中在室內(nèi)漫游或者校園、園林漫游等層面,如周信文等人基于Unity3D 設(shè)計(jì)了南昌地鐵一號(hào)線的虛擬漫游系統(tǒng)[4],閆秋羽等人研究了三維室內(nèi)設(shè)計(jì)和人物漫游技術(shù)[5],劉菲菲和王藝儒分別使用Virtools 和Unity3D 創(chuàng)建了校園漫游系統(tǒng)和校園車(chē)輛漫游系統(tǒng)[6-7],劉曉崢等人則設(shè)計(jì)開(kāi)發(fā)了嵩山地區(qū)的三維虛擬漫游旅游系統(tǒng)[8]。目前針對(duì)CIM 平臺(tái)漫游功能的技術(shù)研究還較為欠缺,因此,為迎合CIM 平臺(tái)漫游功能的未來(lái)應(yīng)用需求,該文以灃西新城為研究案例,結(jié)合CIM 平臺(tái)的場(chǎng)景模型特點(diǎn)以及漫游的關(guān)鍵技術(shù)難點(diǎn),對(duì)CIM 平臺(tái)漫游功能和優(yōu)化技術(shù)展開(kāi)研究。
灃西新城是國(guó)家級(jí)新區(qū)西咸新區(qū)的重要組成部分,作為西部科技創(chuàng)新引領(lǐng)區(qū),其已搭建起一套融合多維城市數(shù)據(jù)的CIM 平臺(tái),涵蓋市政規(guī)劃、城市規(guī)劃、道路橋梁建設(shè)等多個(gè)層面。該文依托該CIM 平臺(tái),結(jié)合漫游功能未來(lái)的應(yīng)用場(chǎng)景,對(duì)以往的漫游提出優(yōu)化策略,具體的研究?jī)?nèi)容如下:
1)結(jié)合CIM 場(chǎng)景模型,提出多方式便捷化的漫游路徑創(chuàng)建方式;
2)優(yōu)化漫游控制[9],提高漫游的靈活性,實(shí)現(xiàn)更加真實(shí)的漫游效果;
3)研究碰撞檢測(cè)算法,實(shí)現(xiàn)漫游路徑的自動(dòng)糾正功能;
4)實(shí)現(xiàn)漫游的行走、駕駛、飛翔多種運(yùn)動(dòng)模式,并可自由切換。
根據(jù)研究?jī)?nèi)容和漫游的具體操作方法,該文提出了實(shí)現(xiàn)漫游功能的整體技術(shù)路線,如圖1 所示。
圖1 CIM平臺(tái)的漫游功能技術(shù)路線
依托灃西新城的信息模型數(shù)據(jù),該文以vue 前端框架和springboot 后端框架為基礎(chǔ),使用CesiumJs 引擎快速搭建CIM 城市三維場(chǎng)景[10]。
由于CIM 平臺(tái)中影像、模型數(shù)據(jù)體量十分龐大,需要采用一定的圖形繪制加速方法提高場(chǎng)景瀏覽的流暢性。目前主要有三種方法可以實(shí)現(xiàn)圖形的實(shí)時(shí)高速繪制[11]:
1)可見(jiàn)性判斷,分為外部判斷和內(nèi)部判斷,外部判斷剔除視點(diǎn)之外的多邊形,內(nèi)部判斷剔除被遮掩的多邊形[12];
2)紋理映射,通過(guò)位圖表達(dá)表面細(xì)節(jié),根據(jù)模型離觀察者視點(diǎn)的距離動(dòng)態(tài)調(diào)整位圖的分辨率[13];
3)多邊形簡(jiǎn)化,使用多層次細(xì)節(jié)算法(LOD)來(lái)減少多邊形的數(shù)量,對(duì)于近處物體展示細(xì)節(jié),對(duì)于遠(yuǎn)處物體只展示其外輪廓[14]。
CIM 平臺(tái)漫游的三維場(chǎng)景搭建如圖2 所示。
圖2 CIM平臺(tái)漫游的三維場(chǎng)景搭建
2.2.1 路徑設(shè)置
漫游路徑的本質(zhì)是由一系列路徑站點(diǎn)連接構(gòu)成的空間曲線。要構(gòu)建漫游路徑,必須先獲取站點(diǎn)。單個(gè)站點(diǎn)的參數(shù)如表1 所示。
表1 漫游站點(diǎn)參數(shù)
CIM 平臺(tái)已具備三維空間坐標(biāo),在CIM 的三維空間中可任意選取漫游視角點(diǎn)位。結(jié)合使用者的操作習(xí)慣,獲取站點(diǎn)的方式一般有兩種,一是通過(guò)在三維場(chǎng)景中點(diǎn)擊選中某些點(diǎn)作為路徑的站點(diǎn);二是通過(guò)導(dǎo)入已設(shè)定好的漫游站點(diǎn)數(shù)據(jù)文件進(jìn)行設(shè)置。
結(jié)合CIM 平臺(tái)的功能特點(diǎn),可通過(guò)兩種更加便捷高效的方式進(jìn)行路徑設(shè)置:
1)通過(guò)當(dāng)前視口獲取。直接記錄當(dāng)前場(chǎng)景視角的數(shù)據(jù)作為站點(diǎn),可以讓使用者獲得漫游過(guò)程再現(xiàn)的感受;
2)通過(guò)道路模型的中心線轉(zhuǎn)化。由于CIM 涵蓋了道路、河流等多種模型,故可獲取模型的中心線信息,并將其轉(zhuǎn)化為路徑站點(diǎn),以實(shí)現(xiàn)沿道路、河流方向漫游的效果。通過(guò)CIM 的最短路徑搜索功能,還可以實(shí)現(xiàn)城市道路網(wǎng)絡(luò)的點(diǎn)對(duì)點(diǎn)最近漫游。
2.2.2 漫游控制
1)速度控制
為了實(shí)現(xiàn)好的漫游效果,需控制漫游速度,并在漫游過(guò)程中保持勻速漫游。漫游速度的控制可以通過(guò)控制漫游時(shí)間來(lái)實(shí)現(xiàn),而由于漫游路徑每一段的長(zhǎng)度并不相同,勻速漫游情況下每一段的漫游時(shí)間也不相等,可以計(jì)算出每一段的漫游長(zhǎng)度di,再根據(jù)總的漫游長(zhǎng)度dw和漫游時(shí)間tw推算出每一段的漫游時(shí)間ti,每一段漫游長(zhǎng)度di的計(jì)算公式如式(1)所示:
式中,xi為第i段漫游x軸差值;yi為第i段漫游y軸差值;zi為第i段漫游z軸差值;di為第i段漫游長(zhǎng)度。
2)視口控制
漫游過(guò)程需進(jìn)行視口控制,以給使用者真實(shí)的方向感。漫游的視口控制可通過(guò)控制heading、pitch、roll 三個(gè)視角參數(shù)來(lái)實(shí)現(xiàn)??捎?jì)算漫游路徑每一段的視角參數(shù)差值,然后在每一段路徑進(jìn)行多次相機(jī)視角變換,來(lái)控制視口嚴(yán)格地沿著路線方向變換。視角變換的頻率set 可根據(jù)每段漫游的設(shè)置時(shí)間而定。視角變換的關(guān)鍵代碼如下:
3)重力控制
為了使用者有更加沉浸式的體驗(yàn)感,有時(shí)也需要在漫游過(guò)程中進(jìn)行重力模擬。漫游的重力模擬可以通過(guò)操作貼地漫游來(lái)實(shí)現(xiàn),即控制漫游在每個(gè)時(shí)段與下方地形或建筑物的高度差ht始終保持在一個(gè)固定數(shù)值,具體的模擬算法見(jiàn)2.3.2 節(jié)。
由于漫游在開(kāi)啟重力模擬過(guò)程中,會(huì)貼地漫游,其豎直面的漫游路徑不再是一條直線,而是一條不規(guī)則曲線,故為實(shí)現(xiàn)勻速漫游,需根據(jù)漫游時(shí)間重新運(yùn)算來(lái)進(jìn)行控制。
2.2.3 路線糾正
在漫游過(guò)程中,需準(zhǔn)確地判斷漫游對(duì)象與飛行路線上的場(chǎng)景模型是否發(fā)生了碰撞,以增強(qiáng)漫游的真實(shí)性和體驗(yàn)感,同時(shí)也方便使用者更正漫游路徑,具體的碰撞檢測(cè)算法見(jiàn)2.3.1 節(jié)。
當(dāng)在漫游測(cè)試中檢測(cè)到前方有障礙物時(shí),可根據(jù)障礙物位置獲取障礙物模型的數(shù)據(jù)信息,然后根據(jù)模型數(shù)據(jù)規(guī)劃繞行路線。
漫游路線糾正的整體流程如圖3 所示。
圖3 漫游路線糾正流程
2.2.4 模式選擇
通過(guò)對(duì)漫游重力、速度、碰撞的控制,并結(jié)合不同類(lèi)型的三維場(chǎng)景展示,可以實(shí)現(xiàn)漫游的多模式選擇功能,各漫游模式的具體配置如表3 所示。
表3 漫游模式配置
2.3.1 碰撞檢測(cè)算法
該文采用基于AABB 包圍盒的碰撞檢測(cè)算法[15],AABB 包圍盒即軸對(duì)齊包圍盒,其滿(mǎn)足如下條件:
式中,lx、ux、ly、uy、lz、uz分別是該AABB 包圍盒在X、Y、Z坐標(biāo)軸上投影的最小值和最大值坐標(biāo)。該算法的基礎(chǔ)是空間直線與空間多邊形的求交,可以判斷在漫游過(guò)程中漫游對(duì)象是否與地形或建筑物發(fā)生碰撞。其檢測(cè)步驟為:
1)獲取當(dāng)前漫游對(duì)象的視點(diǎn)為V;
2)獲取沿路線route 方向距離為d的點(diǎn)M;
3)獲取周?chē)氐拈L(zhǎng)方體坐標(biāo)范圍;
4)判斷VM和周?chē)厥欠裣嘟?,如果不相交,則可進(jìn)行到下一個(gè)位置M,如果相交,則執(zhí)行步驟5);
5)根據(jù)當(dāng)前位置坐標(biāo)獲取障礙要素的模型數(shù)據(jù),由路線和模型輪廓數(shù)據(jù)計(jì)算出繞行路線routec,將其內(nèi)插到路線route 中,進(jìn)行下一個(gè)點(diǎn)M的檢測(cè)。
2.3.2 重力模擬算法
在整個(gè)漫游過(guò)程,獲取漫游路徑水平投影范圍內(nèi)的地形高程和建筑物高程,再控制漫游高度與地形和建筑物高程之間的差值在一定范圍之內(nèi),如下:
式中,ht表示第t時(shí)段漫游的高度;hbt表示第t時(shí)段漫游路徑投影下的地形或建筑物高程;hm表示視點(diǎn)與地形或建筑物的高度差。
該算法的核心是獲取路徑投影范圍內(nèi)地形和建筑物的高程,CesiumJS 根據(jù)模型類(lèi)型的不同提供了不同的api 接口。整個(gè)漫游過(guò)程重力模擬的具體步驟如下:
1)獲取漫游路徑及其水平投影l(fā)p;
2)根據(jù)漫游時(shí)間tw以一定時(shí)間頻率將漫游過(guò)程劃分為多個(gè)漫游時(shí)段lt;
3)在每個(gè)時(shí)段lt中,判斷漫游路徑水平投影范圍內(nèi)的虛擬對(duì)象是地形還是建筑物,再根據(jù)CesiumJS提供的api分別獲取其高程hbt;
4)根據(jù)式(3)計(jì)算t時(shí)段漫游高度ht;
5)根據(jù)漫游高度的變化重新修正漫游路徑。
基于以上研究,該文設(shè)計(jì)了CIM 平臺(tái)的漫游功能。功能的最終實(shí)現(xiàn)效果為在CIM 的城市空間場(chǎng)景中,使用者可通過(guò)多種方式設(shè)置不同場(chǎng)景下的漫游路徑,然后按照設(shè)定的路徑軌跡進(jìn)行定向漫游,同時(shí)支持時(shí)間參數(shù)設(shè)置,支持速度、重力和碰撞控制,提供行走、駕駛、飛行三種模式。針對(duì)錄制完成的漫游,可點(diǎn)擊漫游列表重新進(jìn)行播放。對(duì)于城市街景、建筑模型等三維場(chǎng)景,支持室內(nèi)與室外漫游。
基于灃西新城CIM 平臺(tái)的現(xiàn)有場(chǎng)景和功能,該文設(shè)計(jì)并完成了CIM 平臺(tái)的三維漫游功能,可以看到整個(gè)程序的運(yùn)行效果如圖4 所示。
圖4 CIM平臺(tái)的漫游功能運(yùn)行效果
該功能可讓使用者通過(guò)漫游觀察工程的整體效果,未來(lái)還可以基于該系統(tǒng)進(jìn)行一些擴(kuò)展,應(yīng)用于城市規(guī)劃、建筑設(shè)計(jì)等領(lǐng)域,如結(jié)合仿真技術(shù)實(shí)現(xiàn)人流與車(chē)流的三維仿真,以更好地輔助交通規(guī)劃決策,結(jié)合VR 技術(shù)實(shí)現(xiàn)城市景觀虛擬與現(xiàn)實(shí)相融合[16],以更好地輔助城市規(guī)劃布局等。
該文根據(jù)CIM 平臺(tái)的技術(shù)特點(diǎn)和應(yīng)用需求,提出了CIM 平臺(tái)的漫游功能優(yōu)化內(nèi)容,基于此研究了各關(guān)鍵功能的實(shí)現(xiàn)技術(shù)與方法,并以灃西新城為案例,設(shè)計(jì)并實(shí)現(xiàn)了CIM 平臺(tái)的三維漫游功能。該文獲得的成果如下:
1)根據(jù)CIM 場(chǎng)景模型特點(diǎn),提出了視口獲取和模型中心線提取兩種更便捷的漫游路徑設(shè)置方式;
2)通過(guò)速度控制、視口控制、重力模擬等多種控制方法實(shí)現(xiàn)更真實(shí)地漫游效果;
3)通過(guò)AABB 包圍盒碰撞檢測(cè)算法及障礙物模型數(shù)據(jù)獲取方法,實(shí)現(xiàn)漫游路線自動(dòng)糾正;
4)結(jié)合漫游的重力、速度、碰撞控制和場(chǎng)景切換,實(shí)現(xiàn)多模式下的漫游效果。