MixedRealityToolKit【MRTK】 学习
MRTK 是用于 Hololens 等微软系 XR 设备的开发包。
点此访问 MRTK 主页
[推荐一个 Hololens 演示视频](https://www.bilibili.com/video/av7047843?from=search&seid=14965371010187156405)
起步
新建一个 MR 场景
新建一个空场景,之后使用配置工具,就可以快速配置一个 MR 场景
配置
MRTK 有着许多设置选项。

MRTK 的全局配置表如图所示

点击右边的 </> 可以快速新建自定义配置
这是我自定义的配置,而默认配置是不可更改的。你可有通过 Customize 来参照默认配置制定一份自定义配置。
- Experience 用户体验的配置,包含游戏的对物理空间的需求等。
- Camera 主摄像头的配置,和 Camera 组件的内容差不多。
- Input System 输入配置,包括手部动作、语音输入等。
- Boundary System 游戏物理空间边界的显示
- Teleport System 尚未研究
- Spatial Awareness System 和空间识别有关。默认情况下,在游戏运行时会显示现实世界的物体的边界线,这也是和这套系统有关。停用这套系统后,边界线也会不再显示
- Diagnostics System 尚未研究
- Additional Service 闲杂
通识
输入模块
各类动作事件及其处理接口
| 输入类别 | 名称 | 处理这个输入的接口 | 解释 |
|---|---|---|---|
| Pointer | PointerClicked | IMixedRealityPointerHandler | 手指点击 |
| Pointer | PointerUp | IMixedRealityPointerHandler | 手指按下 |
| Pointer | PointerDown | IMixedRealityPointerHandler | 手指抬起 |
| Input | OnInputUp | IMixedRealityInputHandler | 手指/按键抬起(测试失败) |
| Input | OnInputDown | IMixedRealityInputHandler | 手指/按键按下 |
| Input | OnInputChanged | IMixedRealityInputHandler | 手指/按键状态改变 |
| Focus | OnFocusEnter | IMixedRealityFocusHandler | 中央白点指向物体 |
| Focus | OnFocusExit | IMixedRealityFocusHandler | 中央白点离开物体 |
| Focus | OnFocusChanged | IMixedRealityFocusHandler | Enter 与 Exit 切换时 |
如何使用动作事件的处理接口?
class Test:MonoBehaviour,IMixedRealityPointerHandler,IMixedRealityInputHandler<MixedRealityPose>{
//来自IMixedRealityPointerHandler,当手指在点击时触发
public void OnPointerClicked(MixedRealityPointerEventData eventData)
{
Vector3 cmPosition;
//获取当前点击时,摄像机的世界位置
eventData.Pointer.TryGetPosition(out cmPosition);
}
//来自IMixedRealityInputHandler,当【MixedRealityPose】的输入内容产生了变化...
public void OnInputChanged(InputEventData<MixedRealityPose> eventData){}
//……
}
使用 UnityEngine.XR 提供的接口来即时获得位置
class Test:IMixedRealityInputHandler<MixedRealityPose>{
void Update(){
//获取右手的位置
Vector3 handPosition=UnityEngine.XR.InputTracking.GetLocalPosition(XRNode.RightHand);
}
}
使用 MRTK 的舒适姿势
MRTK 大纲如图

- MixedRealityToolkit 定义了一些核心类,可以在中后期仔细研究这些内容
- MixedRealityToolkit.Examples 定义了一些范例,并包含一个 readme 文件。阅读这个文件之后再学习范例,效果更佳。
- MixedRealityToolkit.Generated MRTK 自动生成的文件所存放的位置
- MixedRealityToolkit.Providers 定义了一些核心的、与硬件相关的功能的具体实现
- MixedRealityToolkit.SDK 定义了一些次核心的工具类,这些类在前期会叫常用到,可以仔细研究。其中既包括完善游戏的内容(Features),也包括辅助开发的内容(如 Inspectors,实时显示数据内容)
- MixedRealityToolkit.Services 对应 MRTK 配置中的各个模块。
遇到的坑
IO 234
使用某些版本的 Unity 编译 MRTK 项目时,IO 会报出 234 号错误。
解决方法:换一个 Unity 版本吧。这是 Unity 内部的问题,没有解决的思路,也没查到解决方法。
Holographic
根据官网教程,需要在 Hololens 里下载 Holographic 这个应用来开发 Hololens。
在 Unity 上提供一个用来连接到 Hololens 上的编辑窗口。

一般来说,使用这个窗口不会有什么问题。但是目前根据使用情况,在 Disconnect(断开与 Hololens 的连接)的时候,需要注意 Holographic 这个应用的状态。如果在不适合的时候 Disconnect,有几率发生未知的传输错误,以至于Unity 等待时间过长而崩溃。在退出 Play 状态时,偶尔也会因为传输数据的问题发生这种崩溃错误。
翻了半天,我没有找到这个编辑窗口相关的代码,尚无法彻底解决这个问题。
深入
一些关键类型
MixedRealityInputSystem
输入系统核心函数
尚未完全研究透彻,我会不定时的更新这份笔记。欢迎有疑问的同学在楼下提问,让我们一起冷凝一起飞 :)

本文详细介绍了使用MixedRealityToolKit(MRTK)进行Hololens开发的过程,从新建MR场景、配置选项到深入研究关键类型如MixedRealityInputSystem。在学习过程中,作者分享了遇到的坑,如IO 234错误和Holographic应用的连接问题,以及解决方案。此外,还探讨了MRTK的输入模块和舒适姿势的使用。

9211

被折叠的 条评论
为什么被折叠?



