国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Leap Motion 和Unity3D 的體感游戲開發(fā)與集成

2015-07-13 21:45:16袁田琛胡新榮趙儉輝
電腦知識與技術(shù) 2015年13期
關(guān)鍵詞:人機(jī)交互

袁田琛 胡新榮 趙儉輝

摘要:隨著人機(jī)交互技術(shù)的發(fā)展,體感技術(shù)是當(dāng)今游戲開發(fā)領(lǐng)域中的一個重要研究方向。Leap Motion是帶有兩個攝像頭和其他傳感器的體感控制器,能高精度實時檢測手掌、手指的位置和速度等信息,為體感游戲應(yīng)用開發(fā)提供了一種有效途徑。本文以Unity3D游戲引擎開發(fā)第三人稱射擊游戲為例,采用Leap Motion控制器對游戲中的角色進(jìn)行操作控制,包括用手勢控制游戲角色的行走、瞄準(zhǔn)、射擊以及攝像機(jī)鏡頭的全方位移動等動作控制,擺脫了傳統(tǒng)的鍵盤和鼠標(biāo)操作,實現(xiàn)了Leap Motion控制器和Unity3D游戲引擎的交互式體感游戲的開發(fā)與集成。

關(guān)鍵詞: 人機(jī)交互;Leap Motion控制器;Unity3D;體感游戲

中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)13-0201-04

游戲和電腦動畫是多媒體和虛擬現(xiàn)實技術(shù)中一個迅速發(fā)展的領(lǐng)域。市場調(diào)查發(fā)現(xiàn),近年來,游戲在大眾娛樂中所占的比例越來越大,其中手機(jī)游戲占有很大部分,其次是電腦中的網(wǎng)絡(luò)游戲和單機(jī)游戲。然而,這些游戲在創(chuàng)造了很多經(jīng)濟(jì)價值和社會價值的同時也出現(xiàn)很多不利的一面,在這些游戲中,多數(shù)的設(shè)計需要游戲者沉溺其中,并投入很多時間和金錢,這在很大程度上影響了游戲者的正常生活和身體健康,因此利弊摻半的手機(jī)游戲設(shè)計和開發(fā)是許多人不贊成的。隨著人機(jī)交互技術(shù)的發(fā)展,人機(jī)交互向著多元化、多功能的方向邁進(jìn),如語音識別、手勢識別等更加接近人的自然行為將成為未來游戲發(fā)展的方向[1]。

作為一種新穎的交互式設(shè)備,Leap公司于2013年推出了Leap Motion雙目體感攝像機(jī),它依賴于內(nèi)置雙目相機(jī)和紅外LED高精度地捕獲、跟蹤和分析手指和手的運動,再通過軟件處理圖像數(shù)據(jù),將其轉(zhuǎn)化為手勢和觸摸事件。目前國內(nèi)展開的Leap Motion相關(guān)應(yīng)用研究及開發(fā)的數(shù)量較少。在應(yīng)用研究方面,陳童等人實現(xiàn)基于Leap Motion的中國古琴聲畫結(jié)合的交互設(shè)計,通過基于虛擬現(xiàn)實設(shè)備與手勢識別技術(shù)的古琴音樂的虛擬演奏,真實表現(xiàn)了中國傳統(tǒng)音畫的意蘊與氣韻,提供了更具視覺震撼力的古琴互動體驗[2]。Leap Motion的功能有點類似Kinect,它能在PC及Mac上通過手勢控制電腦,只需揮動手指即可瀏覽網(wǎng)頁、閱讀文章、翻看照片及播放音樂。Leap Motion在體感游戲領(lǐng)域有著自身的獨特優(yōu)勢就是其高精度的手勢識別。人與電腦間的開闊空間,現(xiàn)已成為雙手和手指的舞臺。不論他們的每一次移動多么細(xì)微,又或是多么大幅度,Leap Motion 控制器都能精確地追蹤,從技術(shù)上說,這就是一個 8 立方英尺的可交互式 3D 空間,深度體現(xiàn)了人機(jī)交互的理念。 正因為Leap Motion能高精度實時檢測、手掌、手指的位置和速度等信息,它為體感游戲應(yīng)用開發(fā)提供了一種有效的技術(shù)途徑[3]。

Unity3D不僅是一款單純的游戲引擎,而且是涉及多種不同領(lǐng)域的一個跨平臺的三維游戲與虛擬現(xiàn)實開發(fā)工具,該工具從一開始就被設(shè)計成易于使用的產(chǎn)品,包括用戶界面、支持多腳本語言以及強(qiáng)大的物理引擎等特點,這些讓Unity3D成為深受廣大虛擬現(xiàn)實工程師歡迎的開發(fā)平臺。Unity3D 支持眾多領(lǐng)域的3D交互開發(fā),主要包括游戲開發(fā)、增強(qiáng)現(xiàn)實、3D Web、建筑、時裝、商品宣傳等,所有領(lǐng)域的開發(fā)都支持跨平臺發(fā)布,能在很短時間內(nèi)開發(fā)出需要的產(chǎn)品,并且是最好的開發(fā)工具之一[4-5]。

截止目前,國內(nèi)還未見將Leap Motion和Unity3D結(jié)合起來進(jìn)行應(yīng)用研究與開發(fā)方面的報道。本文以Unity3D游戲引擎開發(fā)第三人稱射擊游戲為例,采用Leap Motion控制器對游戲中的角色進(jìn)行操作控制,包括用手勢控制游戲角色的行走、瞄準(zhǔn)、射擊以及攝像機(jī)鏡頭的全方位移動等操控,從而擺脫鍵盤和鼠標(biāo)操作,實現(xiàn)Unity3D游戲引擎和Leap Motion控制器的一種交互式游戲應(yīng)用開發(fā)。首先介紹Leap Motion與Unity3D游戲引擎集成方法和Unity3D游戲場景、游戲角色的建模過程;然后,闡述Leap Motion與Unity3D體感游戲開發(fā)與集成步驟,最后給出相關(guān)的實驗結(jié)果。

1 Leap Motion與Unity3D集成方法

Leap Motion系統(tǒng)是可以檢測并跟蹤手掌、手指和類似手指的物體,而且該控制器能在高精確度和高跟蹤幀率下工作。這與Kinect將整個人視為控制器的設(shè)計理念有著本質(zhì)上的區(qū)別。

不論是精確地模擬隔空取物,還是實現(xiàn)科幻電影中用手勢去控制智能電腦、機(jī)器人的操作,無一不展現(xiàn)其強(qiáng)大。從Leap Motion設(shè)備中展現(xiàn)出的體感控制技術(shù)更為精準(zhǔn)、穩(wěn)定,基于Leap Motion的新應(yīng)用和游戲在App Home上動態(tài)更新發(fā)布。

隨著電腦的普及,人們對娛樂休閑的需求一直在增加,PC游戲的發(fā)展速度也不斷加快,不少游戲開發(fā)平臺應(yīng)運而生。開發(fā)者渴望一款高效便捷的游戲引擎,Unity3D的及時出現(xiàn)滿足了他們的期盼。功能完備的編輯器,更安全的編程方式,可實時編輯查看效果的功能,代碼驅(qū)動的開發(fā)模式,良好的生態(tài)圈等使它成為了游戲開發(fā)平臺中的佼佼者。

關(guān)于應(yīng)用程序編程接口(API: Application Program Interface),Leap Motion提供良好的開發(fā)環(huán)境和Unity3D游戲引擎進(jìn)行集成。Unity3D游戲引擎能通過Leap開發(fā)包(SDK: Software Development Kit)中提供的API與Leap Motion集成,Leap SDK支持 C++、C#、JavaScript 等程序設(shè)計語言,用Leap Motion控制器代替原有的鼠標(biāo)和鍵盤,從而實現(xiàn)對Unity3D第三人稱射擊游戲的體感控制。Leap SDK提供兩種API從Leap Motion服務(wù)中獲取追蹤數(shù)據(jù),第一種是原生接口(Native Interface),第二種是網(wǎng)頁套接字(Web Socket)。原生接口能讓開發(fā)者創(chuàng)建新的Leap應(yīng)用程序動態(tài)鏈接庫(DLL: Dynamic Link Library)。網(wǎng)頁套接字接口和JavaScript客戶端庫能方便便開發(fā)者創(chuàng)建基于Leap的應(yīng)用程序[6]。

本文采用的是原生接口,其API由動態(tài)鏈接庫(DLL)提供。該庫能連接到Leap Motion服務(wù),并為應(yīng)用程序提供追蹤數(shù)據(jù),這里使用C#和Java綁定鏈接。

2 Unity3D游戲場景、游戲角色建模

Unity3D游戲場景、游戲角色建模主要內(nèi)容如下:(1)將Maya中設(shè)計好的3D模型以FBX格式導(dǎo)出,3D模型具體制作過程此略,F(xiàn)BX格式文件導(dǎo)出時需檢查法線是否正確、貼圖是否完整等。(2)在Unity3D中建立地形、導(dǎo)入模型并將其擺放到合適的位置,布置好燈光、陰影以及天空盒。(3) 添加游戲角色、游戲管理模塊、武器系統(tǒng),進(jìn)行相關(guān)設(shè)置。(4)添加第三人稱攝像機(jī),以便對游戲角色進(jìn)行跟隨。(5)所有參與運動的模型需添加各自的腳本代碼并完成碰撞器的設(shè)置。具體建模過程見圖1-圖3所示。

這里以Unity3D游戲引擎開發(fā)一種第三人稱射擊游戲為例,采用Unity3D游戲引擎對游戲場景及游戲角色建模后,得到游戲場景全局視圖如圖4所示,游戲角色近景圖如圖5所示。

3 Leap Motion與Unity3D體感游戲開發(fā)與集成

當(dāng)Leap Motion接入電腦的USB后,若采用Leap Motion作為人機(jī)交互設(shè)備,需要設(shè)置Leap Motion設(shè)備、修改游戲角色腳本代碼、修改第三人稱攝像機(jī)腳本以及Leap Motion操作可視化等,這樣Leap Motion設(shè)備便可取代鼠標(biāo)或鍵盤操作,從而借助Leap Motion體感設(shè)備用手勢實現(xiàn)游戲角色的操控功能。為了實驗Leap Motion與Unity3D的融合,需要將Leap Motion與Unity3D進(jìn)行集成并添加相應(yīng)的腳本代碼。Leap Motion與Unity3D體感游戲腳本開發(fā)與集成步驟闡述如下。

步驟1:下載安裝Leap SDK

Leap Motion提供了用于Unity3D的SDK,能使開發(fā)人員便捷地將Leap Motion設(shè)備集成到要開發(fā)的游戲應(yīng)用程序中。Leap SDK下載安裝成功后,需要檢測其是否連接有效,可在Leap Motion App Home中運行一個簡單的應(yīng)用程序以檢測Leap Motion設(shè)備是否連接至電腦。

步驟2:添加支持Leap Motion的DLL文件

在此步驟中,先查找SDK安裝目錄中關(guān)于Unity3D的examples文件夾,復(fù)制其assets目錄中的plugins文件夾,plugins文件夾中包含了Leap Motion設(shè)備接口的三個DLL文件,它們分別是leap.dll、leapCSharp.dll和leapCSharp.net3.5.dll,將plugins文件夾粘貼到Unity3D游戲工程的assets文件夾中;再查找script文件夾中的leap文件夾,復(fù)制LeapUnityExtensions.cs并將其粘貼到plugins文件夾中。

步驟3:編寫LeapInput.cs C#腳本代碼

為了編制LeapInput.cs C#腳本代碼,這里給出了圖6所示的Leap Motion三維XYZ坐標(biāo)系和鼠標(biāo)在屏幕中的XY坐標(biāo)系。借助該圖中的兩個坐標(biāo)系,可幫助我們理解作為主控制器的Leap Motion所實現(xiàn)的主要功能:

(1) Leap Motion體感交互中的歸一化

Leap Motion控制游戲角色行走動作引入了交互盒類(Interaction Box),該類支持Leap Motion體感交互中的歸一化操作,即將手掌原始空間坐標(biāo)轉(zhuǎn)換為游戲角色中的相對位置等效值。從編程角度而言,就是用交互盒類描述Leap Motion視野中的物體運動,將Leap Motion體感交互范圍中的坐標(biāo)歸一化到[0,1]區(qū)間范圍。具體來講,在LeapInput.cs C#腳本代碼中,若所設(shè)置的手掌消失范圍在[-0.5,+0.5]區(qū)間外,返回值需進(jìn)行換算,當(dāng)返回值小于-0.5時返回-1 ,大于+0.5返回+1,其余情況返回0。

圖7是圖6中Leap Motion控制器X、Z軸所圍成的平面XZ直角坐標(biāo)系示意圖。在該圖XZ坐標(biāo)系中,若坐標(biāo)返回值valX=0、valZ=-1,那么游戲角色就向前移動(即向Z軸負(fù)方向移動);若坐標(biāo)返回值valX=+1、valZ=-1,則游戲角色向右前方移動。這樣,Leap Motion就可代替鍵盤的輸入行為,從而用Leap Motion控制游戲角色的行走。

(2) Leap Motion對屏幕XY坐標(biāo)系中鼠標(biāo)移動的支持

為了控制第三人稱攝像機(jī),需要添加Leap Motion對屏幕XY坐標(biāo)系中鼠標(biāo)移動的支持功能(鼠標(biāo)在屏幕中的XY坐標(biāo)系見圖6所示),它用于獲取手掌的位置、方向,因此游戲玩家觀察視角并非固定。移動手掌游戲玩家便能觀察游戲場景中的上下左右四個方向。

(3) Leap Motion手勢操控游戲角色

借助Leap Motion設(shè)備手勢操控游戲角色中的瞄準(zhǔn)、射擊動作。當(dāng)Leap Motion設(shè)備識別的手指數(shù)超過兩只時(如手指叉開),腳本代碼表示執(zhí)行開火動作,當(dāng)然也可設(shè)計為其他手勢動作。當(dāng)鼠標(biāo)X軸正偏移值大于0.5、負(fù)偏移值小于0.25時,則開啟持續(xù)瞄準(zhǔn)模式,即表示槍的準(zhǔn)心縮小、攝像機(jī)觀察鏡頭放大一定倍數(shù)。

若手離開Leap Motion設(shè)備識別范圍,則Leap Motion返回默認(rèn)軸信息,游戲角色返回初始設(shè)定的Idle動畫狀態(tài)。

步驟4:修改游戲角色控制Java腳本代碼

Leap Motion捕捉手的位置如圖7所示X、Z軸的對應(yīng)表示。在此步驟中,將游戲角色與Leap Motion綁定以實現(xiàn)角色移動,將所規(guī)定的手勢(如瞄準(zhǔn)、開火等手勢動作)與Leap Motion綁定。

步驟5:添加Leap Motion關(guān)于第三人稱攝像機(jī)的Java腳本代碼

此步若設(shè)置了Leap Motion開關(guān),則可用Leap Motion控制第三稱攝像機(jī)。當(dāng)游戲玩家處于無操作狀態(tài)時,游戲角色將重置idle動畫動作行為。

步驟6:Leap Motion操作可視化

這是Leap Motion集成及程序開發(fā)的最后步驟,此步中需添加可視化虛擬面板及其腳本代碼,其主要目的是將Leap Motion操作可視化,操作游戲角色的各動作都將顯示在可視化虛擬面板中。

可視化虛擬面板見圖8所示。在圖9中,(a)圖是鼠標(biāo)X、Y軸可視化虛擬面板,該面板中央的手掌圖標(biāo)用于顯示第三人稱攝像機(jī)的上下左右擺動;(b)圖從左到右是Leap Motion鍵盤虛擬面板,分別表示游戲角色9個方向的運動(其中第五個為靜止?fàn)顟B(tài)或者手離開狀態(tài))。

4 實驗結(jié)果

本文硬件實驗環(huán)境為:Intel第三代酷睿i7-3612@2.1GHZ四核CPU,4GB內(nèi)存,NVIDIA GeForce 740M 2GB顯卡,Leap Motion體感控制器。本文使用的軟件開發(fā)工具為Unity3D 4.10,Autodesk Maya 2012, Adobe Photoshop CS6,MonoDevelp。軟件開發(fā)工具中,MonoDevelp是一種開源代碼開發(fā)環(huán)境,利用它可開發(fā)跨平臺的應(yīng)用程序。

軟件硬件平臺搭建成功后,便可按前面所述開發(fā)與集成方案設(shè)計并實現(xiàn)Leap Motion與Unity3D融合的體感游戲,我們設(shè)計實現(xiàn)的一種Leap Motion融合Unity3D操控第三人稱射擊游戲的典型實驗過程截圖見圖9所示。

在圖9中,(a)圖表示手向前移動、游戲角色前進(jìn);(b)圖表示手向后移動、游戲角色后退;(c) 圖表示手向左和向右擺動,游戲角色執(zhí)行向左和向右移動動作,第三人稱攝像機(jī)隨之轉(zhuǎn)動;(d) 圖表示手壓低和抬高,第三人稱攝像機(jī)向下和向上擺動;(e) 圖表示手指叉開,Leap Mtion檢測到手指數(shù)大于2時,執(zhí)行開火動作;(f) 圖表示手離開Leap Motion設(shè)備,Leap Motion返回默認(rèn)軸信息,游戲角色返回初始設(shè)定的Idle動畫狀態(tài)并循環(huán)。

設(shè)備啟動無異常,游戲場景數(shù)據(jù)讀取調(diào)用正常,游戲視角可以通過手部動作來控制,游戲角色能正確執(zhí)行行走、瞄準(zhǔn)、開槍這些基本動作。從圖9可以看出開發(fā)者借助Leap Motion能實現(xiàn)穩(wěn)定地控制Unity3D第三人稱射擊游戲,表明Leap Motion與Unity3D游戲的結(jié)合從技術(shù)上是可行的。

在實驗過程中,我們發(fā)現(xiàn)用手完成復(fù)雜的動作并不是一件容易的事情,畢竟只有一只手在完成原來兩只手的鍵鼠操作。雖然Leap Motion能過濾細(xì)微的晃動,但是較久的保持手的懸空狀態(tài)難免會發(fā)生少量的操作失誤。

5結(jié)束語

本文完整闡述了融合Leap Motion體感控制器和Unity3D游戲引擎進(jìn)行體感游戲的開發(fā)與集成技術(shù)。Leap SDK能使開發(fā)者方便地建立游戲的實時手勢交互、創(chuàng)建出更多不同種類的游戲應(yīng)用程序或其他應(yīng)用程序。結(jié)果表明,采用Leap Motion與Unity3D游戲引擎相結(jié)合的方法進(jìn)行游戲集成與軟件應(yīng)用開發(fā)具有較高的應(yīng)用價值,對下一代體感游戲及其他虛擬現(xiàn)實應(yīng)用軟件開發(fā)提供了新的思路。

參考文獻(xiàn):

[1] 劉晉鋼, 劉衛(wèi)斌, 劉晉霞. Kinect與Unity3D數(shù)據(jù)整合技術(shù)在體感游戲中的應(yīng)用研究[J]. 電腦開發(fā)與應(yīng)用,2014, 27(11): 7-11.

[2] 陳童, 王妍, 趙琦. 基于LeapMotion的中國古琴聲畫結(jié)合交互設(shè)計研究[J]. 文藝評論, 2014(9): 77-81.

[3] 徐崇斌, 周明全, 沈俊辰,等. 一種基于Leap Motion的直觀體交互技術(shù)[J]. 電子與信息學(xué)報, 2015, 37(2): 354-359.

[4] 郭海新. Unity3D與HTML交互機(jī)理研究[J]. 煤炭技術(shù), 2011, 30(9): 228-229.

[5] 曾勇. 基于Unity3D的挖掘機(jī)模擬訓(xùn)練系統(tǒng)研究[D]. 長安大學(xué), 2013.

[6] Mischa Spiegelmock. Leap Motion Development Essentials. Published Packt Publishing Ltd., UK., 2013.

猜你喜歡
人機(jī)交互
某型柴油機(jī)虛擬維修系統(tǒng)研究
基于虛擬現(xiàn)實技術(shù)的九江城市交通事故模擬系統(tǒng)設(shè)計
人機(jī)交互課程創(chuàng)新實驗
人形交互式服務(wù)機(jī)器人研究現(xiàn)狀及發(fā)展趨勢
基于任務(wù)規(guī)劃的家庭仿真服務(wù)機(jī)器人的研究
多點噪聲遠(yuǎn)程自動采集系統(tǒng)設(shè)計
基于智能手機(jī)的盲人語言應(yīng)用軟件的設(shè)計與開發(fā)
基于Intel Realsense技術(shù)的感知展示系統(tǒng)的設(shè)計與開發(fā)
一種靜態(tài)手勢數(shù)字識別的實現(xiàn)及應(yīng)用
圖像處理耦合模板定位的答題卡識別研究與應(yīng)用
阿勒泰市| 东阿县| 甘洛县| 榕江县| 龙口市| 上饶市| 武功县| 宿迁市| 澄城县| 翁牛特旗| 邵阳县| 措勤县| 嫩江县| 武宁县| 利川市| 高密市| 邵武市| 古田县| 永春县| 休宁县| 昌图县| 道真| 天柱县| 得荣县| 洪湖市| 三门峡市| 鄂州市| 密云县| 微山县| 河曲县| 防城港市| 林口县| 德保县| 汉阴县| 墨江| 保定市| 苏州市| 修武县| 通山县| 石台县| 绍兴县|