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