999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于節(jié)奏識別的體感音游設(shè)計與實(shí)現(xiàn)

2023-04-14 17:40:19葉元卯羅涵中屈沐妍王哲昊張志鴻
電腦知識與技術(shù) 2023年6期

葉元卯 羅涵中 屈沐妍 王哲昊 張志鴻

摘要:伴隨信息科技的發(fā)展,人們的人機(jī)交互需求日漸增加,作為人機(jī)交互的媒介的Leap Motion設(shè)備應(yīng)運(yùn)而生。該文利用Leap Motion對手勢的檢測與識別,結(jié)合Unity3D游戲引擎對識別結(jié)果進(jìn)行處理,并創(chuàng)建出根據(jù)音樂節(jié)奏變化的游戲基本框架,開發(fā)出一款依據(jù)手勢識別進(jìn)行操作的音樂游戲。該系統(tǒng)可以識別簡單的音樂,按節(jié)奏生成方塊并下落,玩家根據(jù)聽到的節(jié)奏利用手勢變化碰撞方塊并消除。實(shí)踐結(jié)果證明該系統(tǒng)識別程度高、效果好,但對于復(fù)雜音樂的節(jié)奏識別有較大誤差,需利用專業(yè)的節(jié)奏識別插件消除誤差。

關(guān)鍵詞:Leap Motion;Unity3D;節(jié)奏識別;體感音游;游戲設(shè)計

中圖分類號:TP311? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2023)06-0008-04

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID)

0 引言

從電子游戲誕生以來,人類就一直在探索最適合游玩電子游戲的設(shè)備,從一開始的街機(jī)到電視游戲主機(jī),再到后來將辦公用的鍵盤鼠標(biāo)用于游戲。而近些年,體感識別游戲設(shè)備層出不窮,重力感應(yīng)[1]、紅外感應(yīng)、手勢識別[2]、人體識別等體感識別功能豐富多彩,發(fā)展到最后,VR、AR等概念深入人心。隨著近年來元宇宙概念的興起,作為元宇宙中最能體現(xiàn)真實(shí)性的一環(huán),體感識別也隨之“翻紅”,人們再一次意識到,也許體感控制游戲才是電子游戲操控設(shè)備的終極方式。

自從2006年日本任天堂公司通過游戲手柄第一次將體感識別引入電視游戲主機(jī)后,體感游戲設(shè)備便不斷發(fā)展,期間有微軟為游戲主機(jī)Xbox發(fā)布的Kinect用于識別人體動作的體感設(shè)備,也有類似索尼推出的配套PS VR使用的PS move用于識別手部動作的體感設(shè)備。除了科技巨頭公司為自己的游戲主機(jī)推出的配套體感設(shè)備外,也有一些公司通過專門制作體感識別設(shè)備,為游戲開發(fā)者與玩家提供廉價、便攜且可跨平臺使用的體感控制器,Leap Motion便是其中之一[3]。

Leap Motion是美國LEAP公司出品的一款以手運(yùn)動捕獲為主的體感控制器,利用紅外成像的原理,獲取手的運(yùn)動圖像,檢測并跟蹤手、手指和類似手指的工具,可以實(shí)時獲取它們的位置、手勢和動作,并將這些靜態(tài)與動態(tài)信息提供給開發(fā)者,以達(dá)到一種自然人機(jī)交互的效果。Leap Motion采集的基本單位是幀,具有很高的捕獲精度。

1 系統(tǒng)分析與設(shè)計

制作基于節(jié)奏識別的體感音游,需要使用Leap Motion控制器對用戶的手勢進(jìn)行識別,在UI界面中進(jìn)入游戲操作,在游戲中根據(jù)音樂的節(jié)奏,生成下落的立方體,通過對虛擬手模型與立方體進(jìn)行碰撞檢測,利用得分系統(tǒng)進(jìn)行得分,并最終展示分?jǐn)?shù)。

1.1 UI界面

UI界面是連接用戶和游戲的窗口,是任何游戲中十分重要的一部分。UI界面可以在瞬間展示給用戶許多信息,也能讓用戶快速判斷當(dāng)前游戲的狀態(tài)與接下來要進(jìn)行的行為。在該系統(tǒng)中UI界面分為兩部分,首先是進(jìn)入游戲前的主菜單界面,該界面擁有“開始游戲”和“退出游戲”兩個選項(xiàng),可以讓玩家在確認(rèn)自己已經(jīng)做好準(zhǔn)備時自行開始游戲,不至于突然開始游戲,讓人措手不及。同時主菜單界面也需要用手勢控制以開始,這樣在游戲開始前便檢測出手勢識別是否正確,避免進(jìn)入游戲時因手勢識別錯誤導(dǎo)致游戲錯誤運(yùn)行。另一部分UI界面則為進(jìn)入游戲內(nèi)的分?jǐn)?shù)顯示,用戶可以實(shí)時看到自己當(dāng)前的分?jǐn)?shù),了解自己在本次游戲中操作是否到位,激勵用戶不斷強(qiáng)化自己的操作,從而獲得更高的分?jǐn)?shù)。

1.2 手勢識別

手勢識別是本系統(tǒng)中最重要的一環(huán),所有的行為、操作均基于Leap Motion控制器對手勢的體感識別,并由這些手部的動作輸出相應(yīng)的指令。LeapMotion將采集到的手掌、手指的位置和其他信息保存在一幀(Frame)中,并分配唯一的ID,算法通過檢測幀中數(shù)據(jù)的連續(xù)性,生成運(yùn)動信息。而該系統(tǒng)讀取手勢運(yùn)動信息的橫坐標(biāo)移動信息,轉(zhuǎn)換為場景中用于控制碰撞擋板的橫坐標(biāo)運(yùn)動指令,從而達(dá)到手勢識別的效果。

1.3 音樂節(jié)奏分析

音樂節(jié)奏是本系統(tǒng)中游玩的主要要素,用戶需要根據(jù)音樂節(jié)奏通過手勢控制場景中的擋板左右橫移以碰撞立方體從而得分。而立方體是根據(jù)音樂節(jié)奏生成的,因?yàn)榱⒎襟w從屏幕頂端生成到下落至擋板所在水平高度需要一定時間,所以不可能按照音樂的節(jié)奏來生成立方體,而是要提前根據(jù)音樂的節(jié)奏手動設(shè)置好立方體的生成時間,從而使立方體與用戶控制的擋板碰撞時,剛好能對上音樂的節(jié)奏,達(dá)到節(jié)奏識別的目的。

1.4 碰撞檢測

本系統(tǒng)中將音樂的節(jié)奏重音物化為一個個立方體,而用戶游玩的操作則是控制場景中的擋板左右移動,并碰撞到這些代表音樂節(jié)奏的立方體,故而碰撞檢測是該系統(tǒng)中必需的。首先要檢測擋板與立方體的碰撞,這是用戶正常游玩并根據(jù)節(jié)奏消除立方體時的碰撞檢測,得分增加。其次還要在立方體超出界外進(jìn)行碰撞檢測,因?yàn)榇藭r代表用戶未能將此立方體按節(jié)奏消除,此時為用戶的一次失誤,需要進(jìn)行扣分。

之所以要在每次碰撞時銷毀立方體,是因?yàn)檫^多的立方體堆積會占用大量資源,從而可能使游戲卡頓甚至崩潰。

1.5 得分系統(tǒng)

得分系統(tǒng)是本系統(tǒng)的精華部分,有了得分功能,就能激勵用戶反復(fù)游玩并超越自我,若沒有得分系統(tǒng),用戶在游玩一遍后便不會再想繼續(xù)游玩,這是任何游戲制作者都不愿意看到的情況。此外,實(shí)時顯示游戲分?jǐn)?shù)也是激勵用戶的手段之一,用戶在不同場次游戲中的同一時間節(jié)點(diǎn)看到的分?jǐn)?shù)不同,勢必會在用戶心理上產(chǎn)生影響,會讓他們提前意識到這局游戲得分會更高還是更低,從而影響在后續(xù)游玩中的戰(zhàn)術(shù)是選擇更加謹(jǐn)慎抑或是放手一搏。

2 系統(tǒng)具體實(shí)現(xiàn)

2.1 前期準(zhǔn)備與環(huán)境搭建

2.1.1 前期準(zhǔn)備

首先,需要購置一個Leap Motion Controller,這是本項(xiàng)目進(jìn)行體感識別的主要設(shè)備。其次,需要下載好Unity3D游戲引擎,且必須是5.0及以上版本。將Leap Motion Controller連接電腦,在Ultraleap[4]官方網(wǎng)站下載好Leap Motion Controller的配套軟件Ultraleap Tracking Software,如果Leap Motion Controller配置成功,則Ultraleap Tracking Software圖標(biāo)會顯示為綠色,并且顯示“Ultraleap tracking device connected”字樣,此時前期準(zhǔn)備完成。

2.1.2 環(huán)境搭建

打開Unity3D游戲引擎[5]并且新建一個項(xiàng)目,在該項(xiàng)目中創(chuàng)建好場景。在Ultraleap官方網(wǎng)站下載UNITY包文件 (.UNITYPACKAGE),可以用.unitypackage文件獲取用于Unity的Ultraleap手部追蹤插件。進(jìn)入Unity3D游戲引擎中新建好的項(xiàng)目,右鍵單擊Assets窗口,轉(zhuǎn)到Import Package并左鍵單擊Custom Package,找到Tracking.unitypackage并導(dǎo)入。這包括核心、交互引擎和手模塊。核心模塊是Unity 和 Ultraleap 手部跟蹤軟件之間的最小接口,渲染一組基本的手,將對象附加到手關(guān)節(jié)等。交互引擎是手和 VR 控制器的物理表示,通過交互啟發(fā)式進(jìn)行微調(diào),以提供功能齊全的交互API,包括抓握、投擲、穩(wěn)定的“軟”碰撞反饋和手部接近檢測,還附帶了一套示例和預(yù)制件。手模塊是一組腳本,可幫助用戶將 Ultraleap 數(shù)據(jù)綁定到自己的手部資產(chǎn)。提供裝配用戶自己的 3D 手部資產(chǎn)所需的工具,包括強(qiáng)大的手部自動綁定工具,還配備了一系列優(yōu)化和裝配的手模型,導(dǎo)入成功后,前期準(zhǔn)備與環(huán)境搭建成功。

2.2 UI界面

本系統(tǒng)中的UI界面主要分為兩部分:一部分是進(jìn)入游戲的主菜單界面,另一部分是游戲內(nèi)得分及音樂結(jié)束時的結(jié)算界面。

2.2.1 主菜單界面

主菜單界面中,最上方白色字體為本系統(tǒng)的標(biāo)題,中間左右兩邊圓圈代表“開始游戲”和“退出游戲”,用戶控制虛擬手移動來操控左右2個小方塊移動,通過獲取小方塊的坐標(biāo)位置來判斷小方塊是否放置在某個圓圈內(nèi),當(dāng)放置時間超過2秒即會執(zhí)行該圓圈代表的方法:“開始游戲”為執(zhí)行SceneManager.LoadScene(1)跳轉(zhuǎn)至游戲開始場景;“退出游戲”執(zhí)行Application.Quit()直接關(guān)閉游戲。

2.2.2 游戲內(nèi)界面

游戲內(nèi)界面既有左上角的實(shí)時得分顯示,又有音樂結(jié)束時的結(jié)算面板。

左上角得分顯示中,分?jǐn)?shù)會隨著方塊與擋板或Deadline的碰撞,通過函數(shù)score.text = sc.ToString()進(jìn)行加減更新,其中sc為腳本中的分?jǐn)?shù)變量。

結(jié)算面板會提示“已完成”,并顯示最終得分,左右下角兩個選項(xiàng)分別對應(yīng)SceneManager.LoadScene(0)跳轉(zhuǎn)至主菜單和Application.Quit()直接關(guān)閉游戲。同樣是通過獲取小方塊的坐標(biāo)位置來判斷小方塊是否放置在某個圓圈內(nèi),當(dāng)放置時間超過2秒即會執(zhí)行該圓圈代表的操作。

2.3 手勢識別模塊

2.3.1 虛擬手[6-7]

從官網(wǎng)導(dǎo)入的Tracking.unitypackage包中包含有手模型HandModels,其中有Capsule Hand Left和Capsule Hand Right,導(dǎo)入場景后,再加入Service Provider (Desktop),這是在桌面應(yīng)用(PC)中對手勢進(jìn)行識別服務(wù)的提供接口,能將Leap Motion硬件檢測到的數(shù)據(jù)轉(zhuǎn)化為手模型的手勢和動作[8]。

2.3.2 手勢識別

在游戲場景內(nèi)添加空物體HandController,并添加同名腳本,在腳本內(nèi)聲明左右手模型、LeapProvider[8]以及手勢操控控制的擋板。再用Leap Motion提供的接口API調(diào)用手勢的每一個當(dāng)前幀數(shù)據(jù)[9],將數(shù)據(jù)傳輸至聲明的Frame變量中,再遍歷Frame中的數(shù)據(jù)信息,將每一幀虛擬手的位置信息轉(zhuǎn)化為擋板的位移信息,從而控制擋板左右移動。

此外,在手勢控制UI界面內(nèi)選項(xiàng)時,也采用同樣的方法,只不過此時用小方塊代替擋板,發(fā)揮類似鼠標(biāo)的作用,小方塊可以上下左右二維方向上移動,僅需將對擋板控制中把leftCube和rightCube位置信息的y方向也和虛擬手的位置信息綁定好即可[10]。

2.4 音樂節(jié)奏分析

2.4.1 識別音樂節(jié)奏并輸出

使用Unity3D游戲引擎內(nèi)置腳本API AudioSourc.GetSpectrumData(float[] samples, int channel, FFTWindow window)識別音樂的頻譜數(shù)據(jù)塊,并利用Debug.Log()在控制臺輸出重音時的時間節(jié)點(diǎn):

void Start()

{

samples = new float[64];

audioSource.PlayDelayed(1.6f);

}

void FixedUpdate()

{

curTime += Time.fixedDeltaTime;

audioSource.GetSpectrumData(samples, 0, FFTWindow.Blackman);

if(flagTime>0.1&&samples[0]>0.1)

{

Debug.Log(curTime);

flagTime = 0;

}

flagTime += Time.fixedDeltaTime;

}

其中,變量samples是對音樂片段的采樣頻率,此變量數(shù)據(jù)必須為2的冪數(shù),頻率越大采樣越精細(xì)。而FFTWindow是頻譜分析窗口化類型,F(xiàn)FTWindow.Blackman為常用的一種變量,代表[Wn=0.42-0.5*cosnN+0.08*cos2.0*n/N]。

2.4.2 根據(jù)節(jié)奏生成立方體

將時間節(jié)點(diǎn)記錄下來,計算出立方體從生成到下落至手勢所控制擋板的高度所需的時間間隔,將這些時間節(jié)點(diǎn)減去時間間隔,即得到一組生成立方體的時間節(jié)點(diǎn),在這組時間節(jié)點(diǎn)對應(yīng)的時間生成立方體,則得到符合音樂節(jié)奏的立方體碰撞效果。

除此之外,為增強(qiáng)視覺效果,生成的立方體均帶有拖尾,實(shí)現(xiàn)方法為在立方體的預(yù)制體中添加Trail Renderer組件,將Time設(shè)置為0.5,Min Vertex Distance設(shè)置為0.1,并在CubeControl腳本中為生成的立方體隨機(jī)設(shè)置拖尾的顏色。

2.5 碰撞檢測

在手勢控制的擋板添加Box Collider碰撞體組件,并勾選is trigger設(shè)置為觸發(fā)器,為擋板設(shè)置標(biāo)簽“Hand”。為生成的立方體預(yù)制體添加Box Collider碰撞體組件和Rigidbody組件使其正常下落。添加腳本判斷擋板和立方體碰撞時立方體銷毀。

此外,在場景最下方添加一個空物體Deadline,設(shè)置標(biāo)簽“Deadline”,添加Box Collider碰撞體組件并將碰撞體體積設(shè)置為橫跨從左到右整個屏幕,當(dāng)立方體碰撞到該空物體時,代表該立方體已經(jīng)錯過和擋板碰撞的機(jī)會,即為一次失誤,此時立方體銷毀。

2.6 得分系統(tǒng)

在立方體碰撞到擋板銷毀時得分加5,碰撞到Deadline銷毀時得分減10,CubeControl腳本中負(fù)責(zé)計分的sc變量會相應(yīng)改變,并且實(shí)時傳輸?shù)経I的“得分”右側(cè)。

與此同時,在每次游戲結(jié)束時,會將UI中的分?jǐn)?shù)字段傳輸給結(jié)算面板的得分字段。此外,為了增加得分或失分時用戶的可觀測性,還會在得分或失分位置顯示“Perfect!”或“Miss!”文本,且該文本會隨時間而逐漸透明直至一秒后消失。

3 結(jié)束語

科技不斷發(fā)展,生活也日新月異。隨著5G時代的來臨。“元宇宙”等虛擬現(xiàn)實(shí)概念不斷被提起與實(shí)踐,人們不斷認(rèn)識到體感識別的廣闊前景,而體感游戲則是體感識別應(yīng)用方向中不可忽視的一大領(lǐng)域。本文旨在為體感識別在音樂游戲上的可行性進(jìn)行試驗(yàn)與嘗試,結(jié)果大體能讓人滿意。但美中不足的是,首先當(dāng)前體感識別技術(shù)還有待提升,精確度并不像傳統(tǒng)的鼠標(biāo)鍵盤那樣可以達(dá)到近100%的準(zhǔn)確識別,且識別的范圍也非常有限,一旦超出范圍便完全不能識別;其次在對音樂的頻譜、鼓點(diǎn)進(jìn)行分析并運(yùn)用于游戲的節(jié)奏時,由于并沒有利用專業(yè)的頻譜解析軟件,所以準(zhǔn)確率不夠高,對于復(fù)雜的音樂難以得到令人滿意的效果,這些都是后續(xù)開發(fā)中有望繼續(xù)提升的部分。但總體而言,本課題對于體感音游的探索有一定價值,可以為其他類似項(xiàng)目提供經(jīng)驗(yàn),值得開發(fā)者借鑒,具有推廣價值。

參考文獻(xiàn):

[1] 胡弘,晁建剛,林萬洪,等.Leap Motion虛擬手構(gòu)建方法及其在航天訓(xùn)練中的應(yīng)用[J].載人航天,2015,21(3):257-262.

[2] 李楊韜,禹東川,靳來鵬,等.基于LeapMotion手勢識別的認(rèn)知訓(xùn)練系統(tǒng)的設(shè)計和實(shí)現(xiàn)[J].電子設(shè)計工程,2016,24(9):12-14,18.

[3] 林書坦,尹長青.基于LeapMotion的數(shù)字手勢識別[J].電腦知識與技術(shù),2015,11(35):108-109.

[4] ULTRALEAP PLUGIN FOR UNITY[DB/OL]. [2022-01-20].https://developer.leapmotion.com/unity#setup-unity -packages.

[5] Unity - Scripting API[DB/OL].https://docs.unity3d.com/ScriptReference/ index.html.

[6] 周家樂,賀元昭,章藝敏,等.基于Leapmotion的VR鋼琴及手勢識別的設(shè)計與實(shí)現(xiàn)[J].電子測試,2020(21):5-9.

[7] 楊曦中,萬華根.一種基于LeapMotion的靈巧虛擬手抓取交互方法[J].航空電子技術(shù),2021,52(3):1-8.

[8] 朱惠娟,王軍,朱俊.基于Leap Motion的沉浸式體感交互系統(tǒng)研究[J].微型電腦應(yīng)用,2021,37(2):8-11.

[9]楊森淼,朱俊亦,李佳芳. 基于Leap Motion的VR交互系統(tǒng)[J].中外交流,2021,28(5):436.

[10] 胡弘,晁建剛,楊進(jìn),等.Leap Motion關(guān)鍵點(diǎn)模型手姿態(tài)估計方法[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2015,27(7):1211-1216.

【通聯(lián)編輯:唐一東】

主站蜘蛛池模板: 91精品久久久无码中文字幕vr| 国产成人综合亚洲欧洲色就色| 国产精品第一区| 亚洲成人播放| 欧美特级AAAAAA视频免费观看| a网站在线观看| 国产农村妇女精品一二区| 欧美日韩成人| 四虎免费视频网站| 伊人AV天堂| 青青草国产在线视频| 激情综合网激情综合| 91麻豆精品国产高清在线| 日本欧美一二三区色视频| 日韩黄色精品| 91精品小视频| 国产探花在线视频| 性做久久久久久久免费看| 97在线公开视频| 欧美日韩久久综合| 热99re99首页精品亚洲五月天| 国产在线精彩视频论坛| 扒开粉嫩的小缝隙喷白浆视频| 婷婷综合色| 色婷婷啪啪| 一本大道无码高清| 国产视频入口| 手机在线看片不卡中文字幕| 好紧太爽了视频免费无码| 国产精品嫩草影院视频| 久久这里只精品国产99热8| 亚洲专区一区二区在线观看| 99精品视频九九精品| 女人18一级毛片免费观看| 热久久国产| av在线手机播放| 高清不卡一区二区三区香蕉| 天堂av综合网| 国产中文一区二区苍井空| 精品少妇人妻一区二区| 在线精品视频成人网| 99在线视频免费观看| 自拍亚洲欧美精品| 国产最新无码专区在线| 国产女人在线视频| 在线播放91| 全免费a级毛片免费看不卡| 最新国语自产精品视频在| 免费国产小视频在线观看| 欧美狠狠干| 一级毛片免费不卡在线| 亚洲中文字幕无码爆乳| 国产人成在线观看| 中文字幕 91| 国产内射在线观看| 亚洲日韩精品无码专区97| 超级碰免费视频91| 国产99视频精品免费观看9e| 成·人免费午夜无码视频在线观看 | 国产精品一线天| 成年人福利视频| 亚洲第一区精品日韩在线播放| 丰满人妻中出白浆| 波多野结衣爽到高潮漏水大喷| AV色爱天堂网| 免费观看国产小粉嫩喷水| 97青草最新免费精品视频| 色婷婷在线播放| 91在线播放免费不卡无毒| 98精品全国免费观看视频| 久久国产V一级毛多内射| 毛片基地视频| 狠狠综合久久久久综| 亚洲精品成人片在线观看| 欧美成人手机在线观看网址| 亚洲欧美日韩成人高清在线一区| 欧美h在线观看| 免费无码又爽又刺激高| 人妻21p大胆| 亚洲天堂网2014| 国产第三区| 最近最新中文字幕免费的一页|