如何在HoloLens上用Unity开发应用和游戏?

发表于2017-05-19
评论0 4k浏览

5月11日-13日,Unite 2017 Shanghai在国际会议中心召开,本次会议汇聚了来自全球的Unity开发者,包含游戏、教育、行业应用等多个领域,共4000多人报名参加了此次大会。


会上,微软总部Visual C++项目经理陆榕、微软(中国)有限公司技术顾问梅颖广,分享了《基于Windows MR平台和Unity引擎打造混合现实的极致体验》。




以下是VR陀螺对演讲内容进行的整理(有删减)。

 

我叫梅颖广,是微软中国有限公司的开发技术顾问,目前主要是负责混合现实这一块儿的技术。


首先由我给大家介绍一下什么是Microsoft的混合现实。第二部分给大家介绍如何在微软混合现实的第一款标杆性的产品Hololens上用Unity进行开发应用和游戏。


我们平时所处的环境中存在着二种世界,第一类是真实的世界。第二类通过3D软件构建的虚拟数字化世界。但两类世界很难融合,针对这种的情况,微软推出了混合现实的概念,最重要的目的是在一定程度上拉近物理世界和数字化的虚拟世界,使两者之间能够产生一定的重合,而中间重合的部分就是混合现实的部分。真实世界的物体和数字化的渲染物体做到了真正的混合。而这样的境界就是微软所说的混合现实的世界。

  

从产品的角度,微软趋向于两类产品,一类是全息设备,更多强调的是从真实的世界当中混合来自于数字化世界的物体,微软推出的Hololens就是定位在此类设备。


另一类是从虚拟的世界当中混入来自于真实世界的物体,这样的设备在微软的混合现实设备里面称之为沉浸感的设备。对于此类产品从微软的角度是倾向于和第三方合作,目前有6家厂商宣布支持微软混合现实的沉浸感设备的开发。


不过这两类设备都是符合混合现实的设备,它有二个特点:首先是设备可以把真实的物体和数字化的物体做一定程度的混合,达到以假乱真的程度;第二是,设备使用的由内至外的对环境的感知能力。 


首先Hololens是手机性能设备,我知道不少开发者都是把PC VR的场景上直接移植到Hololens上,这个是不合适的。因为Hololens的渲染性跟手机差不多。同时它又是一台具有独立运算能力的设备,它有自己独立的GPU、CPU、内存。佩戴HoloLens可以非常自由的移动,背后没有多余的电缆。所以如果做Hololens的开发的话一定要使用它自动移动的特点而避免对于渲染要求高的场合。


HoloLens又是接近真实世界的AR类的设备,所以需要比较强的沉浸感的应用并不适合于Hololens。大家在设计游戏、应用的时候一定要记住Hololens在产品当中的定位。


下边给大家简单介绍一下Hololens的开发过程


首先给大家介绍一下开发环境,Hololens也是属于Win10通用应用家族的一员。对于Hololens的开发毋庸置疑是Win10的开发,大家从开发环境上可以看出要装Win10的SDK,从开发工具上来说推荐大家使用新一代的集成编译环境Visual Studio 2017。


当然你需要去购买Hololens设备。不管有没有设备,都要向大家推荐安装Hololens的模拟器。对于第三方的开发插件来说,我们是推荐大家使用Unity。从5.5版本开始,Unity已经把Hololens列入到正式版本当中。


除了Unity以外还可以安装Vuforia。Vuforia从6.1版本开始支持Hololens平台。大家如果希望在Hololens上实现手机AR的功能,大家可以直接使用Vuforia6.1的版本来开发。


使用Hololens开发大概会遇到哪些问题?它的开发包括了哪些部分?


一般来说一个Hololens的程序会包含材质、模型、贴图、脚本等。一个3D的图形程序不外乎也是这样几个部分,这跟普通的3D程序没有什么区别。


因为Hololens设备的特殊性,有六样东西是需要大家做特殊的处理的,前面三个是跟Hololens独特的输入相关的。在Hololens的应用程序中需要去处理凝视操作、手势操作、语音输入。另外三个是跟空间感知相关的,你需要去识别空间锚标的位置、去处理空间映射、空间声音。


这六部分是Hololens程序跟其他程序所不同的部分。中间这六块内容是HoloToolkit。这是微软为了方便大家开发Hololens应用而开源的Unity插件。大家可以到微软官方的开源网址上找到并且下载下来。可以直接使用HoloToolkit来开发HoloLens应用。


重点说一下用Unity开发Hololens。开发的过程和开发3D应用区别不是太大,需要注意的是有一些具体设置。


近裁面是0.85,为什么要做这样的设计呢?普通的是0.3米,Hololens推荐大家是设置为0.85。原因是由于Hololens有一个最基本的动作,Airtap。大家可以看一下手臂抬起来从肩到前方大约就是0.85的长度,所以建议不要把画面呈现在手指的近处,这样看上去效果不是太好。


Hololens是一个手机性能设备,渲染能力不是太强,所以在Unity里面建议大家把工程质量选项目设置成最快。还需要设置Win10的Capability选项。上方是构建选项,这跟普通的Windows 10的选项是一样的。下方有一个叫UWP Build Type,在这里推荐大家使用D3D,一般来说Hololens里面不会整合Windows 10的控件,所以大家直接选D3D,保证它的渲染效果是最好。


因为我接触Hololens的开发者比较多,所以大家对Hololens的开发提出过不少问题,其中比较尖锐的就两个问题。


第一个问题是性能问题,也就是性能不足的问题,Hololens不足以支撑非常复杂的3D图形的渲染,这里给大家提供一个叫Simplygon的软件。


这个工具最主要的功能是能够帮你自动地生成LOD的模型以及做材质的整合。而且它不管是虚幻还是Unity都整合的非常好。如果你不喜欢它内制的一些设定,它也提供了非常丰富的API给大家做定制。


使用Simplygon有两种方式,一种是到官网上下载,另一种是直接到Unity的插件商店里面搜Simplygon下载就可以了。


第二个问题是定位漂移的问题。Hololens是通过激光束定位的,所以它有时候会受光线的影响,光线不同的话,放的空间的锚标在位置上会有偏移。


如何解决物体在Hololens里面会产生漂移的问题呢?大家可以发挥一下Vuforia的功能。如果我要定位某项物体的话,可以在实物的物品上放一些非常简单的特殊图片,利用Vuforia这个工具,在Hololens里扫描特别的图片以后,通过Vuforia可以把物体非常好地定位在原来的地方,避免物体在Hololens里面产生漂移的状态。


流程是这样,第一把Vuforia和Hololens的主场景进行关联。下面有一个配置选项。Vuforia从6.1版本开始有专门针对Hololens的配置,所以在这边选择Hololens,就做这样两步就OK了,最后把Extended Tracking勾选一下,选的作用是可以把Vuforia里面对物体定位的三维坐标数据和Hololens的空间坐标系数据自动关联起来。

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