HoloLens 开发总结

目前科技界最感兴趣的设备之一是微软HoloLens。HoloLens背后的技术十分迷人,但也十分复杂。简单来说,它可以被描述为真实世界和虚拟世界的融合,其中来自两个“现实”的对象可以并存,同时可以实时地彼此交互。这种技术被称为“混合现实”。


许多开发者都为HoloLens感到兴奋,即便并没有太多早期用户购买了售价为3000美元的开发者包。好消息是,你其实不需要拥有一台设备就能为其开发内容。借助Universal Windows Platform,你的应用也能运行在HoloLens上。


1. 准备工具、SDK、IDE


从太空探索到建筑、再到游戏和教育,微软HoloLens都被用于革新这些行业,这款产品也已经找到了实际的用例。由于HoloLens使用了相对较新的技术,目前没有太多的工具用于开发混合现实内容。大多数熟悉的开发套件和软件适合在开发全息应用程序时使用。根据Program-Ace,一组最低要求的工具是:


3D设计:Autodesk Maya、3ds Max、Adobe PhotoShop、Substance Painter
动画:Biped for 3ds Max
开发:Unity、Vuforia、Microsoft Visual Studio、Windows 10 SDK、HoloLens Emulator(如果你没有HoloLens设备)


要开发全息体验,开发者必须拥有上述的工具。而这些工具都可以在微软官网上找到。一旦完成了安装和准备环节,你就可以准备开发一款全新的混合现实体验。


2. 设置全息图


当你通过这些3D建模和渲染工具来开发VR应用、游戏或HoloLens体验时,其使用方法仍然一样。不同之处只有当这些三维模型被集成至全息环境中才会出现。


虽然HoloLens所能实现的视觉体验十分惊艳,但开发者仍然需要小心地开发,以避免经常会遇到的现象:眩晕,也被称为晕动症。当用户身处VR环境中可能会出现晕动症,并可能会经历眼睛不适、头痛、恶心、晕眩和迷失方向等等。


在我们的开发过程中,Program-Ace的专家同样面临着相同问题,因为HoloLens应用的构建方式会导致晕动症。这时,近裁剪面(near clip plane)就能派上用场。在使用Unity时,近裁剪面需要设置为不少于0.85m,这十分重要,因为如果比这个数值小,物体就会过于靠近用户的眼睛,使得眼睛变成“斗鸡眼”。


除了会让视觉体验更难处理之外,这还会造成用户严重的不适。全息内容到眼睛的理想距离应该尽可能接近2m,因为这个距离不会出现双眼竞争(binocular rivalry)。


简单来说,投影到透明组合器的左右两块透镜的两张图像将在距离用户2米处完全重叠。在不可能把全息内容放置在推荐距离的情况下,你可以使用最有利的区域:即1.25至5米的范围。


 




开发者还应该注意视觉体验的另一个基本要素:帧率。为了确保HoloLens能实现愉悦和安全的体验,我们主张将帧率设置为每秒30帧以上。


但是,请注意不要偏离推荐值,因为太小的帧速率会导致前面提及的晕眩问题,而因为设备的有限的计算性能限制,系统也不能迅速处理过高的帧速率。


3. 用注视与全息世界交互


追踪用户的注视点对管理虚拟内容十分重要,尤其是HTC Vive和Oculus Rift。


为了实施这项技术,HoloLens会追踪用户头部在空间中的位置,每秒处理一个千兆字节的实时信息。我们可以想象一个涉及多个选择的简单应用程序:例如,一个解释太阳系的标准应用。当用户查看某个行星时,它就会变为高亮显示,并在其旁边显示更多的信息。


在默认情况下,HoloLens中细小半透明圆圈实际上是一个3D光标,会指明用户正在注视的位置。然而,它能够以任何形式呈现,无论是真实还是虚拟。


Unity会帮助开发者以多种方式操纵这个HoloLens特性。例如,已知的“广告牌”技术允许全息图总是面向用户。这对于诸如文本或按钮的UI元素特别有利。此外,开发者可以使用3D光标来吸引用户的注意力,并将其引导至必要的全息图或对象。


4. 用语音与全息世界交互


语音命令是用户与头戴式设备交互的最不寻常的方式。然而,它感觉更自然和直观,并为应用程序导航甚至是设备的UI提供了全新的频谱。Program-Ace专家为此创建了一组规则,开发者在使用Unity编程语音识别时必须遵守这些规则:


语音命令应尽可能保持简短,以简化非母语的发音,不要通过复杂的短语或句子混淆用户。
应在整个应用程序中使用一个预定义的命令来执行类似的操作,例如单击和打开。
通过基于手势的替代方法来复制语音命令,从而提高整体用户体验,并避免发音错误或不清楚的情况。
5. 用手势与全息世界交互


手势是与混合现实世界进行交互的新方式。这种输入方式已经被证明是有用和高效的操作。通过一系列离散和连续的运动,用户可以更轻松地控制HoloLens。


离散手势使用的是即时动作,例如点击图标或打开菜单;而连续手势则包含旋转或滚动。


 




当为HoloLens开发时,你应该确保设备通过突出显示图标、打开应用程序或执行其他适当的操作来迅速响应手势。类似于对用户的注视进行编程,开发者可以加入几行代码来警告用户他或她的手势位于视野之外。


然而,由于混合现实技术尚未成熟,HoloLens存在一定的局限性。例如,手部位置或对象放置并不总是可以被准确地识别。在为HoloLens开发时应该要考虑到这一点,并确保距离偏差不会对应用程序的功能产生重大影响。


使用 Unity 引擎开发 HoloLens 应用是非常容易的事情,大部分流程与开发 UWP 项目并无不同。但仍有不少需要注意的雷区和特殊要求,以下就是部分要注意的部分: 

1. Main Camera 一定要按照官方要求配置,背景纯色且 RGBA 值为(0,0,0,0),这样
才能避免遮挡现实内容; 
2. Gaze 凝视特性需要我们使用 Raycast 来实现,注意处理射线未命中目标情形,默认凝
视最远距离为 15 米,若是未击中物体,使用时可能会出现空引用异常; 
3. 手势识别、拍照和语音命令等均需使用 Windows 特有 API,空间映射和场景匹配需要
使用 HoloLens 特有 API; 
4. 其他很多细节上的体验,例如可视化凝视组件、目标区域可视化指引组件,使用他们来
给用户提示,可以帮助用户理解应用操作方法,提高使用体验。 
最后,AR/MR 技术独特的交互体验与开发特性,代表了未来自


然交互的发展方向,相较于
目前成熟的 VR 技术,它们具有更光明的发展前景和更广阔的用途。无论是微软还是 Magic
Leap,它们无疑会是未来市场的引领者,而目前也是我们学习的黄金阶段,能够迎头赶上这
波浪潮,对于相关从业者具有重要的意义。

你可能感兴趣的:(HoloLens)