日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《圖說VR入門》——VR大朋的(陀螺儀)槍


本文章由cartzhang編寫,轉載請注明出處。 所有權利保留。
文章鏈接: http://blog.csdn.net/cartzhang/article/details/53583784
作者:cartzhang

說明一下:大鵬官方網址上并沒有這樣款產品。是內購的他們的陀螺儀,然后自己添加到眩感槍上的。
所以題目為大鵬的槍,可能不太妥貼,但是暫時沒有其他好的想法。看了下大鵬官方
http://mall.deepoon.com/
沒有任何相關,只有我們自己內購的東西。所以可能通用之處不大。下面也說了,就當自己記錄使用了。在
最后也對大鵬的陀螺儀也就是其頭盔的主要部件,給了評價。


之前在VR的射擊游戲中,使用了大鵬的槍,其實也就是他們的陀螺儀。現在不用了,我們自己開發了新的槍。但是還是要簡單的介紹一下,使用的方法和使用過程中的一些問題和可能的解決方法。
大鵬的槍做的還是可以用的。我這里用的是有線的版本。算是做的一個筆記記錄。
在文章后面給出了所有資源的地址和項目的github可下載地址。

一、所需資源


1. 在Software下的DeePoonUnityPC0.2.8b_forUnity5.0,這個是deepoon為配合槍給出的Unity插件。

圖1

2. 使用了Unity5.3.0f4版本

圖0

3. 硬件接入

這個并沒有驅動,是一個免驅的,插到USB后,如下圖:

圖2
但是雖然有黃色的嘆號,但是這個不影響正常使用。

二、Deepoon gun的樣例


首先,導入大鵬的插件。

然后,自己制作了一個場景,自己也作了一個DeeponGun的預制體。

圖3

保存的場景如圖:

圖4

其次,給槍的預制體,添加DeepoonSensor.cs代碼組件.

隨后,跟槍添加了一個校正的目標:

圖5


圖5.1
運行結果:

圖6


圖7

三、DeepoonSensor的代碼

1. 大鵬的槍有幾種不同的類型:

public enum PERIPHERAL_TYPE{Custom ,XRoverTest ,XRover1 ,DeePoonE2 ,};

其實主要不同的在于槍的初始化方向問題,然后可以在使用中使用不同的按鍵來進行校正。
如下代碼在Update中進行實現。

if ( Input.GetKeyDown (KeyCode.T) ){peripheralsRotation[(int)PERIPHERAL_TYPE.Custom].x += -90;}if ( Input.GetKeyDown (KeyCode.Y) ){peripheralsRotation[(int)PERIPHERAL_TYPE.Custom].x += 90;}if ( Input.GetKeyDown (KeyCode.U) ){peripheralsRotation[(int)PERIPHERAL_TYPE.Custom].y += -90;}if ( Input.GetKeyDown (KeyCode.I) ){peripheralsRotation[(int)PERIPHERAL_TYPE.Custom].y += 90;}if ( Input.GetKeyDown (KeyCode.O) ){peripheralsRotation[(int)PERIPHERAL_TYPE.Custom].z += -90;}if ( Input.GetKeyDown (KeyCode.P) ){peripheralsRotation[(int)PERIPHERAL_TYPE.Custom].z += 90;}

2. 槍的初始化

槍初始化,是直接調用大鵬的DLL底層接口

void Start (){imp = new DeepoonSensorImp();imp.Init( index , DEEPOON_PRODUCT_NAMES[(int)product] );}

3. 更新旋轉

void Update (){Quaternion q = imp.GetRotation();q = q * Quaternion.Euler( peripheralsRotation[(int)peripheral] );if ( Input.GetKeyDown (keyToAlign) ){if( null != objectToAlign ){alignment_rotation = Alignment( q , objectToAlign.transform.rotation );}else{alignment_rotation = Alignment( q , Quaternion.identity );}}// 代碼不全....//....}

4. 對齊位置

槍由于各種原因,比如磁偏,造成的方向不對的情況,這時候就需要進行校正。

Quaternion Alignment( Quaternion cur_rotation , Quaternion object_to_align ){Vector3 ecur = cur_rotation.eulerAngles;Vector3 eobj = object_to_align.eulerAngles;return Quaternion.AngleAxis( eobj.y - ecur.y , new Vector3( 0 , 1 , 0 ) );}

校正直接對Y軸進行旋轉操作,由校正對象歐拉角度減去當前角度,實現校正。

5. 退出

void OnApplicationQuit(){imp.Uninit();}

這個就是反注冊DLL。

6. 更多接口調用


更多的接口和使用,在DeepoonImp.cs和DeepoonSensorImp.cs文件中,可以看到DLL的導入函數。
這里就不過多的分析和研究。

四、可能的問題


使用大鵬頭盔有一段時間,發現的問題在于磁場造成的頭盔或陀螺儀的漂移問題,在舊的版本上一旦出現,不重新啟動游戲肯定是不能自動或通過代碼來校正過來。但是至于現在大鵬最新的頭盔和陀螺儀有沒有做更新算法的陀螺儀磁偏校正算法,這個現在不太清楚。
但是意思不是說,之前它沒有磁偏校正算法,官方說也是有的,就是還有這樣的問題。因為同樣都是陀螺儀,是一個類型的產品。所以,大鵬頭盔之前有的問題,這個槍上還有,且一模一樣。

但是作為經濟實惠的選擇,還是比較合適的。(大鵬官方看到,請找我充值!)

雖然還是不那么難,主要講下應用和使用方面的問題。若是有時候槍模型和旋轉方向與預期不一樣,很可能就是模型的初始化方向不對,旋轉正負90度就可能解決問題了。

五、資源地址


所有圖片下載地址:
https://github.com/cartzhang/ImgSayVRabc/tree/master/DeeponGun_1/Img

大鵬槍的插件下載地址:
https://github.com/cartzhang/ImgSayVRabc/tree/master/DeeponGun_1/software

工程下載地址:
https://github.com/cartzhang/ImgSayVRabc/tree/master/DeeponGun_1/DeepoonGunTest/GunTest


———————THE—–END———————-

如有問題,請留言!!
非常感謝!

轉載于:https://www.cnblogs.com/qitian1/p/6461887.html

總結

以上是生活随笔為你收集整理的《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。