“零成本”的手机MR应用开发

发表于2016-11-15
评论5 2.93w浏览
  作者:薛冰洁
  说起混合现实(Mixed Reality,MR),多数人第一反应就是类似Hololens或Magic Leap的黑科技。MR作为一项结合真实和虚拟世界并能实时交互的技术,集VR和AR的优点于一身,让用户看到真实世界的同时也能看到可信的虚拟物体(类似VR),并把虚拟物体固定在真实空间当中(类似AR),带来真实感和沉浸感。

左:Hololens游戏场景                       右:Magic Leap的演示效果

  如此黑科技,成本自然不低。能在自家墙上打外星人的HoloLens售价3000美元,远超消费者承受能力;Magic Leap更是神龙见首不见尾,仅仅通过偶尔发布视频撩拨受众,其性能参数价格全部保持神秘。
  这么看来,似乎MR离我们还非常遥远。但类比VR从高价头显设备逐渐向低廉移动端转移的现象,开发者不禁要问,MR是不是也有相似的开发平台实现低成本的混合现实?答案是肯定的。简单来说,MR是类似于AR和VR的结合,如果从这个角度出发,利用移动端是可以呈现简单混合现实的。今天,我们就探寻一下如何开发一款零成本的MR移动端的应用程序及其用途。

零成本的移动端MR

软件/插件清单

Unity3D(建议版本在5.2.4或以上),Vuforia SDK for UnityGoogle VR SDK for Unity

硬件/配件清单

手机(AndroidiOS),移动端VR眼镜(Google Cardboard或相似设备)

  我们将开发一个基于Unity3D的手机应用,Unity需要有导出Android或者iOS的平台,所用到的SDK都有免费版本供开发者使用的,硬件也只需一部日常手机和一台移动端VR眼镜。需要注意的是,VR眼镜一定要保证手机可以露出后置摄像头,如果你的Google Cardboard刚好挡住了手机的后置摄像头,需DIY一个洞。

基于Vuforia的AR开发
  Vuforia是一款非常强大的AR开发工具,可以将任意图片转换为一个AR标记,并生成插件来支持Unity中的AR开发。Vuforia刚刚宣布和Unity达成官方合作关系,从2017年春Unity将会自带Vuforia功能,但目前我们还是得先去Vuforia Developer官网(https://developer.vuforia.com/)注册和下载SDK。
  在Vuforia Developer官网的Develop版面下的License Manager里,我们需要先注册一个注册码,这个注册码我们在后面的Unity开发中会用到。用户可以免费获得一个类型为“Develop”的注册码,但是在之后的Unity开发中会看到摄像机中带有Vuforia的水印;如果想要去除水印,可以申请Consumer类型中的付费注册码。

创建Vuforia注册码流程

  之后,我们需要开始制作AR标记。同样在Develop版面下,进入Target Manager子菜单,根据所要制作的应用程序,点击Add Database后选择Device类型,之后点击Add Target,可以看到下图中所示的AR标记生成菜单。选择Single Image,然后加载自己想要做成AR标记的图片即可。加载后,Vuforia会对上传的图片做一个AR标记可行性的评分,在Rating中以一颗星到五颗星显示,星级越高表示图片内容越容易定位,所开发的程序定位稳定性也就越高。最后,别忘了下载生成的Unity平台文件。

创建Vuforia AR标记流程

基于Unity的AR+VR开发
  接下来,开始进入Unity开发。我们将使用Vuforia官网中的Digital Eyewear作为原型来开发这个项目,所以请先下载DigitalEyewear的Unity部分(https://developer.vuforia.com/downloads/samples)。Digital Eyewear的Unity部分不仅包含了Vuforia SDK,还包括了几个Demo场景供开发者学习和扩展。下载后在Unity中创建新的Project并导入。
  此后,我们先建立一个新的场景,并删除主摄像机。已导入的SDK中包含了ARCamera的预设,将其添加入场景,在ARCamera的Vuforia Bahaviour脚本中,可以看到App License Key部分是空的,这就需要把刚刚在VuforiaDeveloper官网创建的注册码粘贴过来(如下图)。


  之后,开始制作AR Image Target。导入刚刚制作并下载的AR标记的Unitypackage后,我们需要找到SDK中自带的ImageTarget预设并拖入场景,在Image Target Behaviour中选择刚刚加载的AR标记,同时,如下图所示,在AR Camera的Database Load Behaviour中加载相同的AR标记。


  接下来,导入模型动画和材质,在场景中移动位置调整大小,并加入灯光等元素,我们就完成了一个AR场景建立。此时进行预览,我们已经可以利用AR标记来定位展示模型动画了。

AR预览图

  当然,这只是一个传统AR场景的实现。如果想要实现MR,即通过头戴式的VR来观看手机摄像拍到真实环境,并叠加双眼AR定位展示的三维虚拟画面,我们还需要多走一步:使用旧版本的Vuforia SDK,需要再导入Google Cardboard SDK并且做复杂的程序改动(具体流程参照https://library.vuforia.com/articles/Solution/Integrating-Cardboard-to-the-ARVR-Sample),但是新版Vuforia 5.5已经自带Google VR功能支持了,使整个开发流程变得非常简单,只需要在ARCamera的Digital Eyewear Behaviour中设置如下参数即可:
●       Eyewear Type = Video See-Through
●       Stereo Camera Config = Vuforia
●       Viewer Type =Generic Cardboard (Vuforia) 或 Cardboard v1 (Google)

双眼AR预览图

AR与VR的无缝连接
  实现双眼AR场景后,我们可以再加深一步,通过AR场景切换至VR场景,即把摄像机移至场景内部,让用户可以在VR头显中360°观看场景。实现起来很简单,我们只需要创建一个空物体并加载TransitionManager脚本,这个脚本是Vuforia DigitalEyeware自带的,已经定义了AR和VR模式,可以自由在几种模式中切换。但有三点需要注意:
●      在VR模式中,我们需要显示天空、地面等在AR中不需要显示的场景物体,以营造沉浸感。只需要把这些物体定义拖拽到Transition Manager中的VR only objects即可。同理,也可以选择定义AR only objects。
●      另外,想要在AR和VR模式中切换,我们需要定义切换UI。与传统AR不同的是,用户需要在头显设备中选择按钮,所以UI的设计和VR中更相似:在ARCamera中设置一个跟随视线的标线,并利用Raycast来实现按钮的选择。
●      在AR模式中,摄像机是根据AR标记的位置确定的,摄像机是悬浮在场景物体之上的,但在VR模式中,我们需要摄像机位置固定于场景内部的预设的某一点,用户可以在固定位置360°全景观看。所以在转换模式时,我们需要重置摄像机位置。
  完成以上三点后,只需导出iOS或Android的应用程序,就可以在手机上使用了。程序会自动调用手机后置摄像头来呈现双眼AR效果,也就是我们需要VR眼镜露出手机后置摄像头的原因。


简单手机MR技术的用途
  作为开发者,除了“这个APP好酷”之外,我们当然更关心一个简单MR手机程序的实用性。笔者认为,这项技术加上好的创意,不仅可以加速推广VR和AR,也可以将产品或流程展示推上一个新高峰。例如,类似的技术可以实现一款创意的广告:试想,一份大街上随手发的房地产广告都可以是一个AR标记,房产买家可以用手机双眼AR在这份纸质广告上看到小区的虚拟全景,更可以一键进入VR模式360°观看房屋的内部结构和装修风格。再比如,手机MR技术可以应用为机器操作或产品组装的教程:利用Vuforia的物体AR标记来用虚拟画面一步一步指导头戴手机头显的操作者进行组装,从此告别枯燥无趣的说明书。
  说了这么多,相信你也一定有很多关于手机MR的创意想法,快开始着手利用这套零成本手机MR进行开发吧!

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引