游客

微软HoloLens全息程序开发经验及小技巧

游客 2017-01-25 22:26:44    200971 次浏览

目前科技界最感兴趣的设备之一是微软 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全息程序开发经验及小技巧

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

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

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

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

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

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

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

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

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

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

5. 用手势与全息世界交互

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

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

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

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

内容加载中