Vive Input Utility使用指南
相(xiàng)信各位小夥伴(bàn)們在使用SteamVR Unity Plugin的過程中應該都遇到過這樣的問題:獲取設備很麻煩,設備在重啟後indexID會改變從而導致設置好的左右手設備出現交錯;無法與UGUI的(de)事件係統連(lián)接導(dǎo)致無法使用UGUI等等很多問(wèn)題(tí)。
一(yī)、簡介:
Vive Input Utility是一個基於(yú)SteamVR插(chā)件的開發工具。能讓開發者(zhě)更方便的控製Vive設備(bèi)。我們同時也開發了在(zài)3D環境下能運用的鼠標指針方案,並適配Unity Event System。通過使用這個工具,開(kāi)發(fā)者可以省下很多用來管理Vive設備的冗餘代碼(mǎ)。
二、目的:
Unity SteamVR的插件給開發者提供了一個C#的接口來和Vive設備交互。但在獲得控製器輸入狀(zhuàng)態或者設備姿態會形成很多冗餘代碼(mǎ):
不論控製器是否被連接,你都必須不(bú)斷從SteamVR_ControllerManager獲取(qǔ)正確的設備索引;
定位SteamVR_ControllerManager也需要花很多功夫;
所以,我們的主要目標就(jiù)是給開發者提供便(biàn)利的接口(kǒu)並減少冗餘工作。
三、主要特點:
使用靜(jìng)態函數獲(huò)取設備輸入:按鍵輸出、手柄(bǐng)位置;
使用ViveRaycaster component實現(xiàn)3D鼠標指針,並適配Unity Event System;
四、靜態接口:
獲取按鈕事件:
原本要通過SteamVR腳本來找到設備;
(見圖2)
靜(jìng)態類Vive Input提供了一個更簡潔(jié)的(de)API;
(見圖3)
監(jiān)聽按鈕事件:
ViveInput同樣提供回調(diào)類型監聽器;
(見圖4)
獲得追蹤pose:
靜態類(lèi)VivePose提供了獲得設備pose的API;
(見圖5)
五、輔助組件(jiàn):
Vive Pose Tracker
類似於SteamVR_TrackedObject,但目標設備使用ViveRole.DeviceRole替代了device index
(見圖6)
Pose Modifier
這是一個pose tracker的追蹤效果腳本
實現抽象類PoseTracker.BasePoseModifier可以編寫自定(dìng)義的追蹤效果。
有無Pose Modifier對比(見圖7)
有無Pose Modifier視(shì)頻效果
https://vimeo.com/171724218
https://vimeo.com/171724270
Vive射線(xiàn)器及射(shè)線方法:
Vive Raycaster是一個發(fā)送(sòng)vive按鈕事件的射線事件腳本。
通過結合Vive Pose Tracker和Vive Raycaster,你的控製器可以像一個(gè)3D鼠標一樣使用。
Vive Raycaster必須和Raycast方法一起使用。(見圖8)
比如,你可以像這樣布置來和UGUI菜單(dān)交互(hù)。(見圖9)
更多(duō)的例子(見圖10):https://vimeo.com/169824408 https://vimeo.com/169824438
事件係統處(chù)理器:
你必須布(bù)置一個事件係統處(chù)理器去獲取由事件射線器發出的事件:
在對象上增(zēng)加事件處理器(qì)組件(從IEventSystemHandler派生出來)
在對象或者子(zǐ)對象上增加可被射線觸發的組件(如Collider/Collider2D/Graphic)
(見圖11)
今天的教程就到這邊結束了(le),下(xià)一篇會給大家帶來Vive Input Utility API接口的介紹。請大家關注。大家有(yǒu)什麽問題可以在樓下討論。
- 上一(yī)篇:Unreal4引擎(qíng)新手入門(1)- 配置 2017/11/28
- 下一篇:HTC Vive用扳機鍵拾取和放下物體的(de)方法 2017/11/28