呂寶媛,蔡煜城,林偉達,曹家榕,楊敬達,蔡澤民
(汕頭大學(xué) 工學(xué)院,廣東汕頭 515063)
全息投影技術(shù)又名虛擬成像技術(shù),通過干涉、衍射等光學(xué)原理,將真實物體的三維圖像進行重現(xiàn)。
根據(jù)技術(shù)方法與實現(xiàn)途徑的不同,可以將全息投影分為以下兩類:
(1)投射全息投影:將激光投射到全息投影材質(zhì)的膠片上,從全息膠片背面觀察重建之后的圖像。
(2)反射全息投影:將白的光源從觀察者的方向投射到全息投影膠片上,利用反射的原理重建彩色的圖像[1]。
全息投影技術(shù)是當今一種前沿的顯像技術(shù)。憑借其技術(shù)產(chǎn)生了各類全息投影產(chǎn)品,應(yīng)用于廣告業(yè)、博物館、科技館、珠寶企業(yè)、車企等領(lǐng)域。但現(xiàn)今的全息投影技術(shù)僅限于全息影像的展示,播放全息視頻,并沒有交互功能,用戶體驗不佳,且能進行交互的設(shè)備也僅局限于平面播放,并無立體效果。
針對上述問題,本文提出了一種基于Leap Motion與全息投影技術(shù)的交互全息投影方法。本方法在傳統(tǒng)只顯示固定內(nèi)容的全息3D投影方法的基礎(chǔ)上,擴大了成像的體積,增加Leap Motion體感傳感器以實現(xiàn)交互功能,實現(xiàn)了可控制的3D全息影像展示。
本方法不僅可以用于簡單的視頻播放以展示產(chǎn)品、展示3D物體,更可以通過手勢來控制物體的移動及旋轉(zhuǎn)、控制虛擬人物的移動以進行游覽式觀賞,解決了傳統(tǒng)投影設(shè)備無交互效果、用戶體驗差的問題。此外,還加入投影儀以擴大成像體積,采用全息投影技術(shù),實現(xiàn)全息影像的生成,增加成像的靈活度,解決了顯示設(shè)備受限、生成圖像單一的問題。
本文提出的基于Leap Motion的交互全息投影方法由人機交互模塊和顯像模塊兩部分實現(xiàn),如圖1所示。
圖1 交互全息投影模塊結(jié)構(gòu)
人機交互模塊通過對人體手部動作的識別,以獲取人體的控制信息,將人體控制信息傳輸?shù)教幚砥魃希商幚砥鲗⑹盏降目刂谱藨B(tài)信息進行分析運算,生成計算機指令對圖像進行控制,最終在顯像系統(tǒng)中顯示并控制三維立體模型。
顯像模塊通過Unity3D及相關(guān)算法對所需顯示的模型進行處理,利用金字塔結(jié)構(gòu)將光線反射,使顯像模塊生成三維立體的圖像,同時,Unity3D與Leap Motion進行通信,根據(jù)Leap Motion經(jīng)計算機處理過的指令對顯像模塊中的三維立體圖像進行變換。
本方法所使用的終端設(shè)備為個人電腦。此電腦至少應(yīng)具備支持USB3.0協(xié)議的接口、HDMI接口,以用于完成基于Unity3D引擎的圖像處理以及接收用戶與設(shè)備互動的信息。本方法所用的顯示模塊由顯示器以及亞克力材質(zhì)的金字塔組成。人機互動設(shè)備采用的是體感傳感器Leap Motion。
在處理終端上,采用Unity3D引擎進行處理。Unity3D是Unity Technologies公司開發(fā)的一款能輕松設(shè)計3D游戲、可視化模型、實時3D動畫等內(nèi)容的游戲開發(fā)工具,其支持多個平臺與設(shè)備,是一個功能強大、整合全面的專業(yè)級游戲引擎。因而Unity3D也常常被作為交互圖形化開發(fā)的首選環(huán)境。
顯像模塊為一個全息投影設(shè)備。由該設(shè)備接收來自計算機的控制指令,生成全息影像,并根據(jù)指令控制影像變換。
本系統(tǒng)采用的全息投影技術(shù)是利用佩伯爾幻像原理,能夠把影像懸浮于空中的立體成像技術(shù),利用全息材料制成的反射面,將虛擬影像懸浮于空中,360°均能觀看[2]。
全息投影是一種無需頭戴設(shè)備的3D技術(shù)。觀眾可以看到的立體的虛擬場景是一種因光的折射、反射而形成的虛像。它能實時地將真實的三維圖像記錄和再現(xiàn)。本方法中利用全息投影技術(shù),生成立體影像并進行交互。圖2為成像系統(tǒng)結(jié)構(gòu)圖。
圖2 成像模塊結(jié)構(gòu)圖
2.3.1多攝像頭設(shè)計
在Unity3D中需要多個面觀察引擎中的對象,所以需要多個攝像頭組件同時工作,在此方法中采用了一個由四個攝像頭組成的攝像頭組進行多鏡頭的采集[3]。
在工具欄中選擇攝像頭組件,依次導(dǎo)入四個攝像頭至當前的場景。改變四個攝像頭的位置參數(shù),使其分別在x軸正半軸、x軸負半軸、z軸正半軸、z軸負半軸上,且與原點(0,0,0)等距,目的是使四個畫面中的物體尺寸一致。改變旋轉(zhuǎn)角參數(shù),使其分別在正向朝向原點,目的是使四個畫面中的物體朝向一致。某一攝像頭的組件參數(shù)如圖3所示。
圖3 某一攝像頭的組件參數(shù)圖
通過改變攝像頭的位置參數(shù)和旋轉(zhuǎn)角參數(shù),得到了以物體為中心的前后左右四個不同方向的畫面,如圖4所示。
圖4 四個攝像頭的位置及朝向圖
2.3.2圖像輸出組件
創(chuàng)建四個圖像組件,改變其位置參數(shù),使其相互緊貼組成一個2×2的大正方形陣列,并加上一個等腰直角三角形的透明遮罩層,使大正方形的邊線中點間組成一個小正方形,該小正方形即為圖像顯示的UI界面。
通過攝像機Target Texture目標紋理技術(shù),將之前四個攝像機拍攝得到的圖像轉(zhuǎn)換成紋理貼圖,做成材質(zhì)依次應(yīng)用到四個圖像組件上。
根據(jù)由亞克力板構(gòu)成的金字塔尖端的朝向,需要調(diào)整各個圖像組件的旋轉(zhuǎn)角參數(shù),使從金字塔外的四個面看圖像都為正向,如圖5所示。
圖5 四個image組件位置及其旋轉(zhuǎn)圖
2.3.3將物體導(dǎo)入至場景
Unity3D支持FBX、STL等3D物品格式,可以方便地將物品的3D模型導(dǎo)入至場景中,并將物品移至坐標原點處,目的是方便用戶觀察。
為了進一步讓用戶更方便地全方位觀察物品,可以使物品自動旋轉(zhuǎn),將物品的每個細節(jié)展示給用戶。具體實現(xiàn)方法是:添加C#腳本,在腳本中獲取當前物體的旋轉(zhuǎn)角度,在相同的時間周期內(nèi)改變相同的旋轉(zhuǎn)角度,實現(xiàn)物體的自旋轉(zhuǎn)。
人機交互模塊由用于人體手勢識別的體感傳感器Leap Motion以及用于接收傳感器傳來的人體控制信息的處理器兩個部分組成。人體在設(shè)備前做出動作,利用Leap Motion接收并識別人體控制信息,初步處理后交由處理器將控制信息轉(zhuǎn)化為計算機指令。
Leap Motion是基于計算機視覺技術(shù)的三維數(shù)據(jù)追蹤傳感器設(shè)備[4]。它主要由兩個高幀率攝像頭、LED燈、紅外濾光器以及一片USB3.0芯片組成,傳感器的上下左右的視野范圍大約為150°,其結(jié)構(gòu)如圖6所示。
圖6 Leap Motion結(jié)構(gòu)圖
Leap Motion的可工作范圍大約在設(shè)備前方的25~600 ms。Leap Motion采用兩個超廣角相機的快門傳感器,運行速度高達120 fps,是一種更專業(yè)的手勢采集設(shè)備[5]。
Leap Motion系統(tǒng)采用的是右手笛卡爾坐標系。以真實世界中的毫米為單位返回具體的手勢數(shù)據(jù)。原點位于Leap Motion控制器的中心。x軸和z軸在控制器的水平面上,x軸則與設(shè)備的長邊平行,z軸與短邊平行,y軸是垂直的,朝上為軸的正方向。
Leap Motion的基本原理:使用紅外LED燈充當主動光源,兩個高清攝像頭從不同角度采集紅外圖像,模擬人體雙目立體視覺原理進行手勢的判斷[6]。
Leap Motion與ZED、Kinect等其他深度傳感器的不同在于它的精度達0.01 mm,手部微小的運動也可以捕捉。
3.2.1LeapMotion的工作流程
如圖7所示,交互模塊首先使用紅外雙目攝像頭Leap Motion從兩個角度拍攝用戶手部圖像,雙目數(shù)據(jù)流達到120 fps,通過USB3.0高速傳輸?shù)诫娔X處理,通過Leap Motion的SDK處理傳回的雙目信息,計算出深度信息,對深度信息中的手進行特征分析,最終獲取手勢數(shù)據(jù)發(fā)布給Leap Motion Service程序,在Unity3D下綁定腳本,通過判斷手指的情況以確定人體當前手勢,并執(zhí)行相應(yīng)的程序和動作。
圖7 交互功能實現(xiàn)流程圖
3.2.2具體實現(xiàn)方法
(1)判斷手掌是否握拳
如圖8所示,輸入對應(yīng)的手(左手或右手,在Unity3D中為一對象),對每個手指判斷其方向向量與掌心的方向向量之差的距離,若小于閾值則表示手指彎曲,若大于閾值則表示手指伸直,由此遍歷每個手指。之后判斷彎曲的手指數(shù),若彎曲的手指數(shù)為5,則表示所有的手指彎曲,手掌握拳;若彎曲的手指數(shù)小于5,則表明手掌未握拳,最終返回判斷的結(jié)果。
(2)判斷雙手組合
運用圖8中的方法對左右手進行判斷,根據(jù)左手和右手握拳狀態(tài)的不同,控制Unity3D中的任務(wù)進行相應(yīng)的動作。若左手握拳,右手握拳,則停止運動;若左手握拳,右手不握拳,則右轉(zhuǎn);若左手不握拳,右手握拳,則左轉(zhuǎn);若左手不握拳,右手不握拳,則控制前進,如圖9所示。
圖9 判斷不同的手勢組合做出相應(yīng)動作
本實驗以城市探索模式為例,進行了現(xiàn)場體驗測試。測試環(huán)境為Windows 10 64位+Unity3D 2017.3。測試者位于交互全息投影設(shè)備前方,做出不同姿勢,以驗證不同人體姿態(tài)識別分析的準確性。當測試者左右手做出不同的動作時,顯像模型做出相應(yīng)的反應(yīng),如表1所示,速度快而且識別率高,測試者能夠流暢地控制全息投影中的人物進行城市探索。
表1 不同手勢系統(tǒng)做出的反應(yīng)
實驗結(jié)果表明,利用Leap Motion能精確地識別人體動作姿勢信息,通過相應(yīng)的算法及顯像設(shè)備,從而實現(xiàn)對全息3D影像中虛擬人物的狀態(tài)、移動速度、移動方向的控制,充分驗證了基于Leap Motion的交互全息投影方法的可行性。
本文提出了一種基于Leap Motion與全息投影技術(shù)的交互全息投影方法。該方法通過采集人體姿態(tài)信息、人體控制信息,通過對采集到的信息進行分析處理來控制全息影像的變換及場景移動等,解決了傳統(tǒng)全息投影設(shè)備僅限于全息影像的展示、視頻的播放,無交互效果,用戶體驗較差的缺陷,也彌補了其他能夠進行交互的設(shè)備僅局限于平面成像、并無立體效果的不足。該方法使用戶可以以第一視角進行三維立體影像的觀光體驗,增強用戶的代入感,提高用戶體驗,有良好的應(yīng)用前景。