骑着Unity路过的风景-MR开发
前言
若不是你突然闯进我生活,我怎会把死守的Unity放任了
耳机刚好听到这首歌,那就拿来作为引言好了!
年前机缘巧合下接到了MR开发的项目,
(虽然大伙儿都觉得这个是AR,但是干下来发现这明明是MR)
年后这几天差不多结束了MR的开发,谨以此文记录这几个月趟过的坑。
本文仍以结果为导向,叙述从零到壹的MR开发历程。
一、万物之初
“我们除了PC的3D展示,还需要有一个AR展示版本,让客户更加直观、深刻地理解我们的产品”,AR项目应运而生。
但是这个项目真的是MR啊喂!
0.扫盲
AR(增强现实):在物理世界中叠加图形、视频流或全息影像。(用户会认为自己仍然处于物理现实,因为此时仅仅是在原有物体上叠加了图形)
VR(虚拟现实):遮挡视线以呈现全沉浸式数字体验。(用户将完全体验数字现实,并不会意识到周围的物理现实,欸嘿,因为眼睛被挡住了,看不到外界)
MR(混合现实):在AR与VR之间,它可以在物理世界中放置一个数字对象,就如同它真实存在一样;它可以在物理世界中以个人的数字形式(虚拟形象)出现,以在不同的时间点与他人异步协作。(融合了真实世界和数字世界,数字世界的内容可以与真实世界的物体进行互动,简单来说,就类似于钢铁侠中的全息投影技术)
1.前期准备
调研了各大厂商的AR头戴式设备,寻找了几家AR设备厂商,经过现场沟通交流、实机演示之后,最终选择了微软的Hololens2头戴式设备。经过讨论之后,AR产品有了雏形:使用Unity开发3D展示软件,并且分别发布到Hololens2和iPad上,实现Hololens2与iPad的双机协同。在演示时主要由Hololens2佩戴成员进行场景控制,由iPad操作人员投屏,并以第三人称视角多角度观看产品动画,讲解产品功能。
人员配置:
3D建模人员,Unity3D开发人员。
资源配置:
Hololens2头戴式眼镜,iPad Pro,Mac笔记本(用于ios发布),若干台式机,若干屏幕(多屏办公真的疯狂提升开发效率好吗!)
2.软件开发
本小节不会详细讲述场景相关开发,因为那和Unity本身的开发极为相似。
本小节将主要讲述与MR开发相关的内容,比如人机交互的开发、连接多个用户、与多个用户共享对象运动等内容,这些内容都可以在微软官网查看更为详细的开发流程。
2.1 开发前置条件
以下是我的低配硬件条件,比这个高应该都没问题
系统:Windows 10
CPU:i5
显卡:GTX 1050ti
Unity版本:2020.3.27f1c1 (低于这个版本无法使用OpenXR框架)
VS版本:VS2019,需装有“通用Windows平台开发”
2.2 MRTK工具包下载
微软为Hololens的开发推出了MRTK工具包,该工具包为Hololens开发者提供了极大的便利,就好比一开始开发者需要自己造建筑材料,而微软直接丢给开发者一堆乐高,让开发者自己拼,极大的降低了AR开发门槛。当然,一些定制化的功能开发还是需要自己做的。
下载完成后,解压,得到如下文件:
2.3 MRTK的配置
2.3.1 新建一个项目
在为我们的MR项目配置MRTK之前,我们得先建立一个Unity的项目(我仿佛说了什么废话)
建立Unity的项目此处就不过多赘述,就正常建立一个3D项目就可以。
当我们建立好Unity项目后,先切换到UWP平台:
如果此处没有UWP平台,就点击“Install with Unity Hub”下载平台,下载完成后切换到UWP平台,待切换完成后,继续后续操作。(UWP的相关设置在后续Hololens2部署一节中会讲到,此处就把UWP平台下载并切换即可)
2.3.2 将MRTK配置到项目中
双击之前下载好的MRTK工具包中的“MixedRealityFeatureTool.exe”可执行文件。
点击左下角设置按钮,
选择“Feature”标签页,将“Show preview releases”勾选上后,点击“OK”。
接着回到刚才的主页面,点击“Start”进行下一步。
点击下图箭头所指的图标,接着选择需要添加MRTK工具包的项目文件(.sln)所在路径,选择完成后,点击“Discover Features”进入下一步。
分别点开下图所示内容,
选定如下所示内容,
选择完成后,点击“Get Features”,对所选功能进行获取,待获取完成后,点击“Validate”对获取的文件进行一次验证。
合法性验证通过后,点击“Import”,再点“Approve”,最后点击“Exit”,回到Unity,等待文件载入后,即可完成MRTK工具包的初步配置。
2.3.3在项目中进一步配置MRTK
初步配置完成后,Unity顶部菜单栏会多一项“Mixed Reality”,
选择“Mixed Reality”>“ToolKit”>“Utilities”>“Configure Project for MRTK”
点击后会出现下图的配置界面,此时并不能完整看到界面内容,需要拖动右侧(或者右下,怎么方便怎么来),使整个窗体显示出来。(真离谱嗷)
下图为窗口拖动后的全貌,选择“Unity OpenXR plugin(recommended)”,
(注意:Unity 2020.3.27以下的版本可能不支持该框架,此处选用该框架是为了后续更加方便的进行空间位置的配置)
选择完成后,出现如下内容,继续选择下图红框内容
如下图所示勾选对应的内容,开放相关功能,
接着对OpenXR相关内容进行配置,配置完成后关闭当前配置窗口,在“MRTK Project Configurator”窗口中点击“Next”
接着将所有的可勾选框勾选上,再点击“Apply”,Unity会自动重启,重启完成后,就完成了MRTK工具包的所有配置。
在下一小节我们将开始建立一个简单的Demo程序,该程序将实现我们与小方块的初步交互。
2.4 简单的Demo开发
Demo目标:在Hololens2眼镜下,实现简单的人机交互(可以手动拖动、放大、缩小、旋转一个Cube方块)
2.4.1新建场景
*注:其实不新建,就用当前默认生成的场景也行。
在Unity菜单中,选择“文件”>“新建场景”,
在“新建场景”窗口中,选择“基本(内置)”,然后单击“创建”,创建一个新的场景,
接着在Unity菜单中,选择“混合现实”>“工具包”>“添加到场景并配置…”,将MRTK工具包添加到当前场景,
并在“层次结构”窗体中,单击“MixedRealityToolkit”,再在“检查器”窗口,看一看它的配置文件是否设置为“DefaultMixedRealityToolkitConfigurationProfile”,
然后保存。
2.4.2配置一个可交互的Cube
在场景中添加一个Cube,然后手动将它托到摄像机视野前方,大概0.2m的距离,再把Cube的大小缩小一些,因为1x1x1的立方体在现实生活中看着还挺大的,我们希望得到一个手掌大小的立方块。
(因为在Hololens眼镜中,用户的出生位置在(0,0,0),如果立方块放在这个位置,用户就需要移动才能看到了)
如果懒得手动拖,就给Cube设置一个固定的值吧,给大伙儿一个参考值:
位置:X= 0, Y = -0.1,Z = 0.5
旋转:X=0, Y=0, Z=0
缩放:X=0.1, Y=0.1, Z=0.1
接着我们可以为这个Cube添加相关组件(这些组件都是MRTK提供给开发人员的),
一个能被手交互、抓取的对象,必须有以下组件:
①碰撞器;②Interactable;③NearInteractionGrabbable;
现在让我们来依次为Cube添加这些组件
此时我们单击“播放”按钮,在Unity编辑器内就已经可以初步体验人机交互了,
(摁住鼠标右键并滑动鼠标可以控制视角,将视野中心的原点移动到物体上时,长摁鼠标左键,可以移动该物体;“t”键可以呼出左手,并且通过摁住“Shift”控制左手的移动,“y”键可以呼出右手,并且通过摁住“Space”控制右手移动,两只手的点击都是通过鼠标左键触发)
至此,你已经学会了建立简单的可交互的对象,
你可以移步“3.1Hololens部署”进行该Demo的实机部署,并同过Hololens进行体验。
2.5 MRTK基础功能
本小节主要介绍常用的一些MRTK内置的功能,如需查看所有的MRTK功能,可以到微软查看。
2.5.1 输入系统
2.5.2 手部跟踪
2.5.3 眼动跟踪
2.5.4 配置文件
2.5.5 UI控件
2.5.6 求解器
2.6 第三人称视角开发
2.6.1 设置PUN(Photon Unity Networking)
2.6.2 连接多个用户
2.6.3 与多个用户共享运动
2.6.4 将Azure空间定位点集成到共享体验中
3.软件部署
3.1 Hololens2部署
完成所有的Unity开发、测试后,就可以生成当前的项目,在生成之前,记得做如下配置:
配置完成后,点击生成,等待生成完成。
待生成完成后,进入生成后的文件夹,点击文件夹下的“.sln”文件,使用VS2019打开。
打开该项目的属性,如下图所示
接着配置对应的属性,其中第4步的ip填写Hololens2的主机ip,关于Hololens2的ip怎么获取,请在Hololens2语音开启时,对Hololens说“我的ip是什么”,发音标准的情况下,Hololens会弹窗告诉你它的ip,填上即可。
上述内容全都配置完成后,就可以部署解决方案了,如下图所示(Hololens2需要打开开发者模式,并且通过USB连接PC)
如果该电脑是第一次和Hololens链接,在该项目生成完成后,会向用户索取密钥,该密钥戴上Hololens设备就可以看到,将该密码输入即可继续部署。
部署完成后,就可以在Hololens中找到对应的App,打开后就可以体验你的软件了。