VIVE Input Utility
目录
前言
项目转到unity2018后,steamvr plugin 2.0支持不够完善,所以选择使用vive input utility插件来追踪手柄头显得事件,之所以选择这个插件还有另外一个原因是他可以直接点击UGUI的组件。下面就是所有问题的研究和使用笔记,文档编写日期为2019年1月18日星期五,作者gong。
详细项目的研究
1.版本
现在使用的是V1.10.1,这个版本放到unity2018.3.1.f1中是完全兼容的,运行正常的。但是要注意的是VIVE Input Utility(下面简称:viu)不再和steamvr plugin v2.0x兼容了。这个版本的viu包含对UGUI的操作,抓取物体,射线,移动摄像机的操作,完全满足现在的交互需求。
2.实现机制
Viu的实现机制是通过unity input事件来实现的,所有在Input中设置了很多按钮的映射,这些都是unity XR Input中提供的。完全和unity兼容。
Viu通过单例类ViveInput.cs来检测用户的输入。
3.如何获取手柄的状态值
Viveinput单例类就是获取所有手柄的状态值的类,它包含了获取这些状态值的所以API。
接下来是测试获取手柄的状态值的方式,这种方式包含三种:时刻检查手柄的按钮状态,时刻检查手柄一个轴的状态数值,通过添加事件来关联关心按钮的状态值。下面一一测试。
3.1.直接获取一个键的定义状态
新建场景,把ViveCameraRig拖入到场景中,去掉场景的MainCamera。创建类testGetHandleState,在testGetHandleState类中编写如下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HTC.UnityPlugin.Vive;
public class testGetHandleState : MonoBehaviour
{
// Update is called once per frame
void Update()
{
if(ViveInput.GetPressDownEx(HandRole.RightHand,ControllerButton.Trigger)){
Debug.Log("right hand trigger down");
}
}
}
然后把这个类挂载到场景中的一个物体上。运行场景,可以按下右手手柄的