Unity使用SteamVR2.0 SteamVRInput配置和使用
注意:Unity需要使用2020以上的版本
一:选择最新版本插件
1.下载SteamVRPlugin和VRTK v4
新版本的Unity,已经关掉了资源商店的功能,下载插件需求先去官网资源商店添加我们需要的插件
(我随便找一款商店资源)
点击添加到我的资源,然后我们再打开Unity
Unity(Window-PackageManager)
打开PackageManager窗口,资源类型选择MyAssets
选中SteamVR和VRTKv4,右下角先点击Downloade,将资源下载下来,下载完成后,再点击import,就完成了插件的导入
SteamVR 2.0
启动SteamVR后,会弹出一个窗口,是否配置VR动作,我们先一起来了解一个这个吧
我们在配置前,要先知道为什么要做这个配置
在旧版本的SteamVR项目开发中,我们在编译脚本实现功能的时候,例如做拾取物品时,我们监听手柄的trigger按钮状态,在按下时,拾取手边的道具,用户在使用我们的产品时,需要按照我们开发的规则来使用,可能就会和用户日常的使用习惯冲突,可能用户在使用别的产品时,拾取物品是Grab键,这就导致用户每次使用一个新的产品,都要在适应操作这一块花费大量时间精力,使得使用起来的体验感变差
在新版本的SteamVR项目开发中,当我们在做相同的功能时,就不再监听手柄按钮了,我们监听SteamVRInput的Actions
(Window-SteamVRInput)先打开这个SteamVRInput窗口
我们可以看到,SteamVR2.0内置了很多Actions,这些基本已经能满足日常的开发需要了,我们要了解一下这些Actions
在SteamVR配置面板中会关联到这里的设置
我们注意到下面有一个type可以选择,per hand(每只手),morrored(镜像),hidden(隐藏)
default : 默认设置
SteamVR内置的这些默认事件,总共有6个type
- boolean:一些按键,是否按下
- vector1:[0-1]的一个范围值可以判断按钮按到哪个程度
- vector2:遥感或者触摸板信息
- vector3:输入一个三维值
- pose:输入三维空间的位置和角度
- skeleton:比如手部的关节信息
platformer: 平台游戏
两项输入,Move移动,Jump跳跃
buggy:模拟驾驶
Steering方向,Throttle油门,Brake刹车,Reset复位
mixedreality:混合现实
配置:新建一个Action
如果我们想要了解VR输入事件的工作原理,最好的方法就是从头开始,了解一遍
- 新建一个NewAction
观察它的ActionDetails
Full Action Path :这个是配置路径
Name:事件名称
Type:输入事件类型
Required:事件的级别(Optional可选可不选,Suggested推荐选择,Mandatory强制选择)
- 设置它的细节
- 保存设置,然后打开控制器按键设置
配置:添加手柄对应Action
- 将我们设置的新事件,配置上去
配置有镜像模式,勾选后两个手柄的基本功能就一致了,不勾选可以定义不同的事件
因为我们新设置的Action是一个boolean类型的,所以我想把它定义到扳机键上去,看看怎么设置吧
注意:我用的是Oculus设备,HTC在按键上会有差别, 注意有区别的地方,别配错了
1. 点击这边这个按钮
2. 我希望将它当做按键来使用
3.默认有点击和触摸两个选择,点击更多选项,可以有更多配置选择
4.我把它配置到单击上,找到我之前写好的testaction
5.这样就配置好了,有人可能会注意到右下角的设置按钮,针对个人习惯,可以微调这些参数,我们就不对它做什么设置了
6. 保存设置
Unity使用SteamVRInput的Action事件
- 新建一个空场景,删掉原本的相机
- 在场景中添加[CameraRig]预制件
- 新建一个脚本,把它添加到一个空对象上
//获取SteamVRInput配置的事件public SteamVR_Action_Boolean action = SteamVR_Actions.default_TestAction;//public SteamVR_Action_Boolean action = SteamVR_Input.GetAction<SteamVR_Action_Boolean>("InteractUI");void Start(){//添加事件响应的方法action.onStateDown += OnTestActionStateDown;action.onStateUp+=OnTestActionStateUp;}//响应回调private void OnTestActionStateUp(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource){Debug.Log("按键抬起");}//响应回调private void OnTestActionStateDown(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource){Debug.Log("按键按下");}
- 运行之后,在按下我设定好的按钮之后,事件响应了,控制台输出了如下内容
- 可以看到在action中,有这么多它的状态监听事件,在开发过程中,就可以按照自己想要的效果,监听不同的事件
- 如果要确定到左手或右手按下按键,还可以这么写
public SteamVR_Action_Boolean action = SteamVR_Actions.default_TestAction;//手柄控制器public SteamVR_Behaviour_Pose pose;void Update(){//手柄控制器上的设定事件按下if (action.GetStateDown(pose.inputSource)){Debug.Log("按键按下");}//手柄控制器上的设定事件抬起if (action.GetStateUp(pose.inputSource)){Debug.Log("按键抬起");}}
- 把[CameraRig] 控制器中的左手或右手,拖到脚本上去就可以了
SteamVR2.0最基本的部分使用方法就清楚了,接下来就可以实现别的进阶功能
Unity使用SteamVR2.0 SteamVRInput配置和使用相关推荐
- Unity中SteamVR2.0 手柄交互调用方式
再次接触到HTC Vive项目时发现交互已经跟几年前的写法不一样了,而且VRTK插件也需要找对应的版本才行,否则会报错,版本已经不兼容. 这里总结下我在项目中遇到的手柄交互在Unity中的调用: 1. ...
- Unity 关于SteamVR2.0手柄震动问题_ SteamVR_Actions.default_Haptic.Execute()
SteamVR_Actions.default_Haptic.Execute(0,0.5f,100,200,SteamVR_Input_Sources.LeftHand); //该段代码未左手柄震动. ...
- SteamVR2.0开发指南(Yanlz+Unity+SteamVR+Plugin+OpenVR+InputSystem+Kunckles+VIVE+Oculus+OpenXR+立钻哥哥++ok++)
<SteamVR2.0开发指南> 版本 作者 参与者 完成日期 备注 SteamVR2.0_Guide_V01_1.0 严立钻 2019.01.23 ++++SteamVR2.0开发指南: ...
- Unity3D开发技术研究-SteamVR2.0
一.概述 笔者之前使用SteamV1.x+VRTK开发项目,发现SteamVR2.0与之前有重大更新,主要原因是随着越来越多的VR设备推出,控制器类型逐渐趋向于碎片化, 每当有新的控制器发布,都会给开 ...
- SteamVR2.0开发指南
2019年02月14日 22:21:19 VRunSoftYanlz 阅读数:562 <SteamVR2.0开发指南> 版本 作者 参与者 完成日期 备注 SteamVR2.0_Guide ...
- SteamVR2.0 UGUI射线交互模拟
SteamVR2.0 UGUI射线交互模拟 文章目录 SteamVR2.0 UGUI射线交互模拟 前言 一.开始前要做的准备 1.在项目开始前应当把环境给搭建好,在Unity项目中把SteamVR导入 ...
- SteamVR2.0基本思路及快速入门
SteamVR2.0(我这里用v2.5版本)的动作捕捉与MFC中的变量绑定很相像,大致分三步 (1).在SteamVR Input中定义量A 变量类型决定可绑定哪个动作.比如要检测手柄扣板机动作,可以 ...
- creo 3.0计算机配置,Creo 3.0 Parametric 配置选项文件使用说明
最近安装了Creo Parametric 3.0 F000,其配置选项与Creo Parametric 2.0有部分更新,研究PTC Creo® 3.0 Parametric 配置选项configop ...
- Boost1.62.0 + VS2015 配置
Boost1.62.0 + VS2015 配置 标签:
最新文章
- 避免神经网络过拟合的5种技术
- java注释是用什么标签_java的注释标签是什么?
- v8声卡调音软件_sE VOXTOON AF2评测:解决复杂跳线需求的声卡
- c++ winpcap开发(6)
- Hibernate-面试题
- java难度_你们觉得java难吗?
- 创新创业技术路线怎么写_怎么创业起步 如何写创业计划?
- JavaScript-数组相关作业
- “中华优秀科普图书榜”
- react中使用Route报错` A <Route> is only ever to be used as the child of <Routes> element, never rendered`
- 【Unity Shader 描边效果_案例分享】
- 一文读懂Java封装实例
- 游戏设计之基于高程图的三维地形绘制
- Flink 检测一段时间内的温度连续上升输出报警
- Neo4j 第一篇:在Windows环境中安装Neo4j
- 安卓手机在fastboot模式下刷机
- Python 1-22 测试
- Nim中文社区 官网现已上线!
- 对近期的学习内容进行一个梳理总结
- DD驱动鼠标键盘(驱动级别机器人使用鼠标键盘)