Unity VR plugin "VIVE Input Utility" 研究

本文详细研究了Unity中的VIVE Input Utility插件,包括其版本兼容性、实现机制、手柄状态获取、位置信息、ViveCameraRig分析、射线操作及与UGUI交互等内容。该插件适用于Unity2018,适用于UGUI的交互,提供手柄事件监听等高级功能。
摘要由CSDN通过智能技术生成

                                             VIVE Input Utility

目录

VIVE Input Utility. 1

前言... 1

详细项目的研究... 1

1.版本... 1

2.实现机制... 2

3.如何获取手柄的状态值... 2

4.获取手柄的位置信息... 3

5. ViveCameraRig预制的组成分析... 4

6.射线... 5

7.射线击中NGUI 6

8.手柄的碰触事件... 8

9.移动... 10

总结... 10

 

 

前言

       项目转到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");

        }

       

    }

}

然后把这个类挂载到场景中的一个物体上。运行场景,可以按下右手手柄的

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值