亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在游戲中控制虛擬鏡頭的方法和裝置與流程

文檔序號:12801321閱讀:315來源:國知局
在游戲中控制虛擬鏡頭的方法和裝置與流程

本申請涉及游戲的虛擬鏡頭控制領(lǐng)域。具體地,本申請涉及一種在游戲中控制虛擬鏡頭的方法和裝置。



背景技術(shù):

現(xiàn)有的游戲中絕大多數(shù)設(shè)定了虛擬鏡頭的方向位置等信息,玩家可以通過滑動屏幕或者點(diǎn)擊按鈕的方式對虛擬鏡頭進(jìn)行控制。近來出現(xiàn)了可以通過陀螺儀控制游戲中的虛擬鏡頭方向的虛擬現(xiàn)實/增強(qiáng)現(xiàn)實玩法,玩家通過改變運(yùn)行游戲的設(shè)備的方向,改變虛擬鏡頭的方向,從而與游戲進(jìn)行交互。對于以移動設(shè)備運(yùn)行的游戲,現(xiàn)有的方案通過ios或android系統(tǒng)提供的接口來獲取移動設(shè)備的陀螺儀的歐拉角數(shù)據(jù)或旋轉(zhuǎn)矩陣,經(jīng)過一定處理保證其軸向與游戲軸向相同,然后將游戲的虛擬鏡頭旋轉(zhuǎn)矩陣設(shè)置為獲取到的陀螺儀數(shù)據(jù)。

在游戲場景中,僅通過陀螺儀控制鏡頭方向,可以滿足一定的需求。但是首先,對于以此方式進(jìn)行的游戲,不能保證以不同朝向打開陀螺儀都能控制虛擬鏡頭按照玩家需要的方向進(jìn)行正確旋轉(zhuǎn)。例如,在與游戲默認(rèn)方向相反的方向打開陀螺儀時,會使虛擬鏡頭的旋轉(zhuǎn)數(shù)據(jù)相反。如在游戲中進(jìn)行一些強(qiáng)制的限定,則不能滿足玩家隨意轉(zhuǎn)動設(shè)備從而控制虛擬鏡頭的隨意性。



技術(shù)實現(xiàn)要素:

本申請其中一實施例提供了一種在游戲中控制虛擬鏡頭的方法和裝置,以至少解決現(xiàn)有技術(shù)中不能保證以不同朝向打開陀螺儀都能控制鏡頭正確旋轉(zhuǎn)的問題。

根據(jù)本申請其中一實施例的一個方面,提供了一種在游戲中控制虛擬鏡頭的方法,包括:獲得來自運(yùn)行游戲的設(shè)備的陀螺儀的陀螺儀數(shù)據(jù)和來自設(shè)備的加速度計的加速度計數(shù)據(jù);根據(jù)陀螺儀數(shù)據(jù)和加速度計數(shù)據(jù),獲得陀螺儀旋轉(zhuǎn)矩陣;根據(jù)設(shè)備的朝向,設(shè)置默認(rèn)旋轉(zhuǎn)矩陣;以及根據(jù)陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣,控制虛擬鏡頭。

進(jìn)一步地,該方法還包括:使陀螺儀數(shù)據(jù)中的歐拉角與游戲中的坐標(biāo)系匹配,根據(jù)加速度計數(shù)據(jù)中的x值為正值或負(fù)值,調(diào)整歐拉角的值為正值或負(fù)值,以及根據(jù)調(diào)整后的歐拉角,生成陀螺儀旋轉(zhuǎn)矩陣。

進(jìn)一步地,使陀螺儀數(shù)據(jù)中的歐拉角與游戲中的坐標(biāo)系匹配包括:根據(jù)游戲中的坐標(biāo)系調(diào)整陀螺儀數(shù)據(jù)中的歐拉角的部分或全部元素的順序和方向分別,元素包括:pitch俯仰角、yaw偏航角和roll翻滾角。

進(jìn)一步地,生成陀螺儀旋轉(zhuǎn)矩陣包括:分別轉(zhuǎn)換調(diào)整后的pitch俯仰角、yaw偏航角和roll翻滾角以得到旋轉(zhuǎn)矩陣mp、my和mr,將旋轉(zhuǎn)矩陣mp、my和mr依次相乘,以得到陀螺儀旋轉(zhuǎn)矩陣,其中,m0=mp×my×mr,m0為陀螺儀旋轉(zhuǎn)矩陣。

進(jìn)一步地,在旋轉(zhuǎn)矩陣mp、my和mr中,mp=(1,0,0,0,0,cosf(pitch),sinf(pitch),0,0,-sinf(pitch),cosf(pitch),0,0,0,0,1),my=(cosf(yaw),0,-sinf(yaw),0,0,1,0,0,sinf(yaw),0,cosf(yaw),0,0,0,0,1),并且mr=(cosf(roll),sinf(roll),0,0,-sinf(roll),cosf(roll),0,0,0,0,1,0,0,0,0,1)。

進(jìn)一步地,將玩家在游戲中控制的角色的朝向經(jīng)默認(rèn)旋轉(zhuǎn)矩陣旋轉(zhuǎn)后,得到虛擬鏡頭的初始方向,其中,初始方向與設(shè)備的朝向方向相同。

進(jìn)一步地,該方法還包括將陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣相乘,得到虛擬鏡頭旋轉(zhuǎn)矩陣,用于旋轉(zhuǎn)虛擬鏡頭,其中,m=m0×m1,m為虛擬鏡頭旋轉(zhuǎn)矩陣,m0為陀螺儀旋轉(zhuǎn)矩陣,m1為默認(rèn)旋轉(zhuǎn)矩陣。

進(jìn)一步地,默認(rèn)旋轉(zhuǎn)矩陣為單位矩陣。

進(jìn)一步地,控制虛擬鏡頭包括:如果設(shè)備在設(shè)備的屏幕所處的平面內(nèi)發(fā)生旋轉(zhuǎn),則控制虛擬鏡頭按照旋轉(zhuǎn)對應(yīng)的量,向相反的方向進(jìn)行旋轉(zhuǎn)補(bǔ)償。

進(jìn)一步地,以輪詢的方式獲得陀螺儀數(shù)據(jù),并且以推送的方式獲得加速度計數(shù)據(jù)

進(jìn)一步地,如果游戲是以ios系統(tǒng)運(yùn)行的,則陀螺儀數(shù)據(jù)為經(jīng)ios系統(tǒng)處理過的穩(wěn)定陀螺儀數(shù)據(jù)。

根據(jù)本申請其中一實施例的另一方面,還提供了一種在游戲中控制虛擬鏡頭的裝置,包括:數(shù)據(jù)獲取模塊,用于獲得來自運(yùn)行游戲的設(shè)備的陀螺儀的陀螺儀數(shù)據(jù)和來自設(shè)備的加速度計的加速度計數(shù)據(jù);陀螺儀旋轉(zhuǎn)矩陣計算模塊,用于根據(jù)陀螺儀數(shù)據(jù)和加速度計數(shù)據(jù),獲得陀螺儀旋轉(zhuǎn)矩陣;默認(rèn)旋轉(zhuǎn)矩陣計算模塊,用于根據(jù)設(shè)備的朝向,設(shè)置默認(rèn)旋轉(zhuǎn)矩陣;以及虛擬鏡頭控制模塊,用于根據(jù)陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣,控制虛擬鏡頭。

在本申請其中一實施例中,提供了不依賴玩家以何種方向手持設(shè)備打開陀螺儀,都能正確的控制鏡頭的虛擬現(xiàn)實/增強(qiáng)現(xiàn)實玩法,設(shè)備朝向不同的模擬游戲虛擬鏡頭的方向,采用首先通過設(shè)備的數(shù)據(jù)判斷設(shè)備的正反方向后,再進(jìn)行虛擬鏡頭旋轉(zhuǎn)的方式,使得能夠通過加速度計的值確定設(shè)備方向,使玩家可以360度旋轉(zhuǎn)虛擬鏡頭,體會在游戲世界的感覺,且無論正向反向進(jìn)入游戲均表現(xiàn)正常,不會出現(xiàn)畫面反轉(zhuǎn)的問題。

附圖說明

此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:

圖1是根據(jù)本申請其中一實施例的在游戲中控制虛擬鏡頭的方法的流程圖;

圖2是根據(jù)本申請其中一實施例的在游戲中控制虛擬鏡頭的裝置的框圖;

圖3是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法的流程圖;

圖4是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖;

圖5是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖;

圖6是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖;

圖7是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖;

圖8是根據(jù)本申請示其中一例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖;

圖9是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖。

具體實施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本申請方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分的實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。

需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或模塊或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或模塊或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或模塊或單元。

根據(jù)本申請其中一實施例,提供了一種在游戲中控制虛擬鏡頭的方法。圖1是根據(jù)本申請其中一實施例的在游戲中控制虛擬鏡頭的方法的流程圖。

如圖1所示,一種在游戲中控制虛擬鏡頭的方法包括:s102,獲得來自運(yùn)行游戲的設(shè)備的陀螺儀的陀螺儀數(shù)據(jù)和來自設(shè)備的加速度計的加速度計數(shù)據(jù);s104,根據(jù)陀螺儀數(shù)據(jù)和加速度計數(shù)據(jù),獲得陀螺儀旋轉(zhuǎn)矩陣;s106,根據(jù)設(shè)備的朝向,設(shè)置默認(rèn)旋轉(zhuǎn)矩陣;以及s108,根據(jù)陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣,控制虛擬鏡頭。在該方法中,不僅采用陀螺儀數(shù)據(jù),還采用加速度計數(shù)據(jù)。對于現(xiàn)有技術(shù)中僅通過陀螺儀控制虛擬鏡頭的方向,不能確定設(shè)備與游戲中虛擬鏡頭的朝向相對應(yīng),僅根據(jù)獲取的陀螺儀數(shù)據(jù)只能獲得虛擬鏡頭轉(zhuǎn)動的角度,但假如設(shè)備朝向與游戲默認(rèn)的方向相反的方向,此時轉(zhuǎn)動設(shè)備,由于陀螺儀數(shù)據(jù)與玩家想要轉(zhuǎn)動的方向相反,虛擬鏡頭無法按照玩家想要轉(zhuǎn)動的方向旋轉(zhuǎn)。該方法引入了加速度計數(shù)據(jù),在獲取了陀螺儀數(shù)據(jù)以及加速度數(shù)據(jù)之后,能夠判斷設(shè)備方向,根據(jù)陀螺儀數(shù)據(jù)和加速度計數(shù)據(jù)獲得陀螺儀旋轉(zhuǎn)矩陣,使得陀螺儀數(shù)據(jù)與游戲中的坐標(biāo)系匹配。而且,根據(jù)設(shè)備的朝向,設(shè)置默認(rèn)旋轉(zhuǎn)矩陣,使得設(shè)備的朝向與游戲中的方向匹配。以這樣的方式,匹配后的設(shè)備的朝向能夠根據(jù)匹配后的陀螺儀數(shù)據(jù)正確地旋轉(zhuǎn),使得玩家在旋轉(zhuǎn)設(shè)備時,虛擬鏡頭能夠根據(jù)設(shè)備的旋轉(zhuǎn)和根據(jù)陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣,按照玩家需要的正確的方向旋轉(zhuǎn)。

根據(jù)本申請其中一實施例,獲得陀螺儀旋轉(zhuǎn)矩陣包括:使陀螺儀數(shù)據(jù)中的歐拉角與游戲中的坐標(biāo)系匹配,根據(jù)加速度計數(shù)據(jù)中的x值為正值或負(fù)值,調(diào)整歐拉角的值為正值或負(fù)值,以及根據(jù)調(diào)整后的歐拉角,生成陀螺儀旋轉(zhuǎn)矩陣。在該方法中,具體地,可以通過陀螺儀數(shù)據(jù)中的歐拉角與游戲中的坐標(biāo)系匹配。并且,進(jìn)一步通過加速度計用于確定方向。通過加速度計的x值,判斷當(dāng)前設(shè)備朝向,并根據(jù)不同的朝向處理陀螺儀歐拉角。此時,經(jīng)過調(diào)整的歐拉角被轉(zhuǎn)換為陀螺儀旋轉(zhuǎn)矩陣。以此方式,歐拉角經(jīng)過調(diào)整后,能夠為虛擬鏡頭的旋轉(zhuǎn)提供校正后的旋轉(zhuǎn)數(shù)據(jù),使得無論設(shè)備朝向任何方向,虛擬鏡頭均可以按照正確的方向旋轉(zhuǎn)。

根據(jù)本申請其中一實施例,使陀螺儀數(shù)據(jù)中的歐拉角與游戲中的坐標(biāo)系匹配包括:根據(jù)游戲中的坐標(biāo)系調(diào)整陀螺儀數(shù)據(jù)中的歐拉角的部分或全部元素的順序和方向分別,元素包括:pitch俯仰角、yaw偏航角和roll翻滾角。由于運(yùn)行游戲的系統(tǒng)的坐標(biāo)系可能與游戲本身的坐標(biāo)系不同,需要先對兩者進(jìn)行匹配,才能準(zhǔn)確實現(xiàn)虛擬鏡頭的旋轉(zhuǎn)。獲取歐拉角pitch、yaw和roll后,由于設(shè)備在朝向各種方向進(jìn)行旋轉(zhuǎn)時,陀螺儀數(shù)據(jù)pitch、yaw和roll對應(yīng)于虛擬鏡頭的不同的旋轉(zhuǎn)方向,需要將陀螺儀數(shù)據(jù)pitch、yaw和roll進(jìn)行順序和方向的調(diào)整。在本申請實施例中,陀螺儀數(shù)據(jù)pitch、yaw和roll被分別調(diào)整為yaw、-pitch和roll。以這種方式,避免出現(xiàn)旋轉(zhuǎn)設(shè)備x軸而游戲虛擬鏡頭的y軸旋轉(zhuǎn)的現(xiàn)象。

根據(jù)本申請其中一實施例,如果游戲的進(jìn)行方向為反方向,則加速度計數(shù)據(jù)中的x值為正值;如果游戲的進(jìn)行方向為正方向,則加速度計數(shù)據(jù)中的x值為負(fù)值。具體地,在本申請實施例中,在速度計數(shù)據(jù)的x,y,z值中,以加速度計數(shù)據(jù)的x值為基礎(chǔ)判斷設(shè)備的朝向。設(shè)備如果朝向游戲進(jìn)行相反的方向,加速度計數(shù)據(jù)的x值將是正值;設(shè)備如果朝向游戲進(jìn)行的方向,加速度計數(shù)據(jù)的x值將是負(fù)值。以此方式,本申請其中一實施例能夠判定設(shè)備的朝向,從而使虛擬鏡頭能夠按照玩家需要的方向正確旋轉(zhuǎn)。

根據(jù)本申請其中一實施例,生成陀螺儀旋轉(zhuǎn)矩陣包括:分別轉(zhuǎn)換調(diào)整后的歐拉角pitch俯仰角、yaw偏航角和roll翻滾角以得到旋轉(zhuǎn)矩陣mp、my和mr,將旋轉(zhuǎn)矩陣mp、my和mr按照順序相乘,以得到陀螺儀旋轉(zhuǎn)矩陣,其中,m0=mp×my×mr,m0為陀螺儀旋轉(zhuǎn)矩陣。在獲得調(diào)整后的歐拉角pitch、yaw和roll后,轉(zhuǎn)換為旋轉(zhuǎn)矩陣,再將其按照順序相乘可以得到虛擬鏡頭旋轉(zhuǎn)所需的正確的旋轉(zhuǎn)數(shù)據(jù)。按照特定的順序?qū)⑿D(zhuǎn)矩陣相乘,能夠得到兩個或兩個軸以上同時旋轉(zhuǎn)時的正確的旋轉(zhuǎn)數(shù)據(jù)。

根據(jù)本申請其中一實施例,在旋轉(zhuǎn)矩陣mp、my和mr中,mp=(1,0,0,0,0,cosf(pitch),sinf(pitch),0,0,-sinf(pitch),cosf(pitch),0,0,0,0,1),my=(cosf(yaw),0,-sinf(yaw),0,0,1,0,0,sinf(yaw),0,cosf(yaw),0,0,0,0,1),并且mr=(cosf(roll),sinf(roll),0,0,-sinf(roll),cosf(roll),0,0,0,0,1,0,0,0,0,1)。具體地,本申請中的旋轉(zhuǎn)矩陣通過上述的獲得調(diào)整后的歐拉角pitch、yaw和roll轉(zhuǎn)換而得,以這樣的方式獲得的旋轉(zhuǎn)矩陣可以用做虛擬鏡頭旋轉(zhuǎn)的數(shù)據(jù),朝向各個方向旋轉(zhuǎn)的旋轉(zhuǎn)矩陣可以以相乘的方式疊加為最終的陀螺儀旋轉(zhuǎn)矩陣。

根據(jù)本申請其中一實施例,將玩家在游戲中控制的角色的朝向經(jīng)默認(rèn)旋轉(zhuǎn)矩陣旋轉(zhuǎn)后,得到虛擬鏡頭的初始方向,其中,初始方向與設(shè)備的朝向方向相同。在本申請實施例中,得到陀螺儀旋轉(zhuǎn)矩陣后,需要將玩家在游戲中控制的角色的朝向與設(shè)備的方向校準(zhǔn)。具體地,可以通過默認(rèn)旋轉(zhuǎn)矩陣,將角色的朝向按照默認(rèn)旋轉(zhuǎn)矩陣旋轉(zhuǎn)后,該朝向與設(shè)備的朝向是相同的,以這樣的方式,可以匹配玩家在游戲中控制的角色的朝向、設(shè)備的朝向和虛擬鏡頭的初始方向的方向,從而當(dāng)設(shè)備旋轉(zhuǎn)時,基于正確的方向進(jìn)行虛擬鏡頭朝向正確的旋轉(zhuǎn)方向旋轉(zhuǎn)。

根據(jù)本申請其中一實施例,該方法還包括將陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣相乘,得到虛擬鏡頭旋轉(zhuǎn)矩陣,用于旋轉(zhuǎn)虛擬鏡頭,其中,m=m0×m1,m為虛擬鏡頭旋轉(zhuǎn)矩陣,m0為陀螺儀旋轉(zhuǎn)矩陣,m1為默認(rèn)旋轉(zhuǎn)矩陣。在得到陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣后,將兩個矩陣通過相乘合并為旋轉(zhuǎn)游戲中虛擬鏡頭所需的矩陣。以這種方式,當(dāng)設(shè)備旋轉(zhuǎn)時,通過陀螺儀數(shù)據(jù)和加速計數(shù)據(jù),虛擬鏡頭根據(jù)正確的初始方向,按照正確的旋轉(zhuǎn)方向旋轉(zhuǎn),使玩家無論以任何設(shè)備方向打開陀螺儀,均能正確地控制虛擬鏡頭。

根據(jù)本申請其中一實施例,如果設(shè)備平放且設(shè)備的豎直下端朝向正北方向,則陀螺儀的歐拉角roll、pitch和yaw都為0。對于ios設(shè)備,例如,當(dāng)設(shè)備平放,且home鍵朝向正北方向時,即設(shè)備的豎直下端朝向正北方向,此時的陀螺儀的歐拉角roll、pitch和yaw都為0。應(yīng)理解,該實施例僅是本申請的其中一個實例,描述了設(shè)備朝向特定方向時陀螺儀數(shù)據(jù)的具體數(shù)值,設(shè)備可以朝向任何合適的方向放置。

根據(jù)本申請其中一實施例,如果設(shè)備平放且設(shè)備的豎直下端朝向正北方向,經(jīng)默認(rèn)旋轉(zhuǎn)矩陣旋轉(zhuǎn)的方向為v=(1.57,0,-avatar_roty),其中avatar_roty為角色的朝向。具體地,在本實施例中,虛擬鏡頭根據(jù)玩家控制的角色朝向向下旋轉(zhuǎn)90度,然后根據(jù)玩家控制的角色朝向水平旋轉(zhuǎn),從而得到虛擬鏡頭正確的初始朝向。

根據(jù)本申請其中一實施例,默認(rèn)旋轉(zhuǎn)矩陣為單位矩陣。虛擬鏡頭的初始方向可以按照單位矩陣的默認(rèn)旋轉(zhuǎn)矩陣旋轉(zhuǎn),單位矩陣的默認(rèn)旋轉(zhuǎn)矩陣可以僅調(diào)整虛擬鏡頭的初始方向。

根據(jù)本申請其中一實施例,控制虛擬鏡頭包括:如果設(shè)備在設(shè)備的屏幕所處的平面內(nèi)發(fā)生旋轉(zhuǎn),則控制虛擬鏡頭按照旋轉(zhuǎn)對應(yīng)的量,向相反的方向進(jìn)行旋轉(zhuǎn)補(bǔ)償。玩家在通過設(shè)備的旋轉(zhuǎn)控制虛擬鏡頭時,為了保證玩家手持設(shè)備時的穩(wěn)定性,以及當(dāng)設(shè)備在設(shè)備的屏幕所處的平面內(nèi)發(fā)生旋轉(zhuǎn)時,例如,設(shè)備的左端下降,右端上升時(反之亦然),虛擬鏡頭反方向旋轉(zhuǎn)對應(yīng)的量,游戲的畫面相對于玩家來說不會搖擺,使玩家感覺游戲畫面不變,不會發(fā)生旋轉(zhuǎn)。

根據(jù)本申請其中一實施例,以輪詢的方式獲得所述陀螺儀數(shù)據(jù),并且以推送的方式獲得所述加速度計數(shù)據(jù)。具體的,獲取數(shù)據(jù)有輪詢(poll)和推送(push)兩種方式。輪詢方式為每次取數(shù)據(jù)時刷新,推送方式為設(shè)置刷新頻率,然后將刷新的數(shù)據(jù)推送到隊列中,每次從隊列中取數(shù)據(jù)。本申請實施例中,陀螺儀的數(shù)據(jù)采用輪詢的方式,減少不必要的數(shù)據(jù)刷新次數(shù),以及隊列中數(shù)據(jù)造成的延時。而加速度計的數(shù)據(jù)由于只需考慮其正負(fù),因此采取推送的方式獲取。

根據(jù)本申請其中一實施例,如果游戲是以ios系統(tǒng)運(yùn)行的,則陀螺儀數(shù)據(jù)為經(jīng)ios系統(tǒng)處理過的穩(wěn)定陀螺儀數(shù)據(jù)。ios提供兩種陀螺儀數(shù)據(jù),即gyrodata.rotationrate和gyrodata.attitude。前者為未處理的原生陀螺儀的三個歐拉角,數(shù)據(jù)偏差較大且不穩(wěn)定。實驗發(fā)現(xiàn)設(shè)備穩(wěn)定不動時,z軸會持續(xù)偏移。后者為ios處理過的陀螺儀數(shù)據(jù),為較穩(wěn)定的數(shù)據(jù)。采用穩(wěn)定陀螺儀數(shù)據(jù)能夠獲得更精確的旋轉(zhuǎn)結(jié)果。

根據(jù)本申請其中一實施例,穩(wěn)定陀螺儀數(shù)據(jù)包括gyrodata.attitude.pitch、gyrodata.attitude.roll和gyrodata.attitude.yaw數(shù)據(jù)。如上的穩(wěn)定陀螺儀數(shù)據(jù)具體包括gyrodata.attitude.pitch、gyrodata.attitude.roll和gyrodata.attitude.yaw,用于陀螺儀數(shù)據(jù)中的歐拉角的計算。

根據(jù)本申請其中一實施例的另一方面,還提供了一種在游戲中控制虛擬鏡頭的裝置。圖2是根據(jù)本申請其中一實施例的在游戲中控制虛擬鏡頭的裝置的框圖。在游戲中控制虛擬鏡頭的裝置包括:數(shù)據(jù)獲取模塊202,用于獲得來自運(yùn)行游戲的設(shè)備的陀螺儀的陀螺儀數(shù)據(jù)和來自設(shè)備的加速度計的加速度計數(shù)據(jù);陀螺儀旋轉(zhuǎn)矩陣計算模塊204,用于根據(jù)陀螺儀數(shù)據(jù)和加速度計數(shù)據(jù),獲得陀螺儀旋轉(zhuǎn)矩陣;默認(rèn)旋轉(zhuǎn)矩陣計算模塊206,用于根據(jù)設(shè)備的朝向,設(shè)置默認(rèn)旋轉(zhuǎn)矩陣;以及虛擬鏡頭控制模塊208,用于根據(jù)陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣,控制虛擬鏡頭。根據(jù)本申請其中一實施例的在游戲中控制虛擬鏡頭的裝置能夠?qū)崿F(xiàn)如上所述的在游戲中控制虛擬鏡頭的方法,包括實施該方法的各個模塊。該裝置能過獲取加速度計數(shù)據(jù),并且在獲取了陀螺儀數(shù)據(jù)以及加速度數(shù)據(jù)之后,判斷設(shè)備方向,根據(jù)陀螺儀數(shù)據(jù)和加速度計數(shù)據(jù)獲得陀螺儀旋轉(zhuǎn)矩陣,使得陀螺儀數(shù)據(jù)與游戲中的坐標(biāo)系匹配。而且,根據(jù)設(shè)備的朝向,設(shè)置默認(rèn)旋轉(zhuǎn)矩陣,使得設(shè)備的朝向與游戲中的方向匹配。以這樣的方式,匹配后的設(shè)備的朝向能夠根據(jù)匹配后的陀螺儀數(shù)據(jù)正確地旋轉(zhuǎn),使得玩家在旋轉(zhuǎn)設(shè)備時,虛擬鏡頭能夠根據(jù)設(shè)備的旋轉(zhuǎn)和根據(jù)陀螺儀旋轉(zhuǎn)矩陣和默認(rèn)旋轉(zhuǎn)矩陣,按照玩家需要的正確的方向旋轉(zhuǎn)。

根據(jù)本申請其中一實施例的另一方面的在游戲中控制虛擬鏡頭的裝置實現(xiàn)的在游戲中控制虛擬鏡頭的方法與上文中本申請實施例的一方面的方法相同,具備用于實現(xiàn)方法的各個對應(yīng)的模塊,在此不再贅述。

本申請還提供了根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法。

android和ios的數(shù)據(jù)處理方式有一定區(qū)別,為方便描述和理解,本申請其中一示例性實施方式以ios上的橫屏游戲,且手機(jī)平放時,游戲默認(rèn)打開方向為home鍵在右手側(cè)為例,進(jìn)行算法說明。

圖3是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法的流程圖。圖中每一個流程步驟右側(cè)有對應(yīng)的編號。

s302:打開設(shè)備的加速度計和陀螺儀,獲取加速度計的x,y,z數(shù)據(jù)和陀螺儀的歐拉角roll,pitch,yaw。

具體的,獲取數(shù)據(jù)有poll和push兩種方式。poll方式為每次取數(shù)據(jù)時刷新,push方式為設(shè)置刷新頻率,然后將刷新的數(shù)據(jù)push到隊列中,每次從隊列中取數(shù)據(jù)。本發(fā)明中陀螺儀的數(shù)據(jù)采用poll的方式,減少不必要的數(shù)據(jù)刷新次數(shù),以及隊列中數(shù)據(jù)造成的延時。而加速度計的數(shù)據(jù)由于只需考慮其正負(fù),因此采取push的方式獲取。

ios提供兩種陀螺儀數(shù)據(jù),gyrodata.rotationrate和gyrodata.attitude兩種數(shù)據(jù)。前者為未處理的原生陀螺儀三個歐拉角,數(shù)據(jù)偏差較大且不穩(wěn)定,實驗發(fā)現(xiàn)設(shè)備穩(wěn)定不動時,z軸會持續(xù)偏移。后者為ios處理過的陀螺儀數(shù)據(jù),為較穩(wěn)定的數(shù)據(jù),因此選擇gyrodata.attitude.pitch,gyrodata.attitude.roll,gyrodata.attitude.yaw數(shù)據(jù)進(jìn)行計算。

s304:處理獲取到的數(shù)據(jù)。

具體的,ios本身的坐標(biāo)系和游戲坐標(biāo)系可能不同,因此,需要先對獲取到的數(shù)據(jù)進(jìn)行處理。在本實施例中,為使陀螺儀數(shù)據(jù)和游戲中的坐標(biāo)系匹配,pitch、roll和yaw對應(yīng)的順序和方向為yaw、-pitch和roll。如不交換順序則會出現(xiàn)旋轉(zhuǎn)設(shè)備x軸而游戲y軸旋轉(zhuǎn)的現(xiàn)象。

如果home鍵在右手側(cè),屏幕面向玩家的方向為正方向;如果home鍵在左手側(cè),屏幕面向玩家方向為反方向。由于只需要考慮游戲的正反方向,因此,只需要判斷加速度計x的正負(fù)即可。

當(dāng)正方向進(jìn)行游戲時,加速度計x的值為負(fù);當(dāng)反方向進(jìn)行游戲時,加速度x的值為正。陀螺儀的歐拉角roll、pitch和yaw分別按照加速度計x的值得正負(fù)取正負(fù),然后得到游戲中需要的三個方向。

坐標(biāo)軸方向和順序調(diào)整后再按照pitch、yaw和roll的順序轉(zhuǎn)換成旋轉(zhuǎn)矩陣mp、my和mr。其中:

mp=(1,0,0,0,0,cosf(pitch),sinf(pitch),0,0,-sinf(pitch),cosf(pitch),0,0,0,0,1)my=(cosf(yaw),0,-sinf(yaw),0,0,1,0,0,sinf(yaw),0,cosf(yaw),0,0,0,0,1)mr=(cosf(roll),sinf(roll),0,0,-sinf(roll),cosf(roll),0,0,0,0,1,0,0,0,0,1)

相乘得到最終的陀螺儀旋轉(zhuǎn)矩陣,記為m0。如不按照特定順序相乘,會導(dǎo)致兩個或兩個軸以上同時旋轉(zhuǎn)時,疊加旋轉(zhuǎn)結(jié)果不正確。如下式:

m0=mp×my×mr

s306:按照游戲需求設(shè)置游戲虛擬鏡頭的初始默認(rèn)方向。

具體的,設(shè)備水平放置home鍵朝向正北方向時,陀螺儀的歐拉角roll,pitch,yaw都為0,旋轉(zhuǎn)矩陣為單位陣。

為達(dá)到上述效果,設(shè)置游戲虛擬鏡頭默認(rèn)旋轉(zhuǎn)矩陣m1。在本實施例中,m1為首先向下旋轉(zhuǎn)90度,然后根據(jù)玩家控制的角色方向水平旋轉(zhuǎn)。旋轉(zhuǎn)方向如下式。其中avatar_roty為玩家控制的角色朝向。

v=(1.57,0,-avatar_roty)

s308:將m0和m1相乘,得到m,將游戲虛擬鏡頭的旋轉(zhuǎn)矩陣設(shè)置為所得的矩陣m。如下式:

m=m0×m1

為了便于說明,提供了根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法在應(yīng)用時的各種狀態(tài)的示例。圖4至圖9是根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法中,虛擬鏡頭呈現(xiàn)的視圖。

根據(jù)本申請其中一示例性實施方式的控制虛擬鏡頭的方法,為優(yōu)化體驗,希望設(shè)備方向模擬虛擬鏡頭朝向,設(shè)備向下時,虛擬鏡頭向下;設(shè)備向上時,虛擬鏡頭向上。且初始方向為玩家控制的角色面向。玩家在如圖4所示時的狀態(tài)打開陀螺儀,設(shè)備平放且朝下時,如圖5所示,虛擬鏡頭對向地面。設(shè)備豎直抬起,如圖6所示,虛擬鏡頭抬起,面向方向為玩家控制的角色正對方向。設(shè)備可以水平轉(zhuǎn)動以模擬玩家控制的角色轉(zhuǎn)身,如圖7所示。設(shè)備平放旋轉(zhuǎn),虛擬鏡頭向相反方向旋轉(zhuǎn),使游戲畫面看起來不動,使玩家感覺游戲畫面不變,不會發(fā)生旋轉(zhuǎn),如圖8所示。繼續(xù)抬起設(shè)備,如圖9所示,虛擬鏡頭轉(zhuǎn)向上方,例如,玩家控制的角色仰望天空。

在本申請的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元或模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或模塊或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,模塊或單元的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元或模塊可以是或者也可以不是物理上分開的,作為單元或模塊顯示的部件可以是或者也可以不是物理單元或模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元或模塊上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元或模塊來實現(xiàn)本實施例方案的目的。

另外,在本申請各個實施例中的各功能單元或模塊可以集成在一個處理單元或模塊中,也可以是各個單元或模塊單獨(dú)物理存在,也可以兩個或兩個以上單元或模塊集成在一個單元或模塊中。上述集成的單元或模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元或模塊的形式實現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可為個人計算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述僅是本申請的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1