本發(fā)明屬于電子游戲領域,涉及一種新型的電子游戲操控系統(tǒng)。
背景技術:
1、目前的電子游戲,比如運行于手機的射擊類游戲,要求用戶使用手機觸摸屏進行操作。使用這種操作方式的手機游戲,會在手機屏幕上顯示兩個虛擬操縱按鈕,分別控制運動方向和射擊,用戶使用一只手在觸摸屏上通過上、下、左、右的移動或點擊控制行進方向,另一只手在觸屏上移動或點擊控制瞄準和射擊。運行于電視的電子游戲,則要求用戶使用游戲遙控器進行操控。這些操作方式不直觀,游戲玩家的學習成本比較高,并且可能需要額外購買物理設備。
技術實現思路
1、本發(fā)明使用攝像頭對玩家的手部姿態(tài)進行實時跟蹤,通過使用人工智能技術特別是手指地標(手指關鍵點)識別技術,識別游戲玩家雙手的姿態(tài),將玩家不同的手勢轉換為對游戲不同的控制指令,設計了一種新型的游戲操控方式及其實現系統(tǒng)。具體包括:手指地標識別器,濾波器,手勢識別器,聲音采集器。根據游戲的需要,用戶可以單手或者雙手操控。
2、對于手機游戲,具體的工作流程如附圖?2?所示,使用手指地標識別技術識別玩家的手部關鍵點的三維坐標,然后使用濾波器算法對手指地標識別器輸出的三維坐標進行去抖動處理,使用手勢識別器對濾波后的手指關鍵點的三維坐標進行模式識別,識別出用戶的手勢,計算用戶手指的延長線與手機屏幕交點的坐標,作為目標點,基于用戶的特定手勢,或者使用聲音采集器采集用戶發(fā)出的語音指令,觸發(fā)對目標點的射擊動作或其他動作。
3、手指地標識別器可以采用現有已經開放源代碼的方案,比如?mediapipe。mediapipe?首先把從攝像頭采集的連續(xù)視頻信號分成一張張的圖片,每張圖片稱為一幀,然后對每幀圖片中包含的手部姿態(tài)進行分析,把每幀圖片中每只手的地標(手部的關鍵點)按順序分為?21?個點進行標記,輸出一個從?landmarks[0]至?landmarks[20]的數組,其中l(wèi)andmarks[i]表示數組中的第[i]個元素。比如手腕是?0?號點,就是數組的第?0?個元素,輸出為landmarks[0],拇指指尖是?4號點,輸出為?landmarks[4],食指指尖是?8?號點,輸出為?landmarks[8]。每個關鍵點都標記為歸一化的三維坐標,其中?x,?y?軸的值是以當前這一幀圖片的左上角為原點建立的坐標系的坐標,圖片左上角的?x、y?軸坐標為(0,0),圖片右下角的?x、y?軸坐標為(1,1),其余各點的x、y?軸坐標值均在?0?到?1?之間,因此稱為歸一化坐標。z?軸的零點是手腕,攝像頭平面的?z軸坐標值為-1。如果某個關鍵點至攝像頭平面的距離大于零點至攝像頭平面的距離,則?z?軸值為正,否則為負,并且在-1?至?0?之間。這樣,手部第?i?個地標的三維坐標就可以表示為landmarks[i].x,landmarks[i].y,landmarks[i].z,分別代表了這個地標的?x?軸,y?軸,z?軸上的坐標值。因此,對于視頻信號中的每幀圖片,mediapipe?對每只手輸出的是一個?21?乘以?3?的二維數組。mediapipe可以設置為支持單手工作模式和雙手工作模式,在支持雙手工作模式下,當圖片中有兩只手時,輸出兩個?21?乘以?3?的二維數組。一個連續(xù)視頻信號中每只手的關鍵點的坐標,就是一系列?21?乘以?3?的二維數組。
4、手指地標識別系統(tǒng),如?mediapipe,輸出的三維坐標是有抖動的。因為手部的關鍵點特征不像面部關鍵點那樣容易區(qū)分,因此識別軟件往往輸出抖動很大的結果,此時需要使用濾波器對結果進行過濾,去掉抖動。典型的濾波器算法,如?one-euro,使用?min_cutoff,beta,derivate_cutoff?和?frequence?為參數,當手指為靜態(tài)時,參數min_cutoff控制信號過濾后的平滑程度,當手指移動時,beta?控制過濾后信號的響應速度,derivative_cutoff?是濾波器的截止頻率,frequence?是采樣率,即視頻中每秒的圖片的幀數。當使用?mediapipe?對?720p?分辨率的視頻圖像進行手部關鍵點標記時,對應的one-euro?濾波器的各個參數為:?min_cutoff?為?1.0,?beta為?0.8,derivate_cutoff?為1.2,典型的采樣率?frequence?為?30。這樣的參數設置,可以讓?one-euro濾波器對手部關鍵點坐標中較大的抖動有明顯的平滑作用。實際應用中,濾波器可以是獨立的軟件模塊,也可以集成到手指地標識別器,如?mediapipe?中。需要指出的是,上述濾波器參數是針對mediapipe?對?720p?分辨率的視頻圖像進行分析的輸出結果,如果使用其他分辨率的視頻圖像,則濾波器參數需要進行調整。
5、濾波器過濾后的手指地標三維坐標,由手勢識別器進行識別,并計算手指延長線與手機屏幕的交點。比如對于射擊類游戲,最為用戶熟知的手勢是食指指向屏幕上的某個目標,拇指豎起,中指、無名指和小指并攏卷曲,如圖5(a)中的手勢所示。手勢識別器根據各個手指關鍵點的三維坐標,確定手勢。比如識別圖?5(a)的手勢,首先計算各個手指的向量。比如拇?指?的?向?量?v_thumb?可?以?表?示?為?:((landmarks[4].x-landmarks[2].x),(landmarks[4].y-landmarks[2].y),(landmarks[4].z-landmarks[2].z)),其中l(wèi)andmarks[4]為拇指指尖,landmarks[2]為拇指指根。上述計算式可以簡寫為(v_thumb.x,v_thumb.y,?v_thumb.z),即?v_thumb.x,?v_thumb.y,?v_thumb.z?分別對應上述括號內的三個計算式?(landmarks[4].x-landmarks[2].x),?(landmarks[4].y-landmarks[2].y)和(landmarks[4].z-landmarks[2].z)?。?食?指?的?向?量?v_index?可?以?表?示?為?:((landmarks[8].x-landmarks[5].x),(landmarks[8].y-landmarks[5].y),(landmarks[8].z-landmarks[5].z)),其?中l(wèi)andmarks[8]?為?食?指?指?尖?,?landmarks[5]?為?食指?指?根?,?簡?寫?為?(v_index.x,?v_index.y,?v_index.z)?。然?后?根?據?食?指?的向?量?判?斷?食?指?是?否?指?向?屏?幕?,?計?算?公?式?為?:(v_index.z/sqrt(v_index.x?*?v_index.x?+?v_index.y?*?v_index.y?+?v_index.z?*?v_index.z))?<?ω。公式中?sqrt?為開方運算,ω為簡化計算參數,可以取-0.6。如果不等式成立,則判定食指指向屏幕。之后,需要計算拇指和食指的夾角。計算兩個向量v1?和?v2?的夾角計算公式為:acos(dot/(mag1*mag2))?*?180?/?π,其中?acos?為計算反余弦值函數,dot?的計算公式為:?(v1.x?*?v2.x?+?v1.y?*?v2.y?+?v1.z?*?v2.z),mag1?的計算公式為:sqrt(v1.x?*v1.x?+?v1.y?*?v1.y?+?v1.z?*?v1.z),mag2?的計算公式為:sqrt(v2.x?*?v2.x?+?v2.y?*v2.y?+?v2.z?*?v2.z)。將拇指和食指向量代入上述公式,即可計算二者夾角。在實際應用中,通過上述公式計算的拇指和食指向量的夾角大于?45?度,并且中指、無名指、小指沒有指向屏幕,即可認為圖?5(a)手勢成立。手勢識別器根據食指各個關鍵點的三維坐標,計算食指延長線與手機屏幕的交點,即投影點(圖4?中標記為?projectedpoint)的二維坐標,即projectedpoint.x?和projectedpoint.y。計算公式如圖?4?所示:projectedpoint.x?=landmarks[5].x?-?(dx/dz)?*?scalefactor,其中?dx?=?landmarks[8].x?-?landmarks[5];dz?=?landmarks[8].z?–?landmarks[5].z;landmarks[8]和?landmarks[5]分別是食指的指尖和指根。同理,手指延長線與手機屏幕交點的?y?坐標?projectedpoint.y?的計算公式為landmarks[5].y?-?(dy/dz)?*?scalefactor,其中?dy?=?landmarks[8].y?–landmarks[5].y。在實際應用中,為了進一步減少抖動的影響,以及提高計算效率,dx?和dy?的計算可以引入食指上其他的關鍵點,比如一種計算?dx?的公式可以是?dx?=?α?*?(landmarks[8].x?-?landmarks[5].x?+?landmarks[7].x?-?landmarks[5].x),dy?的計算為?dy=γ?*?(landmarks[8].y?-?landmarks[5].y?+?landmarks[7].y?-?landmarks[5].y),其中α和γ是為簡化計算而采用的參數,可以取?0.5?至?1.2?之間的值。這個計算方式,除了使用食指指根?landmarks[5]和指尖?landmarks[8]的坐標,還引入了食指第二個關節(jié)點,即在?mediapipe?輸出的數組中?landmarks[7]的坐標,這樣做有利于消除單個關鍵點的坐標抖動對計算結果帶來的不利影響。而?dz?可以采用拇指上關鍵點的距離進行替代?,?以?摒?棄?抖?動?在?z?軸?上?的?影?響?,?比如?dz=?θ?*(landmarks[4].y?-landmarks[2].y)?+?(landmarks[4].x?-?landmarks[2].x),即拇指指尖?landmarks[4]至拇指指根?landmarks[2]的?x?軸、y軸距離之和,與簡化計算參數θ的乘積,此處θ可以取0.5?至?1.5?之間的數值。實際應用中,還可以對投影點的坐標進行限制,比如如果計算后的?projectedpoint.x?或?projectedpoint.y?的值小于0?或者大于?1,則將其值直接設置為?0?或?1,表示達到圖片邊緣。當圖片在全屏模式下顯示時,圖片的邊緣也代表了手機屏幕的邊緣。在實際應用中,投影點可以在屏幕上進行高亮顯示,比如顯示為一個紅點,當紅點停留在屏幕邊緣某處的時候,玩家能夠清晰的知道自己手指的指向已經偏離了屏幕,應該向相反的方向移動。除了計算手指延長線在屏幕上投影點的坐標,手勢識別器還可以根據識別的手勢進行不同的操作,比如玩家的展示的手勢是拇指豎起,食指、中指同時指向屏幕,此時可以把玩家的武器切換為雙管獵槍或其他武器進行瞄準,如圖5(b)所示。玩家展示的手勢是食指、中指、無名指、小指同時指向屏幕,表示前進,玩家展示的手勢是握拳,表示停止前進,如圖?5(f),圖?5(g)所示。又比如在飛機或坦克操控游戲中,飛機和坦克都是使用操縱桿控制的。如果玩家的手勢是拇指豎起,其余四指并攏卷曲,可以表示操縱桿豎直,此時表示飛機或坦克應直行,如圖?5(c)所示;玩家拇指彎曲,如圖?5(d)所示,表示進行射擊;手勢以及拇指向左旋或右旋則表示操控桿向左側或右側轉向,?如圖?5(e)所示。
6、玩家先做出圖5(a)或者圖5(b)的手勢,進行瞄準,然后手勢小幅突然上揚,模擬射擊后手部由于受到槍支的后坐力上揚的動作,表示開火,如圖7所示。在實際應用中,為了實現圖7的效果,可以緩存時間上最近的n個投影點的坐標以及時間標簽,計算每個投影點較前一個投影點在x軸上的距離,從而計算其在x軸的移動速度,當發(fā)現某個投影點在x軸上的移動速度超過閾值時,觸發(fā)開火動作。由于玩家手指已經發(fā)生移動,此時手指延長線至屏幕的投影點坐標也已經變化,故不能使用時間上最新的投影點坐標作為目標點發(fā)射子彈,而應該通過投影點的時間標簽逆向查找已經緩存的n個投影點坐標,當發(fā)現第m個接近于靜止(速度小于v)的投影點時,將其設置為目標點,發(fā)射子彈。實際應用中,n可以取值為20,m可以取值為1或2,v可以取值為0.05。需要指出的是,上述計算方式,例如計算x軸上的移動速度,m、n、和v的具體值選擇,依賴于坐標系的設定,比如上述各個投影點坐標,是以手機豎直方向放置時屏幕左上角為坐標原點的坐標系,計算得出的坐標。當使用不同的坐標系時,上述參數需要修正。
7、聲音采集器采集玩家發(fā)出的聲音,可以使用非常簡單的邏輯觸發(fā)射擊或其他動作,比如當音量高于某個閾值的時候,觸發(fā)某個動作。比如用戶可以簡單的發(fā)出“bang”的聲音,如果音量高于閾值,則觸發(fā)射擊。聲音采集器也可以使用語音識別技術,識別玩家的語音指令,比如“前進”,“左轉”,“射擊”等完成動作的觸發(fā)。
8、手指地標識別器,比如?mediapipe,要做到精確的手指關鍵點的坐標標記,對于光線,手指與攝像頭的角度、距離都有一定的要求。比如,當手機豎直放置情況下,mediapipe手指地標識別的抖動會更大,這是因為手指的特征點在攝像頭正對手掌的角度下更容易分辨,而攝像頭位于手掌一側時,?mediapipe?對特征的識別能力會下降。為了讓玩家能夠有更好的游戲體驗,本發(fā)明通過區(qū)分玩家的主要操控手(比如負責瞄準的手,需要精確計算坐標)是左手還是右手,提示用戶將手機右轉?90?度放置(如果用戶的主要操控手為左手),如圖?1(b)所示;或者將手機左轉?90?度放置(如用戶主要操控手為右手),如圖?1(a)所示。手機水平橫向放置,一方面和主流游戲的橫屏展示吻合,另一方面使手機攝像頭盡可能以正對手掌的角度拍攝,大大提高了手指地標識別的精度。為了幫助玩家快速完成設置,找到手部相對手機的最佳位置,需要提供直觀的用戶向導。本發(fā)明使用玩家手部的校準點的位置,提示用戶相對手機向左、右或前、后移動手部;也可以提示用戶將手機向前、后傾斜。例如,如果以拇指的指尖位置為校準點,對于右手操控的玩家,在手機左傾?90?度橫屏放置時,當校準點在手機屏幕平面上的?x?軸歸一化坐標大于?0.53?時,提示用戶向左側移動手部,當校準點在手機屏幕平面上的?x?軸歸一化坐標小于0.47?時,提示用戶向右移動手部。對于右手操控的玩家,當校準點在手機屏幕平面上的?y?軸歸一化坐標大于0.47?時,提示用戶將手機向前傾斜。對于左手操控的玩家,上述各軸的歸一化坐標要進行相應修正,從而為用戶提供直觀、快速的向導。需要指出的是,上述校準點坐標的具體值依賴于坐標系的設定,比如上述各個校準點坐標,是以手機豎直方向放置時屏幕左上角為坐標原點的坐標系,計算得出的坐標。當使用不同的坐標系時,上述坐標需要修正。當手指地標識別器設置為支持單手工作模式時,如果攝像頭采集的視頻信號中出現兩個手部畫面,本發(fā)明通過用戶選擇的主要操控手,提示用戶將另一只手移出攝像頭的視頻采集區(qū)域。
9、本發(fā)明設計的新型游戲操控方式,可以作為獨立的軟件模塊運行,也可以通過應用編程接口?api,集成到其他電子游戲中,在復雜度和成本均可控的條件下,使其他電子游戲具有類似的操控能力。比如,一個手機應用程序可以訪問手機相冊,選擇某個照片作為靶紙,然后使用該新型游戲操控系統(tǒng)的api,進行瞄準和射擊,即可成為一款趣味性強的射擊類小游戲。
10、運行了本發(fā)明實現的新型游戲操控系統(tǒng)的手機,可以使用藍牙、wi-fi或其他連接方式,連接到傳統(tǒng)的電子游戲主機,通過實現傳統(tǒng)電子游戲遙控器和游戲主機之間的通信協(xié)議,模擬傳統(tǒng)電子游戲遙控器的功能,將手勢轉換為遙控器按鈕信號,發(fā)送給游戲機主機,也可以將手機上玩家手指投影點的位置,轉換為遙控器的按鈕信號,發(fā)送給游戲機主機,使顯示于電視端的傳統(tǒng)電子游戲,也可以使用更直觀的方式讓玩家操控,如圖?3?所示。
11、需要指出的是,本技術中使用的關鍵點坐標表示方法,關鍵點的坐標、濾波器算法和參數,手勢識別的計算公式和方法,手指延長線與手機屏幕交點的計算公式以及公式中各個參數的計算方式,手部校準點的選擇,都是為了證明本發(fā)明可行性的示例,并非限制本發(fā)明應用的條件。其他的實現中,采用不同手部地標識別技術,或者使用不同的關鍵點坐標表示方法,或者使用其他濾波器算法,或者為了消除抖動引入不同的手部關鍵點坐標進行計算,或者對公式中的參數使用不同的方式進行計算,或者使用不同的簡化計算系數,或者選擇不同的手部關鍵點作為校準點為玩家生成幫助或提示,都可以認為是本發(fā)明的延伸。
12、除非特殊說明,本技術中地標和關鍵點是相同意義,可以互換。