本文提及的 Qualcomm 产品由 Qualcomm Technologies, Inc. 和/或其子公司提供。
在维基百科中,增强现实 (AR) 的定义包括“感官模式”和“体感”等术语,但千万不要被这些术语吓住了。AR开发实际上可以归结为几个基础模块,如实时视频捕获、渲染、传感器、某种形式的输入以及将这些联系到一起的代码。
下面我们回顾一些基本知识,帮助您尽快入门。
锚点和场景
许多AR应用程序都有一个共同特征,即用户可以移动和放置虚拟对象。这就涉及到锚点即元数据的使用,这些元数据存储虚拟对象相对应的真实世界的位置和方向,并且通常在不同的会话之间持续保留。例如,在某个会话中放置在某一位置的虚拟物体在随后的会话中应该是可见的,即使是从不同的位置或方向观看。
同样,可追踪对象 (trackable) 是一个点或平面,锚点可以附接到上面。例如,与动态环境中的移动表面相关联的可追踪对象会使所有锚定对象相应地重新定位/调整方向。
场景(又称环境)理解是 AR 的另一个基本概念,涉及到分析用户的物理环境,以创建将虚拟世界映射到现实世界的数字双胞胎。它使对象能够锚定在空间中,用户可以在对象周围移动,如同这些对象是真实存在的一样。它也确定了设备(智能手机或头戴式设备)相对于环境的位置/方向。应用程序可以对周围环境执行一次分析(例如,在启动过程中确定有限区域时),或在用户的操纵过程中,持续建立及持久保存场景信息。
理解场景主要有两种方法:
- 基于标记的方法,识别摄像头捕获的视觉特征或标记。通常采用图像处理算法和计算机视觉技术来检测特征,如对象的角或边缘。
- 基于无标记的方法,使用 IMU 数据,如指南针、加速度计、陀螺仪或GPS。通常将这些传感器数据进行融合,并通过高级API构造提供给应用开发者。
开发者经常混合使用这两种方法,可以提供更丰富的信息或找到缺失的信息。例如,当GPS不可用时,传感器和视觉数据可根据最后已知的GPS位置推断出设备的大致位置。
与场景理解相关的是深度理解(又称深度估计),可以获得场景中的特征或对象的距离。有了这些信息,虚拟对象就可以与环境互动(例如,防止用户将虚拟对象推着穿过物理墙)。此外,还有利于遮挡计算(物理对象可以覆盖虚拟对象)。
关键的AR开发技能
AR融合了渲染知识、艺术资产创建和 UI/UX 设计。
在渲染方面,AR开发需要了解以下知识:
- 在3D空间工作,包括三维数学,如向量和矩阵。
- 图形管道,将艺术软件包中的资产转换为针对特定平台优化的格式。开发这些工具通常需要目标平台的第一手知识,通常通过平台文档获取(例如,我们的Qualcomm Adreno GPU SDK文档描述了我们的GPU架构)。
- 着色器,实现特殊的效果。
- 场景管理,仅加载/渲染当前视口所需的场景(即用户的2D屏幕或沉浸式头戴设备提供的视场)。
您还应该熟悉基于帧的实时软件架构。例如,一个典型的游戏循环获取用户输入,根据输入更新游戏逻辑,然后进行相应地渲染。而一个 AR 循环增加了传感器输入,并且在更新和渲染阶段考虑真实世界的环境。
实时架构需要实时调试技术。远程调试允许AR视口在设备上保持可见,为代码、断点等保留开发机器。临时调试叠加层也可用于显示当前场景中从帧速率到对象名称的所有内容。
艺术资产注意事项
艺术资产提供 AR 视觉效果,因此,需要熟练掌握2D和3D图形的艺术家加入团队。比如,角色建模师和动画师、对象建模师、UI 设计师和纹理艺术家。
2D 艺术资产可以包括用于标牌、信息板、虚拟UI、以及固定于屏幕的平视显示器 (HUD)的图像和纹理。纹理也用于粒子系统等效果(例如,水效应、烟雾等)。
3D艺术资产包括增强周围环境的对象、角色和环境模型。可以创建模型装备,形成程序性动画或使用动画数据流。
以下是创建艺术资产的部分一般考虑因素:
- 检查虚拟对象在AR中的外观。由于这些对象被渲染到物理世界中,因此,其尺寸应适合周围的环境。Google的这篇文章讨论了将对象大小调整到与其环境相适应的必要性。
- 运用多个级别的细节来平衡性能和真实性。当需要额外的渲染负荷来显示特写对象的细节时,可以使用复杂的模型和详细的纹理。当用户离开时,切换到较不详细的模型以减少渲染负载。
- 考虑添加基于物理的渲染(PBR)。基于物理的渲染模拟光线在不同材料上的反射,如同在现实世界中一样。这样提高了真实性,有助于虚拟对象融入现实世界中。
UI和UX注意事项
今天的2D移动应用中使用的许多手势(例如,点击选择对象,滑动移动对象,以及捏住对象以调整大小)通常都能很好地转化成AR交互动作,因此移动应用开发者在这一部分会倍感轻松。Google的这篇文章很好地概述了AR中的手势,而这篇Wikitude博客文章为开发者提供了一些关于如何应用UX设计的信息。除了在触摸屏(如智能手机)上实现这些手势外,开发者还可以通过手部追踪来实现这些手势,即使用头戴式设备的摄像头或传感器来捕捉用户的手和手指的运动。请参阅“手部跟踪技术进入全新的时代”这篇文章,其中有更详细的讨论。
永远记住,安全第一!与标准应用程序相比,AR体验更具沉浸感,用户互动时可能会忽略周围环境,甚至会产生晕动症。为防止发生这种情况,需提醒用户留意周围环境,避免要求他们后退。此外,还要限制AR会话时间,以便用户重新返回现实世界,但仍能轻松地在相同状态下恢复会话。有关更多技巧,可查阅我们关于晕动症的电子书。
硬件
如今的智能手机、平板电脑和头戴式设备均配备了高分辨率摄像头和智能传感器。有一些还包括5G毫米波等技术,实现低延迟云连接,这样,开发者就可以确定在哪里最适合进行重度处理。
这些技术是我们 骁龙移动平台的核心,现在许多移动设备和AR体验均搭载了该平台。可以选择智能手机上的 AR,比如摩托罗拉edge+,方便您开启AR开发之旅。也可以使用头显,如联想 ThinkReality A3,以获得更具沉浸感的AR开发体验。
您希望创建什么样的体验?
AR应用跨越许多垂直领域,包括游戏、医疗卫生、技术支持、制造业等。虽然AR头显可以很快带来更具沉浸式的体验,但我们认为,目前,理想的消费级移动AR应用应该能增强日常生活体验。其中一些大家可能已经很熟悉了。
例如,许多人依靠实时OCR文本翻译叠加到现实世界的物体上(例如,产品的外语标签)。在远程协助用户修复物品时,对象在用户视口突出显示,渲染的视图与远程支持人员共享,在所见即所得的基础上提供远程协助。如果您迷路了,AR可以在设备摄像头中叠加方向箭头,以帮助您导航。
今天就开始开发AR项目
我们全新的骁龙 Spaces平台提供了打造沉浸式AR体验所需的各种工具。骁龙Spaces HDK包含摩托罗拉edge+智能手机和联想ThinkReality A3智能眼镜。查看我们的快速入门指南,下载我们的骁龙Spaces SDK。然后,您可以开始使用集成Unity或Unreal引擎的SDK ,实现并应用本文中列出的一些结构和创意。
还有其他一些工具和框架可用于构建AR体验,包括:
- Google ARCore,用于开发Android设备端AR应用的API。下载免费的ARCore Elements应用,看看有什么可能。
- Unity的XR交互工具包和MARS是用于可视化AR开发的工具。
- OpenXR是一个开放式AR API标准,有几种针对不同设备的实现方式。骁龙 Spaces提供了一个兼容OpenXR的运行时和各种OpenXR扩展
- 如需了解功能强大的手持增强现实应用程序,可以尝试一下 Wikitude SDK。
- 我们的Qualcomm 计算机视觉 SDK可用于AR手势检测和计算机视觉功能。
随着AR在移动领域的快速增长,现在是进入AR开发的最佳时机。乘着行业的发展的东风,通过学习和了解其中一些技能打好基础,在移动设备和头显上开发更复杂的AR体验。
骁龙、Qualcomm Adreno、QUalcomm 计算机视觉SDK 和骁龙 Spaces是 Qualcomm Technologies, Inc 和/或其子公司的产品。
