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