一、关于左右手柄的对应关系

  • 两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个)
  • 在场景中手柄先后连入,先后激活的是Controller(right)、Controller(left),并添加SteamVR_TrackedObject组件

二、手柄按键

1 - 菜单键

6 - 系统键(按下后手柄断开连接,再次按下手柄再次连接上)

7 - 扳机键

8 - 握持键

9 - 触摸板键

(1)点按

按键监听方式一:(SteamVR的方式,封装了OpenVR)

通过Device.GetPressDown / GetPressUp / GetPress获取按键事件

按键监听方式二:(OpenVR的方式,偏底层)

通过controllerState.ulButtonPressed & (SteamVR_Controller.ButtonMask.Trigger)获取按键的按下、松开两种状态

 

或者:

注:m_State、m_PrevState分别表示:当前帧状态、前一帧状态

获取按下时,触摸板的值

获取松开时,触摸板的值(这里必须使用前一帧的状态,因为松开时,当前帧的触摸的值为0)

问题:按下时,没有获取到当前帧触摸板的值!
猜测原因:获取值的Update方法在更新状态Update的方法之前执行了,更新状态的Update方法执行后,才能获取触摸板的值
解决方法:如果不想修改脚本执行顺序的话,可以使用LateUpdate

(2)触摸

  • 适用于触摸板键
  • 适用于扳机键(和点按类似,只是键程更短)
方式一:

方式二:

问题:触摸按下时,没有获取到当前帧触摸板的值!

原因:不明,内部机制需要搞清楚
解决办法:在触摸按下后的第二帧才获取到触摸板的值。
 

(3)触摸板轴的获取

通过以上两种方式获取的VRControllerState_t,获取触摸板的轴

x = state.rAxis0.x

y = state.rAxis0.y

HTC vive开发:关于手柄按键对接控制的更多相关文章

  1. HTC vive开发:关于手柄按键

    一.关于左右手柄的对应关系 两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个) 在场景 ...

  2. HTC Vive开发笔记之手柄控制

    怎么安装设备,配置环境我就不说了,自行百度,教程很多也很简单.接下来说下Vive手柄的控制. 手柄是HTC Vive的重要交互手段,我们通过第一个图片应该对其有一个直观的了解了,总共是九个按钮: 第一 ...

  3. HTC Vive开发笔记之手柄震动

    手柄震动的代码SteamVR_Controller脚本的最上面的注释里面就有说明,其实也很简单 // Example usage: //这个栗子是左手柄震动 右手震动只需把Leftmost换成Righ ...

  4. HTC Vive开发笔记之UI Guideline

    本文转自HTC官方论坛,原址https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1641&extra=page=1 ...

  5. HTC Vive开发笔记之SteamVR插件集成

    重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操 ...

  6. unity3D HTC VIVE开发-物体高亮功能实现

    在VR开发时,有时需要用到物体高亮的功能.这里使用Highlighting System v3.0.1.unitypackage插件实现. Highlighting System v3.0.1的介绍访 ...

  7. osgMulitiplerendertargets sample 中fbo使用【HTC VIVE开发中应用】

    osgmultiplerendertargets.cpp ...................................... // now create the camera to do t ...

  8. Unity 5.4大赞:HTC Vive经典The lab渲染器开源

    HTC Vive提供了一个不错的免费VR demo,最近1周仔细体验了一番. 仔细看了其安装文件,竟然是Unity 5.4beta版本(通过查log,知道Valve公司用的是最新的5.4.0b11版本 ...

  9. 用Unity开发HTC VIVE——手柄控制篇

    写这篇文章的原因主要是因为现在虚拟现实非常的火爆但目前主流的虚拟现实设备(HTC VIVE)的教程却少的可怜,这个我深有体会.所以,我想将我平时开发中遇到的问题以及解决方法记录下来,分享给大家,若其中 ...

  10. Unity的HTC VIVE SDK研究(手柄按键功能的研究,比较详细)

    http://blog.csdn.net/ystistheking/article/details/51553237 想交流的朋友我们可以微博互粉,我的微博黑石铸造厂厂长 ,缺粉丝啊 .....求粉求 ...

随机推荐

  1. read_csv报错Initializing from file failed ,pandas.read_csv不能读取中文内容报错‘utf-8‘ codec can‘t decode byte

    import pandas as pd f=open("C:/Users/qa124/Desktop/北京地区信息.csv",encoding='utf-8') myfile=pd ...

  2. .Net下的简易Http请求调用(Post与Get)

    http请求调用是开发中经常会用到的功能.在内,调用自有项目的Web Api等形式接口时会用到:在外,调用一些第三方功能接口时,也会用到,因为,这些第三方功能往往是通过http地址的形式提供的,比如: ...

  3. mysql视图详细笔记

    1 #视图 2 /* 3 含义:虚拟表,和普通表一样使用 4 mysql5.1版本出现的新特性,是通过表动态生成的数据 5 6 比如:舞蹈班和普通班级的对比 7 创建语法的关键字 是否实际占用物理空间 ...

  4. Spring事务(四)-事务失效场景

    有时候,我们明明在类或者方法上添加了@Transactional注解,却发现方法并没有按事务处理.其实,以下场景会导致事务失效. 1.事务方法所在的类没有加载到Spring IOC容器中. Sprin ...

  5. KeyCastOW win10 屏幕显示按键 - 屏幕录像用

    KeyCastOW win10 屏幕显示按键 - 屏幕录像用 https://gitee.com/itas109/KeyCastOW/releases/v2.0.2.5-cn

  6. dist目录打war包命令 jar -cvf yourName_web.war *

    进入dist目录 "build:war": "cd dist && jar -cvf ../yourName_web.war *",

  7. 芯片公司Dialog产品调研简报

    一 公司简介: Dialog半导体有限公司的总部位于伦敦,设有一个全球销售.研发和营销部.2013年,公司实现了9.10亿美元的营业收入,是欧洲增长速度最快的公共半导体公司之一.   二 芯片型号: ...

  8. Google Chart API学习(三)

    书接上回: maps-charts: <html> <head> <script type="text/javascript" src="h ...

  9. verilog勘误系列之-->算术运算符运算失败

    描述 在verilog代码设计时使用算术运算符与乘法搭配使用出现计算错误 原因 由于数据位宽设置不当导致 错误案例 wire signed [13:0] w01; wire signed [23:0] ...

  10. Performance Improvements in .NET 8 & 7 & 6 -- Thread【翻译】

    线程 .NET 的最近版本在线程.并行.并发和异步等方面做出了巨大的改进,例如 ThreadPool 的完全重写(在 .NET 6 和 .NET 7 中),异步方法基础设施的完全重写(在 .NET C ...