之前简单介绍了微软HoloLens混合现实应用开发的开发环境、所需配置、应用的发布等,下面对于均属于混合现实设备的HoloLens以及沉浸式头戴设备二者在开发上的异同点做个简单的比较:
相同点:
首先,由于两个产品都归类于Windows 10 UWP MR的Device Family,所以二者的应用在UWP支持上是差不多的。二者都和普通的UWP应用有一样的生命周期,都支持UWP的一些特点,比如动态磁贴,当然也同时对于一些UWP API都不支持,比如Share Contract等;
其次,二者对于混合现实的特别功能,比如视线(Gaze)、语音(Voice)空间映射(Spatial Mapping)、空间坐标(Spatial Coordinate)和立体声效(Spatial Sound)都是支持的,而且微软确保二者使用的API都一样;
最后一点是,即使二者都可以支持2D View的应用,但二者都以3D图形应用为主,使用相同的开发中间件(比如Unity),相同的优化理念(比如提高程序的帧率、降低DrawCall数)和优化工具,评价应用的好坏的标准类似。最关键的是如此造就了二者对于开发团队的配置要求基本是一样的,一个完善的混合现实开发团队都需要有逻辑程序、图形程序、场景美术、特效美术、音乐、策划等。
不同点:
虽然HoloLens和Immersive Headset属于同一个设备家族,但毕竟是两类设备。设备的差异性势必造成了开发的差异性,这种差异性在微软开发官网上体现地淋漓尽致。大家可以在很多技术文档里看到,官方在讲一个问题的时候,都会列一张表格,一边是HoloLens,另外一边是Immersive Headset,把二者做比较。比如开发环境,比如参照坐标系。此处笔者总结了三个主要的不同点。
1.设备性能不同
HoloLens可以看成是一台能独立运算的手机,而Immersive Headset可以看成是依靠外部PC运算的另外一台显示器。也就是说HoloLens开发类似于手机移动应用的开发,而Immersive Headset的开发相当于桌面应用的开发。这种的差距会在很多方面表现出不同,比如在美术资源的使用以及优化要求, Immersive Headset对比HoloLens会相对高一些。两者优化的方法也会不同,比如 HoloLens 不推荐使用动态光,而Immersive Headset没有这个限制。从另外一个方面来看,HoloLens虽然性能还比不上高端笔记本,但它毕竟是专用设备,而且每一台HoloLens的性能都是一样的。这样当大家都了解设备性能以后反而比较容易开发出好的应用,而Immersive Headset使用PC,这是通用设备。每一台PC的性能都是不同的,这样会造成同一款应用在不同机器上运行的效果不同,这样对于开发团队来说无疑增加了优化和测试的难度。
2.交互方式
HoloLens强调自然交互,也就是用手势、语音来完成大部分的操作。这样不仅要求应用使用支持手势和语音的API,更重要的是从用户体验角度就要对这二种输入做更好的设计,比如让菜单更大更容易被选中,把大部分复杂操作都简化为点击操作等。Immersive Headset 更强调用官方定制的motion controller来操作,同样不仅需要应用对于此设备有一个很好的支持和适配,更重要的是要求能去设计一些发挥motion controller相对精准的操作体验,比如开枪、拾取动作等。
3.设备的定位
HoloLens作为混合现实设备,现实场景就是背景。这样在开发中我们就不能使用天空盒,并且可能需要加入场景扫描模块来确保现实场景变化后的更新,加入稳定面来处理图像漂移问题,甚至可能还需要使用类似于Vuforia这样的SDK来实现和发挥AR的功能。而Immersive Headset更偏向于VR,它的背景就是虚拟场景。开发Immersive Headset应用需要考虑的是沉浸感,比如可以让近裁面更近一些。当然更需要使用各种手段来降低眩晕,确保用户能较长时间沉浸在应用里。
总而言之,此二类设备的开发在整体上是类似的,而在具体开发的细节上又是截然不同的。