王 濤
(西安航空學院 教務處,西安 710077)
新一代Kinect2.0體感設備的測量范圍為0.5米至4.5米,可以同時追蹤6個人,采集到每一個人25 個關節點,并存儲這些點3D位置和方向,幀的采樣頻率為30fps,其感應器的彩色相機的增強特性包括1920×1080 高分辨率視頻和更寬廣的視野。本軟件是在該設備的基礎上結合微軟MFC基類來開發,通過現場部署,使用效果非常完美[1]。

圖1 系統的布置結構
運用投影儀將園林場景和人物摳像投射到墻面,使用kinect2.0傳感器來采集人物的骨骼、彩色圖像和深度圖像的數據,并傳送給C#程序,程序根據這些數據來判斷是否存在游戲中設置的人物動作。當人物動作相符時,將人物動作和園林場景播放相關聯,達到人和園林的體感交互,整個系統的布置結構如圖1所示。
十九世紀近代園林體感互動分鏡頭分為三個版塊:邱園、巴加特爾公園、紐約中央公園。游戲首先進入主題界面,在界面上會對三種園林和體感動作的操作展現說明。
當人們進入邱園,會出現以下場景:樹葉搖動與光影變化;觀眾可以撥開樹葉前行;觀眾可以給屏幕中的植物虛擬澆水。
當人們進入巴加特爾公園時,出現的場景有:花朵顫動,蝴蝶飛舞,道路多分岔形似迷宮;觀眾可以選擇左中右三條不同的路線行走,觀看不同的公園風貌。
當人們進入紐約中央公園時,有如下場景:樹葉搖動,各種紐約中央公園的特色動物,例如雪豹在樹林中跑跳;觀眾可以和公園里的小動物進行互動,如觀眾伸出手,雪豹就會慢慢走過來,擺擺頭打招呼[2-3]。
本游戲主流程是其主線,啟動游戲后,進入十九世紀近代園林主界面,當kinect檢測到無人存在時(無人的條件為1分鐘未檢測到人),程序會隨機切入三種園林其中一個進行漫游;當kinect檢測到有人存在時(如果有人停留8秒以上就代表有人存在,最多同時識別6個人),程序返回園林主題界面。若人物做動作1(舉起左手),可以選擇任意主題園林;若人物做動作2(舉起右手),可以進入當前選擇的主題園林;若人物做動作3(抬起右手由胸前劃過頭頂,做撥開樹葉動作),此時場景中的樹枝被撥開;若人物做動作4(雙手抬起做拿水壺澆水動作),出現水壺給植物澆水場景;若人物做動作5(招左手或右手),小動物會由遠處跑到屏幕前并做各種親昵的動作。整個游戲流程如圖2所示。

圖2游戲的流程圖
本游戲開發中關鍵技術有:kinect2.0對人物5種動作的識別; WPF框架下對高清圖片幀的播放(特別是如何實現大量的,且每張都在3M以上圖片的流暢播放);如何實現前背景圖片的播放問題。文中基于kinect2.0寫的動作代碼程序可以單獨成為一個萬能的模塊,只需要增加新的動作識別函數和模擬鍵盤消息就可以體感控制windows上的所有應用程序[4]。
本程序為了玩家娛樂的體驗度,在kinect 2.0識別方面,僅識別離kinect在空間位置上最近的一個。算法的邏輯為:kinect用一個字節表示當前深度坐標下該像素的人體編號,可同時識別6個人,每個人會給一個索引,在本程序中用UserId來表示每個人的索引,程序實時動態檢測kinect識別所有人的骨骼數據,以脊柱中心spine_mid離kinect的遠近作為衡量距離,程序會在首次找到離kinect最近的一個人,將其一直標記為唯一識別的人物,后續即使該人的坐標不是離kinect最近,其也是唯一識別的人,直到該人物的骨骼和紅外數據在kinect檢測中消失8秒,此時,kinect會重新由當前識別的人中找到離其最近的一個,然后進行標識。該功能的代碼為: if (ThespecifiedIDdisappear==false){ float temp=10;for (int i=0;i float dis=body.Joints[JointType.SpineShoulder].Position.Z; if (dis>0){string sss=dis.ToString(); } if (dis 程序中先定義了一個枚舉類型Gestures來表示所有的動作。 public enum Gestures{RaiseRightHand,RaiseL-eftHand,StretchedLeftHand,StretchedRightHand,StretchedBothHand,WaveLeftHand,WaveRightHand,ZhaoshouRight,Error,} 。用dosomthing(Body s)函數來實時檢測人物所做的動作,由于kinect對人物數據的檢測在每一個周期中實時進行,具體為30fps,為控制采樣頻率,后臺開啟一個進程private void openTmeWork(),用函數System.Threading.Thread.Sleep(10);//停毫秒調節動作識別的頻率。由于動作較多,此處以給花澆水動作為例子,其代碼為 :if ((leftshoulder.Z-leftHand.Z)>0.25 &&(rightshoulder.Z-rightHand.Z)>0.35 && (rightHand.Y-leftHand.Y)>0.25f){mygest=Gestures.StretchedLeftHand; System.Windows.Forms.SendKeys.SendWait(“{DOWN}”); } ,以上代碼中的數據10,0.25和0.35等都是經過多次測試得到的最佳值。 本游戲所提供的高清圖片可體驗真實園林場景,其分辨率為3072×768,每張圖片大小為3.2M左右,并且圖片渲染時需要含有3D效果,每個園林漫游時間為3分鐘,每分鐘30幀,所有園林共15000多張圖片。數量多和尺寸大的圖片如何在電腦CPU和顯卡不是很高的情況下流暢運行,本文采用一種優化機制,即在內存中僅放一張圖片,當調用下一張圖片時清空當前圖片,然后載入下一張圖片。為快速載入圖片,本程序建立一個bmList001鏈表來加載圖片的名稱,實現為:bmList001=new ObservableCollection BitmapImage bmImg=new BitmapImage(new Uri(bmList00[index001])); this.img1.Source=bmImg;this.img1.Width=3072;this.img1.Height=768;GC.Collect(); index001++;} isRendering=false;} } } 程序中為模仿園林中撥動樹葉,小松鼠的移動,澆水等逼真的效果,專門定義了一個卡通類SpiritGame,用來實現卡通的顯示、消失、移動、調用、坐標位置,快慢播放的控制等[5],其功能函數有: SpiritGameX(), SpiritGameY(),SpiritWindowX(), SpiritWindowY(),void InitPlayer(), diaoyongplayer(),xiaoshiplayer(),dispatcherTimer_Tick(object sender,EventArgs e)//卡通幀的顯示等。 該游戲運行的設備配置和參數如下:①計算機:win10,64位處理器,i7 6700k以上,USB 3.0總線,8GB 內存以上,DX11圖形適配器,320G硬盤;②投影機:4500流明,標準分辨率:1920X1080dpi,投影畫面尺寸:80-300英寸,色彩:1670萬色;③二代Kinect for Windows v2和 Kinect SDK 2.0;④其他:包括USB 3.0信號放大器、室外屏蔽線等。 表1 測試結果統計 對該游戲進行24小時運行測試,功能正常無宕機。 游戲由主題界面(見圖3)和三個園林組成,三個園林分別是“邱園” “巴加特爾公園” “紐約中央公園”,效果如圖4、圖5、圖6所示。 圖3十九世紀近代園林體感游戲主題界面 圖4 邱園 圖5 巴加特爾公園 圖6 紐約中央公園 現場如何部署“近代園林體感”游戲?具體分為四個步驟:①安裝VS2012環境,目的是方便調試;②安裝Kinect for Windows SDK v2.0,該安裝包可以到微軟官網下載,網址為http://www.microsoft.com/en-us/download/details.aspx?id=44561;③安裝SDK Browser v2.0,Visual Gesture builder-PREIEW,kinect for windows Documentation;④安裝時間延時應用startup-delayer-v3.0b363.exe,放置該游戲“DiscreteGestureBasics-WPF.exe” 到硬盤任意位置,生成快捷方式,并將其添加到startup-delayer中設置延時為20秒。 目前,除了體感設備外,以虛擬現實Virtual Reality眼鏡(HTC Vive)為代表的Virtual Reality已經興起,它和U3D結合開發虛擬現實的游戲,或者由VR眼鏡、U3D和kinect 三者相結合開發的虛擬現實游戲是未來幾年的重頭戲,由于目前技術和硬件成本方面的原因導致此類游戲還不是很普及。對于迫切想開發和體驗Virtual Reality的人們,可購買比較便宜的暴風魔鏡,在其基礎上進行二次開發Virtual Reality游戲是一種簡單、便利的探索。 [1] 王濤.人機交互多媒體教學系統淺析[J].西安航空學院學報,2015,33(1):43-44. [2] 王濤,高賢強.基于U3D和kinect1.0月光下舞蹈互動游戲的設計與實現[J].西安航空學院學報,2017,35(1):68-72. [3] 劉佳,鄭勇,張小瑞,等.基于Kinect的手勢跟蹤概述[J].計算機應用研究,2015,32(7):1921-1925. [4] 王康.融合深度傳感數據體感交互建模與算法實現[D].濟南:山東大學,2016. [5] 李建微,陳新,黃調祥,等.可擴展的MMORPC游戲框架的設計與實現[J].計算機技術與發展,2012,22(2):1-5.3.2 基于WPF的kinect2.0體感識別程序
3.3 WPF框架下處理高清圖片幀流暢播放技術
3.4 卡通幀移動相關技術
4 搭建環境所需設備和游戲測試結果
4.1 游戲運行的設備配置和技術參數
4.2 游戲測試的結果

4.3 游戲的相關截圖




4.4 項目現場實施
5 結語