一、混合现实与Hololens2设备简介
传统的人机交互主要是通过键盘和触摸,包括并不能被精确识别的语音等。HoloLens的问世,为创造更加自然的人机交互体验指明了道路。Microsoft HoloLens 混合现实头显由Microsoft 公司于北京时间2015年发布的一款完全不受束缚的全息计算机,HoloLens眼镜可以通过追踪用户的头部和眼睛的位置和方向,以及识别周围环境的特征,来生成对应的虚拟对象,并通过光学投射的技术将其呈现在用户的视野范围内,用户可通过手势在真实环境当中与虚拟3D对象进行交互。
如图所示,继HoloLens之后,Microsoft公司在2019年推出了第二代混合现实设备HoloLens2,通过对HoloLens(第一代)全息计算功能的改进,它能够让用户更加方便地在混合现实环境中进行协作和交流,提高工作效率和精度。同时,该产品还提供了更多的功能和选项,让用户能够更加灵活地进行操作和控制,实现更加个性化的混合现实体验。
HoloLens2通过配备了第二代自定义构建的全息处理单元,可进行手势交互、空间映射感知以及运动跟踪等功能的计算处理。HoloLens2的透明全息透镜,利用光波导的光线传输技术实现虚实融合的裸眼现实效果,结合设备内部的深度感知传感器及摄像头通过多传感器融合算法实现三维注册、手势识别、现实与投影结合、摄影摄像等。
二、开发环境
1、Hololens部署——利用Unity开发
Hololens的部署有三种方式:①通过usb ②通过WIFI ③通过Web
但通过验证,USB来进行部署会是最简单的方式,不容易出错且耗时较少。目前已试过通过WIFI与WEB,这两个在我的电脑都有不同形式的问题错误出现,出于时间考虑,就单纯使用USB进行部署,以下是部署方式及注意事项。
- 在Build Setting中将Build And Run on选择为USB Device
- Target SDK Version选择为VS中所安装的SDK版本
- unity--->VS,架构选择x64
- VS----->Hololens,架构选择ARM64
2、Hololens调试
- 在Hololens中打开Microsoft Store,下载并安装Holographic Remoting。
- 打开Holographic Remoting,可以看到Hololens的IP地址。
- Unity中选择Window的XR,选择远程调试
- Emulation Mode 选 Remote to device,连接后直接在Unity场景中进行调试,可同步在Hololens2设备中显示出来。
3、常见开发问题
①XR Setting中出现多个XR SDK。
![](https://img-blog.csdnimg.cn/f9081d3eccc34c2390094061375902e0.png)
解决方案是打开 Window>PackageManager 然后删除所有有带XR名字的包。
②hololens2部署时出现以上三个错误,但辨别根源无法确定。
③Unity打包VS部署Hololens2找不到WindowsMobile SDK
具体报错信息“WindowsMobile version 10.0.xxx.0”
这不是Unity的Bug,而是MRTK的问题,主要原因是VS在编译的时候是默认UWP相关SDK在C:\Program Files (x86)\Windows Kits中的
解决方案一:(每次打包都得操作一次)在解决方案资源管理器中找到
[项目]>引用>Windows Mobile(带黄色感叹号)直接右键删掉
解决方案二:(从根源解决问题)把下载的WindowsMobile SDK从下载的目录
[Windows Kit Root Dir]\10\Extension SDKs\WindowsMobile
拷贝到C:\Program Files (x86)\Windows Kits\10\Extension SDKs\
而且这个问题只要官方不修复,按道理说每个人都会遇到,因为Window10SDK不能安装在URL过长的目录下也就是说不能安装到VS编译时的默认目录,所以在问题修复之前HoloLens开发者们只能硬生生踩到这个坑里了。
④关于VuforiaSDK最新版无法导入问题
从 PackageManager 再重新安装一遍 vuforia 旧版本(注意检查,如果有 Assets -> Editor -> Migration 这个目录,那么就删除掉 Migration 这个文件夹)
直接点击Feeds进入下载页面:点击 Download 进行下载。
下载完后解压缩,得到这样一个目录:
把 package 目录下的所有东西进行复制,然后来到我们项目的 Libary -> PackageCache 文件夹下(这个文件夹才是真正存放我们安装的 package 的地方):
打开 vuforia 的包:里面文件的名字和刚才复制的那些文件的名字是一样的。这里直接把这些文件全部删除掉,然后把刚才复制的粘贴进去即可。
这样,Unity从外部看,发现不出任何端倪,Unity 会认为安装的还是旧的版本。而实际上,已经偷梁换柱的把最新的版本成功导入到 Unity 中啦!
PackageManager认为我们安装的是旧的版本
而VuforiaConfig则显示我们已经是最新版本,而且API是可以正常调用的。
4、开发注意点
- Hololens的MRTK可以与高通的Vuforia进行联通使用,但是需要注意的时Vuforia需要最新版本,Package Manage中的版本不适合。同时需先启用Vuforia的ARCamera,再安装MRTK,软件会自动兼容。
- 预设体放置操作界面时,可对其进行解出关联,然后才能自由对里面的脚本对象进行操作,未解绑修改会直接影响预设体的原先内容。
- MRTK中HandConstraintPalmUp脚本可直接对手掌翻转进行操作。需使用手掌时需另外加入SolverHandler脚本。
- 项目开发过程中,更改版本或者新填SDK,要注意版本备份。
- 新填SDK开发,需另外开辟个项目进行试用,运行demo以及烧录到模拟器或者真机中运行测试,测试完毕后才能到项目中进行开发。
三、MRTK常见操作
1、MRTK 支持编辑器中的输入模拟。
单击 Unity 的播放按钮以运行场景,然后使用以下按键来模拟输入:
-
按 W、A、S、D 键可移动相机。
-
在按住鼠标右键的同时移动鼠标可以四处浏览。
-
按空格键(右手)或左 Shift 键(左手)以显示模拟双手
-
按 T 或 Y 键以将模拟双手保持在视野中(按空格键(右手)或左 Shift 键(左手)可自由控制双手)
-
按 Q 或 E(水平)/R 或 F(垂直)来旋转模拟双手
-
按下Ctrl+Shift移动鼠标控制旋转手部关节
2、常用组件
1、附加 ObjectManipulator.cs 和 NearInteractionGrabbable.cs 脚本,使对象可抓取 。
ObjectManipulator 支持近距离和远距离交互。 可以使用 HoloLens 2 的精确手动跟踪输入(近距)、手部射线(远距)、运动控制器光束(远距)、HoloLens 凝视光标和隔空敲击(远距)来抓取和移动对象。
2、 将 BoundsControl.cs 分配到某个对象以使用边界框(用于缩放和旋转对象的界面)。
3、 MRTK按钮使用一个ButtonConfigHelper组件来帮助您更改按钮的图标,文本和标签。
3、MRTK SDK包具体内容
①Microsoft.MixedReality.Toolkit.Unity.Foundation.2.6.1Must
②Microsoft.MixedReality.Toolkit.Unity.Tools.2.6.1Optional
③Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.6.1Optional
④Microsoft.MixedReality.Toolkit.Unity.Extensions.2.6.1Optional
⑤Microsoft.MixedReality.Toolkit.Unity.Examples.2.6.1Optional
四、MRTK概述及架构体系
1、MRTK中主要的系统概述
2、全息远端呈现
1、unity中运行,hololens端展示,同时在unity端可观看到,渲染在hololens本机上。(需要Hololens端安装软件)
2、渲染在PC端,渲染后的数据流传送到Hololens端展示,需要代码实现。
3、BoundsControl(边框控制)
4、ObjectManipulator
5、ConstraintManager
6、Interactable
①交互展示(外观),与ObjectManipulator组件的不同之处是ObjectManipulator侧重于对虚拟对象的操作,而Interactable侧重于交互过程。