嚴海龍 黃軍建 孫婕 張露婷 廖袁濤












摘要:增強現實技術是一門基于計算機圖形學、人工智能、交互傳感技術等多種學科的,將虛擬信息疊加到實時環境中增強真實環境顯示的綜合性技術。針對目前基于HoloLens結合Vuforia SDK和3D渲染引擎Unity的增強現實系統中虛擬信息的渲染顯示受到識別標識信息限制且標識識別效率低,受實時環境的復雜條件影響大而出現的虛擬模型渲染不出、偏移、抖動不穩定的缺陷,提出一套結合Vuforia識別圖像機制和簡單渲染模型函數使用的實現方案,擺脫了虛擬模型的渲染顯示過于依賴標識信息追蹤的結果。
關鍵詞:增強現實;模型穩定;HoloLens;Vuforia SDK;隱藏顯示
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)36-0028-04
開放科學(資源服務)標識碼(OSID):
Research on the Instability of Model Based on Augmented Reality System
YAN Hai-long1, HUANG Jun-jian1, SUN Jie2, ZHANG Lu-ting3, LIAO Yuan-tao1
(1.Electronic and Information Engineering College of Southwest University, Chongqing 400715, China; 2.Haihe River, Huaihe River and Xiaoqinghe River Basin Water Conservancy Management and Service Center of Shandong Province, Jinan 370102,China; 3.People's Procuratorate of Beijing Municipality, Beijing 100078, China)
Abstract: Augmented Reality technology is a comprehensive technology based on Computer Graphics,Artificial Intelligence,Interactive sensing technology and other disciplines, which superimposes virtual information into a real-time environment to enhance the display of the real environment. The rendering and display of virtual information in the current augmented reality system based on HoloLens combined with Vuforia SDK and 3D rendering engine Unity are limited by identification information, low identification efficiency, and greatly affected by the complex conditions of real-time environment, resulting in the defects of virtual model rendering failure, migration, and unstable dithers. An implementation scheme combining Vuforia recognition image mechanism and simple rendering model function is proposed to get rid of the virtual model rendering relying too much on the tracking results of identification information.
Key words: augmented reality; stability of model; Hololens; Vuforia SDK; hide display
近年來,隨著計算機不斷地迭代,其處理能力也在不斷地提升,互聯網的高速發展已經將我們從真實世界活動引入到了虛擬世界當中[1]。增強現實技術是在虛擬現實的基礎上發展起來的一種新的計算機人機交互技術,指的是借助計算機圖形技術和可視化技術將虛擬信息如計算機生成的文本信息,3D模型等疊加到眼睛看到的真實環境當中,借助顯示設備將虛擬信息和真實環境融為一體,給予用戶一種全新的虛擬+現實的感官效果。而混合現實(簡稱MR) 是一組技術組合,借助顯示設備中通過攝像頭觀察到的真實場景與虛擬場景相結合,使真實世界與虛擬場景在同一視覺空間中顯示并能與用戶進行各種交互的計算機虛擬現實技術[2]。
在增強現實系統中需要對3D虛擬場景進行渲染、設計交互功能,并疊加到相應的AR跟蹤真實場景中,渲染引擎采用的是Unity3D。Unity3D中的渲染技術主要優點具有高度優化的圖像渲染管道(如Open GL)并且內置高效的物理引擎,能實現更加真實的交互效果,支持多種外部導入的模型格式(如.obj、.3ds)、貼圖,并自動轉換為自身格式。在完成應用開發后能方便快捷地部署到設備上,且支持多種設備,如Windows、Android、IOS和HoloLens等平臺[3]。
基于Unity開發的HoloLens應用程序是通過不同3D場景組成的,每個場景中可設置多個實體對象(GameObject)用以完成不同的任務,并且可以使用腳本代碼對實體對象進行一系列的功能設計。Unity中的腳本語言主要支持C#、UnityScript 兩種,當腳本用程序語言如事件函數寫好相應功能后,都會綁定到需要實現該功能的GameObject(對象)上,在運行時該場景時場景中掛載了腳本的物體也會運行相應腳本中的功能程序。
在應用增強現實系統時,用戶的沉浸式體驗、虛實結合程度以及虛擬信息進行各種交互的流暢度、真實感是用于評價其增強系統好壞的指標之一。但由于如今AR技術在圖像識別、追蹤注冊等方面還處于發展階段,各方面還不夠成熟。如張樂在研究基于HoloLens的增強現實系統時提到基于計算機視覺的跟蹤注冊技術的缺點是可能出現虛擬物體漂移問題,受環境影響大。標識信息的丟失或遮掩會直接導致虛擬信息的注冊和跟蹤失敗[4]。
王培霖等[5]對于增強現實的現狀也是認為AR技術需要使用圖像處理、渲染及跟蹤算法等,雖然已經可以應用至正常的真實環境,但是有時候存在由于光線問題而導致的物體陰影、物體運動在跟蹤時仍然存在較大延時或是遮蔽問題、分辨率或是幀數不高時會產生較強烈的抖動及運動模糊等問題。包佳宇[6]、張帥[7]提到目前增強現實中有關用戶體驗的研究也包括環境光、遮擋和能見度、渲染和分辨率不匹配,校準不匹配,增強現實技術成像需要與預設的數據信息保持一致,一旦出現數據差,即可導致成像內容出現停頓或形變問題,從而影響使用者的體驗效果。王宇希等[8]提及增強現實現狀時也表示目前的AR跟蹤注冊方法只能對場景中少量的信息加以利用,如特征點信息,這造成系統對環境的理解不完整。
而本文便是在基于HoloLens的增強現實裝配指導系統中出現的因實時環境復雜因素導致的識別模型抖動偏移等情況下提出的一種解決方案。
1 增強現實系統結構
開發基于HoloLens結合Unity和Vuforia的增強現實系統由三個部分組成。第一個部分在Vuforia官網云端完成。第二個部分在Unity3D中完成,包括在導入MRTK工具包和Vuforia SDK后創建的HoloLens開發場景中創建的各種GameObject對象并進行交互設計。最后一個部分便是通過Unity打包并部署在HoloLens設備中進行應用,流程如圖1。
1.1 Vuforia識別原理
Vuforia識別使用的是視覺跟蹤器,即使用攝像機跟蹤目標,利用計算機視覺技術計算攝像機姿態,并且Vuforia識別是通過檢測自然特征點的匹配來完成的。將Target Manager中的Image檢測出的特征點保存在數據庫中,然后通過分析攝像頭實時捕捉到的視頻影像,并檢測當前實際場景每一幀圖像,通過像素格式轉換后圖像中的特征點與數據庫中模板圖片的特征點數據進行匹配,是否有圖像內容和預設的識別對象有匹配。匹配成功后,Vuforia就會創建一個可追蹤結果對象,并通過State對象逐幀地把可追蹤結果對象應用到Unity中[9]。Vuforia識別圖目標星級越高,識別追蹤速度越快,穩定性就越好。
1.2 Vuforia追蹤顯示原理
首先在場景中將Unity的內置相機刪除后替換成Vuforia AR Camera,接下來創建一個由Vuforia SDK提供的對象ImageTarget用于放置需識別的物體圖像。需要增強顯示的對象,虛擬模型則事先放入場景中并作為ImageTarget的子物體。子物體的意思就是虛擬模型對象的坐標變化完全決定于父物體ImageTarget的變化,屬于包含關系。
最終實現識別后增強現實效果的便是腳本DefaultTrackable Event Handler.cs(下文將簡稱為DTEH)。在Unity的開發中腳本就像是指令一般控制著對象的各種功能行為的實現。在創建對象ImageTarget后DTEH腳本會被自動掛載,在該腳本文件中定義了OnTrackingFound()、OnTrackingLost()兩個方法。
當AR Camera追蹤到真實物體時,Vuforia提供的像素級的圖像轉換器在相機的OpenGL ES渲染格式與跟蹤格式之間進行轉換[9]。腳本中的OnTrackingFound()函數在識別圖片成功后執行使得隱藏虛擬模型開始通過GPU渲染管線渲染顯示,過程如圖2。而當識別圖像丟失后觸發OnTrackingLost()函數使虛擬模型又重新回到禁用狀態。
2 基于HoloLens的隱藏模型追蹤顯示的實現
2.1 傳統的HoloLens結合Vuforia開發的局限性
通過上文可知,由于真實環境復雜可變,而數據庫模板圖片是在固定環境條件下拍攝的,實時檢測出真實圖像與模板圖像會因為環境變換如光照問題會影響到檢測與跟蹤的效果。在HoloLens的應用中,用戶也需要實時與一個穩定且不受外界干擾的虛擬模型進行各種交互,能360°地觀察虛擬模型而模型不會隨著用戶的移動而移動。除了虛擬模型不穩定以外,在傳統的Vuforia開發中,由于虛擬模型對象作為識別圖像對象的子物體,用戶與虛擬模型進行的各種交互功能將會受到限制,例如虛擬模型只能隨著實時環境中的識別圖像移動而移動,并不能實現HoloLens開發組件MRTK中提供的各種手勢以及凝視交互功能,局限性很大。
為了解決此類問題,在本文中提出一種基于隱藏函數利用Vuforia的追蹤顯示解決模型受干擾發生偏移抖動的問題。
2.2 一種基于隱藏函數利用Vuforia的追蹤顯示的解決辦法
在基于HoloLens結合 Vuforia開發的過程中,首先要先將虛擬模型置于攝像機的可視范圍之內,接下來在場景中創建一個隱藏顯示腳本HIDE.cs,腳本代碼部分如圖3。
先將虛擬模型的渲染禁用實現“隱藏”的狀態,此處使用了隱藏函數:
void Start()
{ gameObject.SetActive(false);//隱藏物體 }
其中,Start()將在MonoBehaviour創建后在該幀Update()第一次執行前被調用,在腳本被啟用時才會執行。所以應用程序開始時,虛擬模型處于被禁用狀態,沒有被渲染顯示。在ImageTarget Inspector面板中,腳本DefaultTrackableEventHandler(Script)有個功能便是當目標被識別成功后,能執行場景中其他掛載腳本物體中的函數。此處便利用了該功能在識別成功后執行HIDE.cs腳本中的顯示函數:public void Gamestart() {gameObject.SetActive(true);//顯示物體}將虛擬模型成功渲染顯示(虛擬模型在隱藏前必須放置在攝像機的視野中),模型顯示后即使Vuforia追蹤圖像受到了外界光照、攝像頭模糊等干擾因素,但虛擬模型并不會受到干擾而一直存在于視野當中。此處會存在以下兩種情況:
1)在傳統方法中,由于虛擬模型在Unity場景中是ImageTarget(識別圖像)的子物體,所以會隨著真實環境中標識物的移動而移動,通過本文方法實現模型的渲染后并不能隨識別圖移動,會出現虛擬模型位置不準確的情況。與傳統方法相比,由于此方法是基于Unity / Vuforia 在HoloLens中的開發應用,而HoloLens的開發提供了多種交互方式,例如通過手勢交互便能直接移動虛擬物體到指定位置,還能對其進行旋轉、縮小放大等操作,如圖4。
手勢交互功能實現過程如下:首先在Inspector面板中虛擬物體添加Box Collider組件,作為一個與手進行碰撞檢測的碰撞器用于觸發事件。接下來為了讓虛擬物體在場景中具有可移動、旋轉、縮小放大等可調整的狀態,添加Object Manipulator腳本并且會自動添加Constraint Manager腳本。由于需要讓HoloLens的攝像機識別響應輸入,需給物體添加Interactable腳本,便能夠實現觸摸輸入,遠距離時發射手部光線和語音進行與模型的交互。對于一個場景中會存在多個虛擬物體的情況,添加NearInteractionGrabbable腳本便是為了交互時能優先接近最近的可抓取物,腳本的添加如圖5。
2)在傳統方法中,AR識別脫離后虛擬模型會自動消失。而本方法是立足于HoloLens結合Unity+Vuforia開發的增強現實系統,所以同樣采用了通過交互觸發隱藏腳本的方式使虛擬模型完成自動消失。在對虛擬物體掛載隱藏腳本過后,利用Interactable交互組件中的Events組件,將該腳本拖入Events當中,當我們用手點擊物體的時候便會觸發腳本使物體隱藏。若再需要物體顯示,可重新通過識別圖像觸發顯示函數讓物體再次渲染出來,腳本掛載位置如圖6。
本方法中的全息模型不需要依賴追蹤函數的識別成功而顯示,所以不會受到外界環境的影響和目標信息的限制,并且不會受到虛擬模型與識別圖像之間相對位置的影響。用戶可以在任意角度和位置觀察全息模型或者與模型交互,模型也不會因為攝像機移動的緣故而發生偏移抖動,也不會受到外界環境干擾或者無法一直跟蹤識別圖像而導致應用無法加載虛擬模型。
3 實驗結果分析
在Vuforia輸出顯示過程中,AR Camera是通過發射射線找到攝像頭的實時畫面并在屏幕中顯示出來。傳統的識別方法在識別后按照正常情況下忽略環境變化因素以及設備性能因素,增強現實的實驗效果如圖7(a)。而由于設備性能或者受到環境變化等條件對識別結果干擾較大的情況下,虛擬模型實時增強顯示在真實環境中會出現模型丟失,光標發生劇烈抖動的情況,如圖7(b)所示;當虛擬模型成功渲染后也會因此導致模型抖動不穩定的現象,如圖7(c)所示。與之相比,本文采用的方法是首先將虛擬模型隱藏到攝像機可視范圍中將要增強現實的位置,只需成功識別一幀圖像后便能渲染出虛擬模型,并不再受標識物的影響,有效解決了虛擬模型識別丟失或者實時識別受到影響時的抖動與偏移等缺陷,保證了虛擬模型的穩定性,實驗結果如圖8。
4 結束語
本文是基于HoloLens結合Unity引擎和Vuforia SDK開發的增強現實系統應用中出現的因受實時環境復雜條件影響導致虛擬模型追蹤失敗或抖動不穩定的缺陷,提出的一套在HoloLens的應用中結合Vuforia識別圖像機制和簡單渲染模型函數使用的實現方案。重點是從Vuforia識別機理和導致識別缺陷的原因以及本文提出的方案與傳統識別方案對比的優勢展開的論述。實驗結果表明,相對于傳統的識別方案,本文方案具有以下優勢:
1) 解決了因實際環境復雜因素導致的識別不精確進而影響的虛擬模型抖動、漂移等缺陷,不需要一直對模型圖像進行識別匹配,只需要在一幀圖像中匹配成功后便能觸發顯示函數使模型渲染。在HoloLens的應用中,用戶可360°全方位對虛擬模型進行探視,所以就要求虛擬模型保持穩定性才能使用戶有更好的沉浸感。
2) 虛擬模型的位置不會隨著識別圖像的移動而移動。在傳統方法中虛擬模型是作為識別模板圖像ImageTarget的子物體,子物體會隨著父物體的移動而發生相對移動,而在HoloLens的應用中,用戶需對虛擬對象進行各種交互操作,例如移動旋轉等,基于此原因本文方案很好地解決了虛擬模型受到限制的情況,使模型處于一個獨立的GameObject對象而不受其他對象的影響。
3) 虛擬模型的大小和距離攝像機的距離可以任意改變。在傳統方法當中由于ImageTarget的規模必須為(1,1,1),規模反映了對象的大小,如圖9。而要想讓虛擬模型能在攝像機內渲染顯示,就必須要設置虛擬模型的大小與識別圖像的大小相對保持一致,否則虛擬模型不在攝像機的可視范圍之內后最終在屏幕上得不到渲染結果。與之相比,本文所提供的方法是不受標識物大小的影響,可以任意設置虛擬物體大小,前提是也需要在攝像機可視范圍之內,如圖10、圖11。
參考文獻:
[1] 顧君忠.VR、AR和MR-挑戰與機遇[J].計算機應用與軟件,2018,35(3):1-7,14.
[2] 黃進,韓冬奇,陳毅能,等.混合現實中的人機交互綜述[J].計算機輔助設計與圖形學學報,2016,28(6):869-880.
[3] 郭曉敏,申閆春.基于Unity/Vuforia的AR導覽系統研究[J].計算機仿真,2019,36(8):165-169.
[4] 張樂.基于HoloLens的增強現實識別系統[D].太原:中北大學,2020.
[5] 王培霖,梁奧齡,羅柯,等.增強現實(AR):現狀、挑戰及產學研一體化展望[J].中國電化教育,2017(3):16-23.
[6] 包佳宇.眼鏡式增強現實顯示設備的圖像質量研究[D].南京:東南大學,2017.
[7] 張帥.虛擬現實及增強現實技術的發展現狀及前景[J].佳木斯職業學院學報,2018(8):456-457.
[8] 王宇希,張鳳軍,劉越.增強現實技術研究現狀及發展趨勢[J].科技導報,2018,36(10):75-83.
[9] 羅永東.基于Unity3D的移動增強現實技術與應用研究[D].青島:青島科技大學,2015.
[10] 孟曉寧,王寶華.圖形處理中GPU固定渲染管線的研究[J].集成電路應用,2018,35(2):90-94.
【通聯編輯:謝媛媛】