浏览 : 4958

一款能让Vive开发变得简单的插件——Vive Input Utility API详解

一般用户

等级1

路过旅人

Shengjie Zhang2016-8-31 10:14

相信各位小伙伴们在使用SteamVR Unity Plugin的过程中应该都遇到过这样的问题:获取设备很麻烦,设备在重启后indexID会改变从而导致设置好的左右手设备出现交错;无法与UGUI的事件系统连接导致无法使用UGUI等等很多问题。(见图1)
        官方推出Vive Input Utility Unity Plugin,解决了以上的一些问题,为大家的开发提供了很好的便利。大家可以在Unity AssetStore中下载到,https://www.assetstore.unity3d.com/cn/#!/content/64219 。
本插件的联络邮箱为 vivesoftware@htc.com,如果有问题可以通过这个邮箱反馈。

我们会推出Vive Input Utility使用教程系列,
第一篇:Vive Input Utility的使用指南 https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1708&extra=page%3D1
第二篇:Vive Input Utility API详解 https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1720&extra=page%3D1
第三篇:Vive Input Utility手把手教程https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1728&extra=page%3D1

API详解:
uint ViveRole.GetDeviceIndex(DeviceRole role)
        返回由role确定的设备的设备索引,如果role没有分配任何设备的话返回OpenVR.k_unTrackedDeviceIndexInvalid。
bool VivePose.HasFocus()
        返回true,如果当进程正在运行。通常当玩家按下手柄上菜单按钮切换到steam菜单面板时,进程切换到后台。
bool VivePose.IsConnected(DeviceRole role)
        如果由role定义的设备被连接了返回true
bool VivePose.HasTracking(DeviceRole role)
        如果由role定义的设备的追踪数据有有效值的时候返回true
Pose VivePose.GetPose(DeviceRole role, Transform origin = null)
        返回由role定义的设备的追踪pose
void VivePose.SetPose(Transform target, DeviceRole role, Transform origin = null)
        设置目标pose来追踪由role定义的设备的相对于origin的pose
bool ViveInput.GetPress(HandRole role, ControllerButton button)
        当控制器上的按钮被按了的时候返回true
bool ViveInput.GetPressDown(HandRole role, ControllerButton button)
        当控制器上的按钮被按下的时候返回true
bool ViveInput.GetPressUp(HandRole role, ControllerButton button)
        当控制器上的按钮被松开的时候返回true
float ViveInput.GetTriggerValue(HandRole role)
        返回扳机键的原始的模拟量
Vector2 ViveInput.GetPadAxis(HandRole role)
        返回touchpad上的原始模拟量
int ViveInput.ClickCount(HandRole role, ControllerButton button)
        返回按钮连续点击的次数。查看ViveInput.clickInterval来获取点击间隔时间
float ViveInput.LastPressDownTime(HandRole role, ControllerButton button)
       返回用户按下按钮的最后一帧的时间
void ViveInput.AddPress(HandRole role, ControllerButton button, Action callback)
void ViveInput.AddPressDown(HandRole role, ControllerButton button, Action callback)
void ViveInput.AddPressUp(HandRole role, ControllerButton button, Action callback)
void ViveInput.AddClick(HandRole role, ControllerButton button, Action callback)
void ViveInput.RemovePress(HandRole role, ControllerButton button, Action callback)
void ViveInput.RemovePressDown(HandRole role, ControllerButton button, Action callback)
void ViveInput.RemovePressUp(HandRole role, ControllerButton button, Action callback)
void ViveInput.RemoveClick(HandRole role, ControllerButton button, Action callback)
        添加和移除press、pressdown、pressup、click的监听事件
void ViveInput.TriggerHapticPulse(HandRole role, ushort intensity = 500)
        控制器上扳机的震动


本帖最后由 Shengjie Zhang 于 2016-8-31 10:18 编辑


本帖最后由 Shengjie Zhang 于 2016-8-31 10:21 编辑


101442ttlmtb05gvbbrisb.png 本帖最后由 Shengjie Zhang 于 2016-9-1 11:00 编辑

检举 回应

一般用户

等级1

路过旅人

Julian2016-8-31 16:13

好帖,LZ辛苦了,期待更多官方好文

检举 回应

一般用户

等级1

路过旅人

Orangerazor2016-8-31 16:29

这些API和Unity本身的参数有对比嘛?

检举 回应

一般用户

等级1

路过旅人

Shengjie Zhang2016-9-1 11:54

Orangerazor 发表于 2016-8-31 16:29
这些API和Unity本身的参数有对比嘛?

不太明白你问的问题,unity本身的参数是指?

检举 回应

一般用户

等级1

路过旅人

Orangerazor2016-9-1 12:08

Shengjie Zhang 发表于 2016-9-1 11:54
不太明白你问的问题,unity本身的参数是指?

就是这个-->https://docs.unity3d.com/ScriptReference/

检举 回应

一般用户

等级1

路过旅人

Shengjie Zhang2016-9-2 15:05

Orangerazor 发表于 2016-9-1 12:08
就是这个-->https://docs.unity3d.com/ScriptReference/

恩,Vive Input Utility这个插件本来就是基于Unity和SteamVR的API写的,所以应该不存在什么对比吧?

检举 回应