实战分享1:怎么使用华为VR Glass 6dof 基于 OpenXR
目录
1 环境准备
2 使用OpenXR + XR Interaction Toolkit
2.1 工程准备
2.1.1 安装openxr相关插件
2.1.2 配置工程
2.1.3 Debugger -XR Interaction Debugger
2.2 场景搭建
2.2.1 头部显示和位姿追踪测试
2.2.2 加入双手柄交互(6dof)
2.2.3 结果验证
2.3 编译出exe文件,运行
小结
1 环境准备
硬件条件
- 一台VR READY的PC或者笔记本电脑;
- 一套华为VR Glass 6dof (含VR Glass,6dof 游戏套件(2手柄,1 头部定位器,1 散热背夹));
- 1根PC VR链接线缆(可选),可以直接使用的是VR Glass 自带的1.2米长 C2C线缆;
如下图,环境非常简单(荣耀猎人V700 + 华为VR Glass 6dof )
软件条件
- Unity 2020 LTS或以上
- SteamVR 1.21.8或以上
VR Glass 6dof 可以正常运行steamVR平台游戏内容;
2 使用OpenXR + XR Interaction Toolkit
这里啰嗦一下,当前使用untiy + openxr标准进行VR游戏/应用开发,其实依赖的主要是使用XR plug-in architecture. 以及 XR Interaction Toolkit。
基于这套架构,很大程度上可以实现VR应用开发与VR硬件/VR runtime 实现解耦。真正做到一套代码,支持跨平台运行。
OpenXR Plugin | OpenXR Plugin | 1.3.1
OpenXR is a plug-in in Unity's XR plug-in architecture.
Unity remends using the XR Interaction Toolkit for input and interactions.
由于华为VR Glass 6dof 已正式支持steamVR平台,而Steam平台 runtime 已经支持了openxr 标准;
2.1 工程准备
新建3D demo场景,工程设定为PC
2.1.1 安装openxr相关插件
Windo-》Package Manager
安装 XR Plugin Management 和 XR Interaction Toolkit,OpenXR plugin 三个插件
在安装XR Interaction Toolkit后,会弹出 如下 arning,直接选择YES
以下 选择 Go Ahead.
2.1.2 配置工程
File->Build Settings->Player Settings - XR Plug-in Management
勾选OpenXR,
点击 感叹号,提醒增加至少1个 interaction profile文件;
点击edit,此时进入openxr相关的feature设置,选择 OculusTouch Controller profile(华为VR Glass 6dof 手柄和OculusTouch 手柄在按键布局上几乎一致)
下一步就可以使用XR Interaction Debugger 来实际检查 头,左右手柄的追踪和按键是否正常;
2.1.3 Debugger -XR Interaction Debugger
The XR Interaction Toolkit Debugger indo displays a -don vie of all the Input Devices, Interactables, and Interactors in a Scene. It also displays their relationship to each other and their parent Interaction Managers. To open this indo, go to Windo > Analysis > XR Interaction Debugger from Unity's main menu.
此时发现是空的;是因为没有点击play;
点击play;此时可以发现,steamVR已经启动,头显,左右手柄的追踪,按键等都可以追踪起来;
在device 下,当移动头显或者手柄的时候,会发现device Position/device rotation 都是动态发生变化的;当触控按键的时候,也会有变化。
进行到这一步基本的工程配置准备工作就算完成了;
结果通过openxr 以及 XR Interaction Toolkit ,以及debugger 工具,可以发现头部位姿,左右手柄位姿,按键等工作正常。
注意因为此时还没有在场景中增加XR RIG,此时VR头盔中的画面是不正常的,可以不用管。
2.2 场景搭建
2.2.1 头部显示和位姿追踪测试
创建XR RIG,选择XR->XR Origin(Action-based)
点击play,此时VR头显中显示已经正常了,头部6dof位姿也正常,手柄追踪是没有的,
因为发现左右手柄的配置(position 和rotation等)都是空的。如下图
2.2.2 加入双手柄交互(6dof)
为了方便加入6dof手柄相关的组件,需要做一个准备工作,导入一个Assets
XR Interaction Toolkit –>Starter Assets
点击import;
此时在Assets-> XR Interaction Toolkit,已经有了Starter Assets;
下一步进行配置工作,将上面导入的Assets 中的左,右手柄的preset 设置为default;
将XRI Default Left Controller(preset)和XRI Default Right Controller(preset) 分别
Add to ActionBasedController default;
在preset manager 中,增加filter如下信息,达到自动关联的目的;
这样在后续创建XR RIG的时候,左右手柄对象都会通过此preset自动关联,无需挨个配置,大大节省了工作量。
File->Preset Manager
如下所示,分别输入关键字 right和left,分别对应XRI Default Left Controller和XRI Default Right Controller;
此时相关的配置准备工作已经大功告成,可以增加XR RIG进行测试了;
需要删除掉原先创建的XR RIG,重新创建XR RIG;
创建XR RIG,选择XR->XR Origin(Action-based)
可以发现创建好的LeftHand Controller 和 RightHand Controller ,均已经有正确的reference;如下
在XR RIG中增加input action manager.
XR Origin->Add Component->input action manager.
此时 Action Assets 是空的;需要增加XRI Default Input Actions
Action assets
增加一个 element0,将assets 中的 Samples的 XRI Default input actions 组件拖入到里面
关联 XRI Default input actions
增加成功后的结果如下
2.2.3 结果验证
点击play
结果在华为VR Glass 6dof 设备上,画面渲染正常,头部6dof位姿正常,steamvr启动正常; 此时手柄追踪正常,还有射线;
下一步可以增加更多的 功能,
- 比如替换手柄模型,动画;
- 增加可以交互的物体,实现抓取等;
2.3 编译出exe文件,运行
直接编译出exe文件,可以独立运行。