基于MRTK_v1的WMR、HoloLens开发实践
什么是MRTK?
MRTK-Unity是一个由Microsoft驱动的项目,提供了一组组件和功能来加速Unity中的跨平台MR应用程序开发。
第一版的MRTK原名叫
HoloToolKit
,后面更名为MRTK,目前已经更新到MRTKv2版,新版支持HoloLens2。本文我将一代MRTK称为MRTK v1。
MRTK v1简述
发布包下载地址: https://github.com/Microsoft/MixedRealityToolkit-Unity/releases
发布包名称: HoloToolkit 2017.4.3.0 - Refresh
发布包说明:此版本针对Unity 2017.x产品
- 支持 HoloLens1 & immersive headsets (混合现实耳机)
- Unity版本:最低-Unity2017.2及以上,推荐-Unity2017.4 LTS(长期支持)
- Visual Studio 2017(15.3或更高版本)
- Win 10 SDK:最低-Windows SDK10.0.16299,推荐-Windows SDK 10.0.17134
- Win10系统版本要求:Windows 10 Fall Creators Update (1709) 或者更新
- 推荐系统版本:Windows 10 April 2018 Update (1803)
导入包并设置
选择菜单栏中的Mixed Reality Toolkit
,分别Apply一下Project和Scene Settings,选项方面保持默认设置即可。
设置完成后,场景结构如下,这里我简单添加了几个物体方便测试。
- MRTK为我们创建了一个相机预制体:
MixedRealityCameraParent
-
查看相机挂载脚本我们可以得知它是能够同时支持
HoloLens
以及WMR头盔
的,也就是我们这个项目能够在HoloLens和微软的VR头盔中运行,MRTK已经帮我们实现了在两种不同设备上的适配。 -
在Inspector可以看到两种不同设备的参数
Opaque-不透明 => 对应的是WMR设备,Quality质量选项被设置为了Ultra最高品质,由于WMR头盔是接在PC上的,性能关键在于PC,因此可以调到最高品质获得更好的显示效果。
Transparent-透明 => 对应的是HoloLens设备,Quality质量选项被设置为了Very Low,由于受限于HoloLens是移动设备,硬件方面相对较弱,因此我们需要牺牲品质,提高帧速率,以保证软件的运行稳定性。
-
在WMR设备中运行测试
前置工作
接上头盔并配对好手柄
相关配置
1.用户高度
这里我创建的Plane
地板坐标为(0,0,0,),因此我们还需要适当调高MixedRealityCameraParent
以确保用户刚好站在地板上,这里我设置为(0,1.7,0),同时地板需要加上碰撞器,我们才能够使用手柄位移。
如果不希望用户能瞬移其它带有碰撞器的物体上的话,勾选上Stay on the floor
选项确保用户保持在地板上。
2.MotionController(手柄)
- 这里我们可以将左右手柄模型替换成刀、枪之类的炫酷模型,通过设置
Alternate Left/Right Controller
属性,同时勾选上Always Use Left/Right Model
。 - 如果不需要的话,最好把MRTK设置的默认备用模型
ControllerRect
去掉,要不然有时候手柄会莫名其妙就变成ControllerRect
方块。
开启抗锯齿优化显示效果
在头盔中测试,可以看到模型边缘锯齿是比较严重的,因此我们需要优化一下。
选中相机,调整相机组件参数,将渲染路径修改为Forward
并勾选上MSAA
,正向渲染才能能够支持MSAA
。
在Quality
设置中,将抗锯齿等级调到最大
再次测试,模型边缘锯齿的问题明显改善
在HoloLens1中运行测试
前置工作
在HoloLens中安装好Holographic Remoting
应用,打开应用并记住显示的IP地址,后面要用到
使用Holographic Emulation测试
在Unity中选择 Window - Holographic Emulation ,输入HoloLens中显示的IP地址
点击Connect后再点击Unity的播放按钮,就可以在HoloLens中看到画面了。
这个功能虽然很方便,但特别地卡,时不时就卡死动不了,实属鸡肋。。。因此基本可以忽略,一般直接打包测试或者使用HoloLens模拟器测试(如果电脑支持的话)
打包
Build Settings
**注意:**这里演示使用的Unity版本是2018.4.1f1,实际应该使用2017.2 - 2017.4.1f1来打包,否则会有问题
Target Device:如果是需要发布到WMR设备上运行则选择PC,反之选择HoloLens
Player Settings
在XR Settings中将Stereo Rendering Mode设置为Single Pass单通道以提高渲染效率
注意:如果是发布到HoloLens,需要勾选上Windows Mixed Reality
中的Enable Depth Buffer Sharing
,图像才不会有抖动的问题。
输出应用程序包
- Build完成后,打开生成好的解决方案,右键解决方案 - 应用商店 - 创建应用程序包
- 选择旁加载包 - 下一步,勾选x86 Release,创建包
安装应用
-
导航到上面应用程序包输出的位置
-
对于WMR设备,双击安装包安装即可
-
对于Hololens设备,我们需要在Windows设备门户中安装,首先要确保HoloLens与使用的PC处于同一局域网内。
然后在浏览器中输入HoloLens设备的IP地址,配对好后就可以进入如下界面为HoloLens安装应用。
我们也可以通过VS将应用部署到HoloLens,记得要设置为Release x86
选择远程计算机,这里手动输入HoloLens设备的IP地址,或者在检测到的设备中选择,等待部署完成就可以在HoloLens中看到安装好的应用了。
References:
HoloToolkit 2017.4.3.0发行信息
Unity 2017 XR 开发技巧