Hololens 开发—— MixedRealityToolKit For Unity 实操与学习

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

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 闲杂

通识

输入模块

各类动作事件及其处理接口
输入类别名称处理这个输入的接口解释
PointerPointerClickedIMixedRealityPointerHandler手指点击
PointerPointerUpIMixedRealityPointerHandler手指按下
PointerPointerDownIMixedRealityPointerHandler手指抬起
InputOnInputUpIMixedRealityInputHandler手指/按键抬起(测试失败)
InputOnInputDownIMixedRealityInputHandler手指/按键按下
InputOnInputChangedIMixedRealityInputHandler手指/按键状态改变
FocusOnFocusEnterIMixedRealityFocusHandler中央白点指向物体
FocusOnFocusExitIMixedRealityFocusHandler中央白点离开物体
FocusOnFocusChangedIMixedRealityFocusHandlerEnter 与 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 大纲如图
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 上的编辑窗口。
holographic 窗口

一般来说,使用这个窗口不会有什么问题。但是目前根据使用情况,在 Disconnect(断开与 Hololens 的连接)的时候,需要注意 Holographic 这个应用的状态。如果在不适合的时候 Disconnect,有几率发生未知的传输错误,以至于Unity 等待时间过长而崩溃。在退出 Play 状态时,偶尔也会因为传输数据的问题发生这种崩溃错误。

翻了半天,我没有找到这个编辑窗口相关的代码,尚无法彻底解决这个问题。

深入

一些关键类型

MixedRealityInputSystem

输入系统核心函数

尚未完全研究透彻,我会不定时的更新这份笔记。欢迎有疑问的同学在楼下提问,让我们一起冷凝一起飞 :)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值