陳冠臣,吳星星,王 偉,趙雯婷
(1. 天水三和數(shù)碼測(cè)繪院,甘肅 天水 741000;2. 武漢大學(xué) 測(cè)繪遙感信息工程國(guó)家重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430079;3. 武漢大學(xué) 經(jīng)濟(jì)與管理學(xué)院,湖北 武漢 430072)
三維城市信息系統(tǒng)(Urban Information System,UIS)試圖從三維空間的視角去理解和表達(dá)真實(shí)的世界.目前,3D UIS的載體是二維的(如電腦屏幕),而不是三維的(如頭戴設(shè)備),這使得現(xiàn)有的空間信息得不到充分地表達(dá)和可視化,2D扁平的實(shí)體屏幕會(huì)影響我們對(duì)所研究的城市實(shí)體的認(rèn)知和理解[1].隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,出現(xiàn)了基于"眼鏡"的增強(qiáng)現(xiàn)實(shí)技術(shù).增強(qiáng)現(xiàn)實(shí)技術(shù)AR(Augmented Reality,AR)是將計(jì)算機(jī)生成的虛擬物體疊加到現(xiàn)實(shí)世界當(dāng)中,并產(chǎn)生新的可視化環(huán)境,虛實(shí)結(jié)合并提供實(shí)時(shí)互動(dòng)[2-4].本文將AR技術(shù)引入3D UIS,改變3D UIS傳統(tǒng)的體感和互動(dòng)方式,從傳統(tǒng)二維的空間向三維空間轉(zhuǎn)化,從更高的維度理解虛擬世界.但是,3D UIS與增強(qiáng)現(xiàn)實(shí)的結(jié)合存在著接入問(wèn)題,目前比較流行的開發(fā)VR(Virtual Reality,VR)、AR、MR(Mixed Reality,MR)的引擎(Unity、Unreal、CryENGINE、Cocos 3D)并沒有提供開發(fā)城市地理信息的接口,所以城市地理信息內(nèi)容很難直接架構(gòu)到增強(qiáng)現(xiàn)實(shí)平臺(tái)之上,實(shí)現(xiàn)內(nèi)容與平臺(tái)的拼接.基于AR技術(shù)的城市地理數(shù)據(jù)可視化方法,雖然還存在一系列的問(wèn)題,但對(duì)比普通的地理數(shù)據(jù)可視化方法,AR技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的可視化更簡(jiǎn)單、直觀、真實(shí)感更強(qiáng)[5].
目前,具有代表性的AR頭戴設(shè)備是微軟的Microsoft HoloLens,HoloLens相比于傳統(tǒng)的增強(qiáng)現(xiàn)實(shí)設(shè)備具有更高級(jí)的功能,如具有3D立體顯示,對(duì)凝視、手勢(shì)的捕捉,空間聲音與空間映射等功能[6].基于上述優(yōu)勢(shì),HoloLens被廣泛地應(yīng)用于可視化應(yīng)用程序的研究當(dāng)中,如將HoloLens應(yīng)用于災(zāi)難和緊急事件的管理,虛擬實(shí)驗(yàn)室的構(gòu)建[7],醫(yī)學(xué)解剖學(xué)、藥學(xué)等領(lǐng)域[8].本文主要的研究?jī)?nèi)容是將微軟增強(qiáng)現(xiàn)實(shí)設(shè)備HoloLens應(yīng)用于3D城市信息的渲染,開發(fā)增強(qiáng)城市信息系統(tǒng)(AR-3DUIS).為了實(shí)現(xiàn)AR-3DUIS應(yīng)用,本文設(shè)計(jì)了基于規(guī)則的三維城市場(chǎng)景建模方法,實(shí)現(xiàn)快速?gòu)亩S城市地理數(shù)據(jù)建模成三維城市地理場(chǎng)景模型;繼而,設(shè)計(jì)了AR-3DUIS應(yīng)用的交互方式,通過(guò)Unity3D游戲引擎設(shè)計(jì)用戶與三維數(shù)字城市交互的接口,實(shí)現(xiàn)用戶與虛擬三維數(shù)字城市、虛擬三維數(shù)字城市與物理世界的交互;最后,通過(guò)實(shí)驗(yàn),實(shí)現(xiàn)了將全息數(shù)字城市映射到物理世界,成功地將AR技術(shù)應(yīng)用于三維城市信息系統(tǒng).HoloLens與3D UIS的集成對(duì)于城市的規(guī)劃設(shè)計(jì)具有重要的意義:①?gòu)囊曈X的角度,通過(guò)HoloLens眼鏡,數(shù)字城市是以全息的3D影像展示,3D的物體在3D空間展示,用戶可以獲取最佳城市三維視角.②從交互的角度,改變傳統(tǒng)用戶與三維城市信息的交互方式,從鼠標(biāo)轉(zhuǎn)向語(yǔ)音、凝視、手勢(shì)的交互.
本文的主要目標(biāo)是實(shí)現(xiàn)將HoloLens應(yīng)用于三維城市場(chǎng)景的展示,將三維城市信息引入物理真實(shí)世界,兩者融為一體,帶來(lái)全新的視覺體驗(yàn)和更高效、自然的交互方式.要實(shí)現(xiàn)上述目標(biāo),主要包括AR-3DUIS應(yīng)用資源的創(chuàng)建、AR-3DUIS應(yīng)用程序的開發(fā)以及AR-3DUIS應(yīng)用程序的部署3個(gè)流程.如圖1所示是系統(tǒng)架構(gòu)設(shè)計(jì)圖,其中AR-3DUIS應(yīng)用資源創(chuàng)建層為AR-3DUIS應(yīng)用程序開發(fā)提供三維城市場(chǎng)景內(nèi)容,AR-3DUIS應(yīng)用程序開發(fā)層提供三維城市場(chǎng)景與用戶之間的交互接口,AR-3DUIS應(yīng)用程序部署層提供將應(yīng)用程序部署到HoloLens的方法.
圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture
AR-3DUIS應(yīng)用資源創(chuàng)建層為AR-3DUIS應(yīng)用程序開發(fā)提供素材和內(nèi)容.利用傳統(tǒng)三維建模軟件(Maya、3DMAX、CAD)實(shí)現(xiàn)對(duì)三維城市場(chǎng)景的創(chuàng)建成本大、效率低、耗時(shí)長(zhǎng).針對(duì)該問(wèn)題,本文采用基于規(guī)則文件驅(qū)動(dòng)的方式實(shí)現(xiàn)快速三維城市建模.快速三維城市建模的思想是使用2D地理信息的組合數(shù)據(jù)、屬性數(shù)據(jù)和過(guò)程定義的規(guī)則,反復(fù)優(yōu)化規(guī)則,創(chuàng)建高質(zhì)量的3D內(nèi)容.本文在CityEngine平臺(tái)下,利用預(yù)處理過(guò)的GIS矢量、柵格數(shù)據(jù)的輪廓和屬性信息,通過(guò)CGA(Computer Generated Architecture)規(guī)則文件驅(qū)動(dòng)快速、批量地生成城市場(chǎng)景中建筑物、基礎(chǔ)公共設(shè)施、道路等數(shù)據(jù)的三維模型,提高了城市三維建模的效率[9].CGA規(guī)則文件驅(qū)動(dòng)的方法流程是通過(guò)對(duì)需要建模的物體進(jìn)行拆分和細(xì)分割,然后進(jìn)行分類,對(duì)相同的類別進(jìn)行批量建模,提高建模的效率.表1是建筑物三維建模的一般流程,其中extrude、comp、split、texture是CityEngine提供的用于拉伸、分割、拆分、貼紋理的函數(shù).建筑物快速三維建模的步驟如下:首先,通過(guò)高度信息對(duì)建筑物的面要素進(jìn)行拉伸;然后將拉伸后的建筑物按照實(shí)際的需要進(jìn)行拆分和細(xì)分割,對(duì)細(xì)分割后的要素進(jìn)行分類并定義相應(yīng)的規(guī)則進(jìn)行批量建模;最后通過(guò)貼圖函數(shù)為各拆分部分貼上紋理.通過(guò)規(guī)則文件生成的模型同樣可以采用手動(dòng)調(diào)整模型的高度、紋理等屬性,方便個(gè)性化定制.
表1 建筑物三維建模的一般流程Tab.1 The general process of 3D modeling of buildings
AR-3DUIS應(yīng)用程序開發(fā)層用于設(shè)計(jì)交互接口,實(shí)現(xiàn)用戶與虛擬三維數(shù)字城市以及虛擬三維數(shù)字城市與物理世界之間的交互.本文采用Unity3D游戲引擎作為開發(fā)的核心平臺(tái),另外,利用集成于Unity3D的Holotoolkit SDK,可以加快AR-3DUIS應(yīng)用的開發(fā).Holotoolkit開發(fā)包集成了負(fù)責(zé)交互設(shè)計(jì)的基礎(chǔ)類庫(kù),包括語(yǔ)音設(shè)計(jì)、凝視設(shè)計(jì)、手勢(shì)設(shè)計(jì),用于實(shí)現(xiàn)用戶與三維數(shù)字城市自然、簡(jiǎn)潔地交互.空間映射設(shè)計(jì)負(fù)責(zé)實(shí)現(xiàn)虛擬世界與物理世界的交互,通過(guò)空間映射實(shí)現(xiàn)三維城市場(chǎng)景與物理世界無(wú)縫的融合.如圖2所示是交互設(shè)計(jì)邏輯關(guān)系圖,其中,凝視設(shè)計(jì)的原理是根據(jù)用戶頭部的位置和方向進(jìn)而確定視線的方向,該視線與全息場(chǎng)景發(fā)生碰撞,碰撞點(diǎn)即為視線焦點(diǎn)位置;手勢(shì)設(shè)計(jì)的思想是先對(duì)手勢(shì)分類,按手勢(shì)的類型可分為操縱手勢(shì)、導(dǎo)航手勢(shì)和離散手勢(shì),然后根據(jù)用戶輸入的手勢(shì)做判斷,離散手勢(shì)用于實(shí)現(xiàn)對(duì)全息物體的單擊和雙擊操作,操縱手勢(shì)用于對(duì)全息物體的移動(dòng)和縮放,導(dǎo)航手勢(shì)用于對(duì)全息場(chǎng)景的旋轉(zhuǎn);語(yǔ)音設(shè)計(jì)主要是將特定的語(yǔ)句、短語(yǔ)與相對(duì)應(yīng)的程序綁定,并存入哈希表當(dāng)中,當(dāng)系統(tǒng)捕捉到語(yǔ)音時(shí),自動(dòng)向哈希表查詢相匹配的語(yǔ)音,執(zhí)行對(duì)應(yīng)的程序以實(shí)現(xiàn)通過(guò)語(yǔ)音控制應(yīng)用程序.
圖2 交互設(shè)計(jì)邏輯關(guān)系圖Fig.2 Logic diagram of interactive design
AR-3DUIS應(yīng)用部署層提供將AR-3DUIS應(yīng)用部署到HoloLens設(shè)備的方法,部署時(shí)需要建立HoloLens與開發(fā)者工具Visual Studio 2015 Upadate 3之后的專業(yè)版/企業(yè)版/教育版或者Unity3D引擎之間的連接.通過(guò)Visual Studio部署AR-3DUIS應(yīng)用有兩種方式,通過(guò)Wi-Fi或者USB部署.通過(guò)Wi-Fi部署的步驟如下:①在HoloLens設(shè)備上開啟開發(fā)者模式;②將Visual Studio編譯配置設(shè)為x86;③部署目標(biāo)選擇遠(yuǎn)程機(jī)器(Remote Machine);④輸入設(shè)備IP地址或者設(shè)備名稱;⑤第一次部署應(yīng)用到HoloLens上,需要驗(yàn)證PIN碼.通過(guò)USB部署與通過(guò)Wi-Fi部署類似,無(wú)需步驟③.另外,通過(guò)Unity3D部署AR-3DUIS應(yīng)用,主要是利用Holographic Remote Player技術(shù),通過(guò)該技術(shù)可以實(shí)現(xiàn)將全息應(yīng)用程序部署并運(yùn)行在PC計(jì)算機(jī)上,計(jì)算機(jī)將渲染計(jì)算之后的全息影像通過(guò)Wi-Fi并以幀的形式傳給HoloLens,HoloLens只負(fù)責(zé)顯示以及對(duì)用戶手勢(shì)和語(yǔ)音等交互信息的捕捉并實(shí)時(shí)傳輸給PC計(jì)算機(jī).通過(guò)這兩種方式可以實(shí)現(xiàn)將AR-3DUIS應(yīng)用部署到HoloLens上,利用HoloLens渲染三維城市地理信息,用戶可以與AR-3DUIS應(yīng)用以自然的人機(jī)交互方式(手勢(shì)、凝視、語(yǔ)音)進(jìn)行交互.
本文基于CityEngine 2014.0 example中提供的舊金山基礎(chǔ)地理數(shù)據(jù)以及微軟的全息眼鏡HoloLens開發(fā)者版本,開展了基于增強(qiáng)現(xiàn)實(shí)與三維城市信息系統(tǒng)集成的實(shí)驗(yàn).實(shí)驗(yàn)?zāi)繕?biāo)如下:①通過(guò)空間映射技術(shù)將虛擬三維舊金山數(shù)字城市中引入真實(shí)的物理世界,虛實(shí)結(jié)合融為一體;②利用HoloLens 3D立體顯示技術(shù)為用戶帶來(lái)全新的真三維的視覺體驗(yàn);③通過(guò)凝視、手勢(shì)、語(yǔ)音等自然的交互手段操縱全息數(shù)字城市,改變傳統(tǒng)的三維地理信息系統(tǒng)的交互方式.實(shí)驗(yàn)主要內(nèi)容如下:
如圖3所示是數(shù)字舊金山引入物理世界的示意圖,是全息數(shù)字城市與物理世界疊加融合為一體的結(jié)果.虛擬數(shù)字城市與物理世界的融合是基于空間映射技術(shù),空間映射是將真實(shí)環(huán)境的環(huán)境信息掃描數(shù)字化到設(shè)備中,使得全息數(shù)字城市可以識(shí)別真實(shí)的物理場(chǎng)景,從而達(dá)到可以將虛擬對(duì)象與真實(shí)世界相結(jié)合的效果.如圖4所示是空間映射流程圖,具體實(shí)現(xiàn)步驟如下:①基于規(guī)則實(shí)現(xiàn)快速三維城市建模,獲取實(shí)驗(yàn)需要的三維城市地理場(chǎng)景;②通過(guò)內(nèi)置于Unity3D的Holotoolkit SDK為該三維地理場(chǎng)景創(chuàng)建Surface Observer對(duì)象,該對(duì)象調(diào)用SetVolumeAsSphere、SetVolumeAsAxisAlignedBox、SetVolumeAsOrientedBox、或SetVolumeAsFrustum方法為三維城市地理場(chǎng)景Surface Observer對(duì)象指定需要的空間范圍,渲染出一個(gè)圍繞全息三維城市場(chǎng)景的立方體邊框,以顯示數(shù)字城市映射時(shí)的實(shí)際尺寸;③實(shí)時(shí)監(jiān)測(cè)Surface Observer對(duì)象區(qū)域中空間表面發(fā)生的變化,針對(duì)不同的狀態(tài)(Add/Update狀態(tài)和remove狀態(tài)),指定對(duì)應(yīng)事件的處理方法;④通過(guò)HoloLens對(duì)物理空間掃描數(shù)字化之后與三維城市的Observer Surfaces對(duì)象做空間運(yùn)算,判斷物理空間能否容納三維城市虛擬場(chǎng)景.具體的空間運(yùn)算步驟如下,首先,通過(guò)從observer surface立方體的中心和邊界4個(gè)角進(jìn)行光線投射,確定全息三維城市是否匹配到了物理表面上;然后,檢查物理空間表面法線以確定它是否足夠平滑以使全息三維城市齊平,若可以則完成三維場(chǎng)景跟蹤注冊(cè),實(shí)現(xiàn)虛擬數(shù)字城市與物理空間的融合.
本實(shí)驗(yàn)通過(guò)空間映射技術(shù)實(shí)現(xiàn)的增強(qiáng)城市信息系統(tǒng)(AR-3DUIS)相比于傳統(tǒng)的3DUIS具有如下特殊功能:①AR-3DUIS中數(shù)字舊金山中的地理場(chǎng)景和物體是通過(guò)用戶周邊世界的光線和聲音所創(chuàng)建,所以它是物理世界中的一部分,具有虛擬對(duì)象真實(shí)感官特性;②可交互性:AR-3DUIS應(yīng)用中的數(shù)字城市能夠響應(yīng)用戶的凝視、手勢(shì)和語(yǔ)音指令.該數(shù)字城市除了能與人發(fā)生交互,同時(shí)作為物理世界的一部分也可以與物理世界的表面發(fā)生交互;③深度信息和視角信息:當(dāng)AR-3DUIS中的數(shù)字城市被放置在物理世界時(shí),該數(shù)字城市便具有深度信息和視角信息,用戶與數(shù)字城市實(shí)體距離和角度是可量測(cè)的;④空間持久性:用戶使用空間錨點(diǎn)將數(shù)字城市插入現(xiàn)實(shí)世界中,當(dāng)用戶重新返回的時(shí)候,該數(shù)字城市依然保持在原來(lái)放置的位置.
圖3 將虛擬三維城市嵌入現(xiàn)實(shí)世界Fig.3 Embed virtual 3D city in the real world
圖4 空間映射流程圖Fig.4 Flow chart of spatial mapping
本實(shí)驗(yàn)AR-3DUIS應(yīng)用實(shí)現(xiàn)了凝視、手勢(shì)和語(yǔ)音等自然人性的人機(jī)交互方式,3種交互方式中凝視用于捕捉用戶視線與數(shù)字舊金山碰撞的具體位置,手勢(shì)以及語(yǔ)音交互用于實(shí)現(xiàn)對(duì)捕捉點(diǎn)所在的地理實(shí)體的操作.人機(jī)交互的具體實(shí)現(xiàn)是基于Unity3D游戲引擎,每種交互方式的實(shí)現(xiàn)過(guò)程如下:①凝視設(shè)計(jì):凝視是通過(guò)用戶頭部的位置(UnityEngine.Camera、main、transform、position)和方向(UnityEngine、Camera、main、transform、forward)并調(diào)用Physics.RayCast發(fā)出射線后得到射線與全息數(shù)字場(chǎng)景碰撞的結(jié)果,該結(jié)果包含了碰撞點(diǎn)的3D位置參數(shù)和碰撞對(duì)象,通過(guò)3D位置參數(shù)生成凝視的圖標(biāo),實(shí)現(xiàn)對(duì)凝視的響應(yīng).如圖5所示是凝視示意圖,藍(lán)色小圓圈所在的位置表示用戶視線在數(shù)字舊金山中變壓器上的位置,用于實(shí)現(xiàn)對(duì)用戶視線的反饋.②手勢(shì)設(shè)計(jì):手勢(shì)識(shí)別可以通過(guò)HoloLens提供的高級(jí)API實(shí)現(xiàn),首先,創(chuàng)建手勢(shì)識(shí)別GestureRecognizer實(shí)例;然后,為該對(duì)象注冊(cè)指定的手勢(shì)類型(GestureSettings.Tap、GestureSettings、Hold和Navigation Gesture等手勢(shì));之后,為每一種手勢(shì)類型訂閱手勢(shì)事件和方法;最后,手勢(shì)識(shí)別對(duì)象GestureRecognizer實(shí)例開始手勢(shì)識(shí)別.如圖6所示是通過(guò)手勢(shì)查看三維數(shù)字城市中的實(shí)體變壓器零件信息的示意圖,手勢(shì)交互是在凝視的基礎(chǔ)上實(shí)現(xiàn)的.本實(shí)驗(yàn)主要實(shí)現(xiàn)了air-tap、Navigation Gesture和Manipulation3種方式,其中,air-tap方式實(shí)現(xiàn)對(duì)數(shù)字舊金山具體實(shí)體的查詢;Navigation Gesture方式實(shí)現(xiàn)對(duì)數(shù)字場(chǎng)景的旋轉(zhuǎn),方便用戶從不同的角度瀏覽數(shù)字舊金山;Manipulation方式用于對(duì)數(shù)字場(chǎng)景的縮放,實(shí)現(xiàn)用戶從不同的尺度瀏覽數(shù)字舊金山.
圖5 凝視示意圖Fig.5 Gazing sketch map
圖6 手勢(shì)與語(yǔ)音查看全息物體的屬性Fig.6 The properties of a holographic object with gestures and speech
本文實(shí)驗(yàn)實(shí)現(xiàn)了將增強(qiáng)現(xiàn)實(shí)技術(shù)應(yīng)用于三維城市信息系統(tǒng),通過(guò)Microsoft HoloLens頭戴設(shè)備,將三維數(shù)字城市映射到物理世界當(dāng)中,提供給用戶真三維數(shù)字城市的視覺體驗(yàn),并且用戶能感知數(shù)字場(chǎng)景中的深度信息和視角信息.雖然本文實(shí)現(xiàn)了將AR應(yīng)用于3D UIS,但也存在技術(shù)上的限制與不足,具體如下:
1)HoloLens渲染能力有限,為了兼顧ATOM處理器和本身的性能,微軟對(duì)HoloLens應(yīng)用程序的大小進(jìn)行了限制,所以,AR-3DUIS應(yīng)用程序不能超過(guò)900MB.
2)開發(fā)AR-3DUIS應(yīng)用有兩種方式,采用Unity3D游戲引擎和Holographic DirectX3D API.基于Unity3D可以實(shí)現(xiàn)快速開發(fā)AR-3DUIS應(yīng)用,但該開發(fā)方式會(huì)受制于Unity3D;基于Holographic DirectX3D API,缺少人機(jī)交互的基礎(chǔ)類庫(kù),需要從底層設(shè)計(jì)人機(jī)交互接口,開發(fā)難度系數(shù)較大.
3)AR-3DUIS應(yīng)用適合第一人視角,也可以采用第三人稱瀏覽,對(duì)比兩種視角,后者的視覺效果不如前者.第三人稱視角依賴于HoloLens Mixed Reality Capture系統(tǒng),該系統(tǒng)采用的是200萬(wàn)像素的RGB攝像頭.本文實(shí)驗(yàn)截圖是通過(guò)第三人稱捕捉的視屏流獲得,畫面像素低質(zhì)量差,畫面質(zhì)量不如直接穿戴HoloLens全息眼鏡.解決第三人稱視角像素的問(wèn)題可以采用Spectator View對(duì)增強(qiáng)現(xiàn)實(shí)畫面拍攝,該方法需要兩臺(tái)HoloLens、一臺(tái)可以輸出HDMI的攝錄設(shè)備和一套高性能的計(jì)算機(jī)系統(tǒng),采用該方法其輸出畫面分辨率可以達(dá)到1080p甚至4K左右.
本文提出的基于AR的三維城市信息系統(tǒng)設(shè)計(jì)方法,以Unity3D游戲引擎為核心開發(fā)平臺(tái),以HoloToolkit為開發(fā)包,以增強(qiáng)現(xiàn)實(shí)設(shè)備HoloLens為應(yīng)用展示平臺(tái),改變傳統(tǒng)的三維城市信息的載體和視覺體驗(yàn),從二維的電腦屏幕視角到增強(qiáng)現(xiàn)實(shí)眼鏡HoloLens三維的全息視角,使得UIS用戶能體驗(yàn)真正的3D UIS;另外改變UIS的體感和交互方式,從傳統(tǒng)的鼠標(biāo)和鍵盤的交互轉(zhuǎn)向凝視、手勢(shì)和語(yǔ)音的交互方式.未來(lái)對(duì)于AR-3DUIS的研究將集中關(guān)注以下方面:①將地理分析模型、空間分析服務(wù)集成到AR-3DUIS當(dāng)中,豐富增強(qiáng)城市信息系統(tǒng)的計(jì)算分析能力,使其能動(dòng)態(tài)展示城市演變的過(guò)程;②建立城市信息系統(tǒng)與增強(qiáng)現(xiàn)實(shí)之間通用的數(shù)據(jù)接口和標(biāo)準(zhǔn),降低兩者數(shù)據(jù)格式轉(zhuǎn)換帶來(lái)的成本.