• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2023-04-14 17:40:19葉元卯羅涵中屈沐妍王哲昊張志鴻
      電腦知識(shí)與技術(shù) 2023年6期
      關(guān)鍵詞:游戲設(shè)計(jì)

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

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

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

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

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

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

      0 引言

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

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

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

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

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

      1.1 UI界面

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

      1.2 手勢(shì)識(shí)別

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

      1.3 音樂節(jié)奏分析

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

      1.4 碰撞檢測(cè)

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

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

      1.5 得分系統(tǒng)

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

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

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

      2.1.1 前期準(zhǔn)備

      首先,需要購置一個(gè)Leap Motion Controller,這是本項(xiàng)目進(jìn)行體感識(shí)別的主要設(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)會(huì)顯示為綠色,并且顯示“Ultraleap tracking device connected”字樣,此時(shí)前期準(zhǔn)備完成。

      2.1.2 環(huán)境搭建

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

      2.2 UI界面

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

      2.2.1 主菜單界面

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

      2.2.2 游戲內(nèi)界面

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

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

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

      2.3 手勢(shì)識(shí)別模塊

      2.3.1 虛擬手[6-7]

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

      2.3.2 手勢(shì)識(shí)別

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

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

      2.4 音樂節(jié)奏分析

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

      使用Unity3D游戲引擎內(nèi)置腳本API AudioSourc.GetSpectrumData(float[] samples, int channel, FFTWindow window)識(shí)別音樂的頻譜數(shù)據(jù)塊,并利用Debug.Log()在控制臺(tái)輸出重音時(shí)的時(shí)間節(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是對(duì)音樂片段的采樣頻率,此變量數(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é)奏生成立方體

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

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

      2.5 碰撞檢測(cè)

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

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

      2.6 得分系統(tǒng)

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

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

      3 結(jié)束語

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

      參考文獻(xiàn):

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

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

      [3] 林書坦,尹長(zhǎng)青.基于LeapMotion的數(shù)字手勢(shì)識(shí)別[J].電腦知識(shí)與技術(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í)別的設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)試,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].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2015,27(7):1211-1216.

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

      猜你喜歡
      游戲設(shè)計(jì)
      基于HTML5的移動(dòng)端產(chǎn)品推廣輕游戲設(shè)計(jì)與開發(fā)
      例談?dòng)⒄Z課堂游戲教學(xué)的設(shè)計(jì)技巧
      以“玩”激趣
      基于中職學(xué)校教育游戲的開發(fā)與應(yīng)用探究
      未來英才(2016年23期)2017-03-01 08:43:50
      VR技術(shù)現(xiàn)況及其未來對(duì)游戲設(shè)計(jì)的影響
      科技傳播(2016年19期)2016-12-27 15:58:11
      小學(xué)低年級(jí)語文游戲教學(xué)設(shè)計(jì)探討
      考試周刊(2016年99期)2016-12-26 10:05:52
      讓小學(xué)英語閱讀教學(xué)煥發(fā)生機(jī)
      考試周刊(2016年21期)2016-12-16 10:48:38
      兒童弱視在線康復(fù)訓(xùn)練平臺(tái)的設(shè)計(jì)與開發(fā)
      浙江衛(wèi)視真人秀《奔跑吧兄弟》節(jié)目特色淺析
      淺談小學(xué)科學(xué)中的游戲設(shè)計(jì)
      金塔县| 固始县| 壶关县| 石门县| 宝应县| 军事| 苍溪县| 洮南市| 施甸县| 太湖县| 澜沧| 连江县| 措美县| 阜宁县| 濉溪县| 定日县| 东乡族自治县| 磐石市| 宁远县| 盐津县| 东海县| 新化县| 白玉县| 临夏县| 玛沁县| 黔南| 山西省| 漳州市| 安平县| 皋兰县| 庆城县| 盐边县| 电白县| 竹山县| 青州市| 宁武县| 汾阳市| 通州市| 新河县| 务川| 平远县|