Augmented Reality 人机界面指南

350 阅读18分钟

Augmented Reality

增强现实(或AR)允许您提供身临其境、引人入胜的体验,将虚拟对象与现实世界无缝融合。使用设备的相机在屏幕上实时呈现物理世界,您的应用程序叠加三维虚拟对象,造成这些对象实际存在的错觉。根据您的应用程序提供的体验,人们可以调整设备方向,从不同角度探索对象,使用手势和动作与对象交互,甚至加入其他人的多用户AR体验。有关开发人员指导,请参阅[ARKit](developer.apple.com/documentati…

**仅在功能强大的设备上提供增强现实功能。**如果您的应用程序的主要用途是AR,请仅将您的应用程序提供给支持ARKit的设备。如果您的应用程序包含需要特定AR功能的功能,或者如果您的应用程序中AR功能是可选的,如果他们试图在不支持他们的设备上使用这些功能,请不要向人们显示错误;相反,只需避免在不受支持的设备上提供该功能。有关开发人员指导,请参阅[验证设备支持和用户权限](developer.apple.com/documentati…

创造引人入胜、舒适的体验

**让人们使用整个显示器。**尽可能多地使用屏幕来显示物理世界和应用程序的虚拟对象。避免用减少身临其境体验的控件和信息凌乱屏幕。

**在放置逼真的物体时,努力说服幻觉。**设计具有逼真纹理的详细3D资产,以创建似乎位于您放置它们的物理环境中的对象。使用ARKit中的信息,您可以正确缩放对象并将其放置在检测到的现实世界表面上,反射环境照明条件并模拟相机颗粒,在现实世界的表面上自上而下的漫射物体阴影,并根据相机位置的变化更新视觉效果。为了帮助避免打破您创建的错觉,请确保您的应用程序每秒更新场景60次,这样对象就不会出现跳跃或闪烁。

**考虑具有反射表面的虚拟物体如何显示环境。**ARKit中的反射是基于相机捕获的环境的近似值。为了帮助保持AR体验真实性的错觉,更喜欢淡化这些近似效果的小或粗糙的反射表面。

**使用音频和触觉来增强沉浸式体验。**声音效果或颠簸感是确认虚拟物体已与物理表面或其他虚拟物体接触的绝佳方式。背景音乐也有助于将人们包裹在虚拟世界中。有关指导,请参阅[音频](developer.apple.com/design/huma…

**在环境中最小化文本。**仅显示人们获得您的应用程序体验所需的信息。

**如果需要其他信息或控件,请考虑在屏幕空间中显示它们。**屏幕空间中的内容在虚拟世界中或不太常见的设备屏幕上显示固定在一致的位置。人们通常很容易在屏幕空间中查找和查看内容,因为当底层AR环境随设备移动时,内容仍然静止不动。

当您需要提供持久性控件时,请考虑使用间接控件。 间接控件不是虚拟环境的一部分——相反,它们是显示在屏幕空间中的2D控件。如果人们需要访问您的应用程序中的持久性控件,请考虑放置控件,这样人们就不必调整他们持有设备的方式来访问它们。此外,考虑在间接控制中使用半透明,以帮助避免阻塞底层场景。例如,Measure应用程序使用屏幕空间来显示半透明和不透明的控件的组合,人们使用这些控件来测量现实世界中的物体。

**注意人们将在各种现实环境中使用您的应用程序。**人们可能会在没有太多活动空间或没有任何大而平坦的表面的地方打开您的应用程序。清楚地向前面的人传达您的应用程序的要求和期望,帮助他们了解他们的物理环境如何影响他们的AR体验。您还可以考虑提供不同的功能集,以便在不同的环境中使用。

**注意人们的舒适。**长时间将设备保持在一定距离或角度可能会很费力。为了帮助避免引起疲劳,请考虑将物体放置在距离内,以减少将设备移近物体的必要性;在游戏中,考虑保持水平短,并与短暂的停机时间混合。

**如果您的应用程序鼓励人们移动,请逐步引入运动。**例如,您可能不想让人们在进入您的AR游戏后立即躲避虚拟射弹。给人们时间适应应用程序中的AR体验,然后逐步鼓励移动。

**注意人们的安全。。**当人们沉浸在增强现实体验中时,他们不一定意识到自己的物理环境,因此进行快速、扫荡或扩张的动作可能是危险的。考虑如何让您的应用程序安全运行;例如,游戏可以避免鼓励大型或突然移动。

使用辅导让人们开始

在人们可以在您的应用程序中享受增强现实体验之前,他们需要以允许ARKit评估周围环境和检测表面的方式移动设备。在iOS 13及更高版本中,您可以使用内置的辅导视图向人们展示在初始化过程中该做什么并提供反馈。您还可以使用辅导视图来帮助人们在AR体验中断后重新初始化AR——这个过程被称为relocalization——例如,人们短暂切换到其他应用程序。有关重新定位的指导,请参阅[处理中断](developer.apple.com/design/huma…

image.png

**当人们使用辅导视图时,隐藏不必要的应用程序用户界面。**默认情况下,当初始化或重新本地化开始时,辅导视图会自动显示,因此您应该准备好隐藏无关的用户界面,以帮助人们专注于辅导视图的说明。

**如有必要,提供定制的辅导体验。**虽然您可以配置系统提供的辅导视图,以帮助人们提供特定信息——例如检测水平或垂直平面——但您可能需要更多信息或使用不同的视觉风格。如果您想设计自定义辅导体验,请使用系统提供的辅导视图作为参考。

帮助人们放置物体

**向人们展示何时定位表面并放置对象。**您可以使用系统提供的辅导视图来帮助人们找到放置物体的水平或垂直平面。ARKit检测到表面后,您的应用程序可以显示自定义视觉指示器,以显示何时可以放置对象。通过将指示器与检测到的表面的平面对齐,您可以帮助人们了解放置的物体在环境中的外观。

developer.apple.com/design/huma…

**当人们放置对象时,立即将该对象集成到AR环境中。**虽然表面检测快速且逐步地提高了准确性,但最好避免在放置对象之前等待更准确的数据。使用可用信息在人们放置对象时立即响应;然后,当表面检测完成后,必要时微妙地细化对象的位置。例如,如果人们将物体放置在检测到表面界限之外,请轻轻地将物体推回表面。有关优化对象位置的开发人员指导,请参阅[ARTrackedRaycast](developer.apple.com/documentati…

**考虑引导人们走向屏幕外虚拟对象。**有时,人们可能很难找到屏幕外放置的对象。在这种情况下,您可以通过提供视觉或听觉线索来帮助人们找到此类对象。例如,如果一个物体在屏幕外左侧,您可以沿着屏幕左侧边缘显示一个指示器,引导人们将相机指向那个方向。

**避免试图将对象与检测到的表面边缘精确对齐。**在AR中,表面边界是随着人们周围环境的进一步分析而变化的近似值。

**纳入飞机分类信息,为对象放置提供信息。**例如,只允许人们将虚拟家具放置在归类为“地板”的飞机上,或要求将飞机归类为“桌子”才能放置虚拟游戏板。

设计直观、令人愉快的对象交互

**允许人们尽可能使用直接操作与对象交互。**与在屏幕空间中使用间接控件相比,当人们可以通过直接触摸屏幕3D对象与它们交互时,它更身临其境和直观。然而,当人们在使用您的应用程序时四处走动时,间接控制可以更好地工作。

image.png

**让人们使用标准、熟悉的手势直接与虚拟对象交互。**例如,考虑支持移动对象的单指拖动手势,以及旋转对象的双指旋转手势。有关指导,请参阅[手势](developer.apple.com/design/huma…

**一般来说,保持互动简单。**触摸手势本质上是二维的,但AR体验涉及现实世界的三维。考虑以下方法来简化用户与虚拟对象的交互。

image.png

**在交互式虚拟对象的合理距离内响应手势。**人们在瞄准小、薄或放置在远处的物体上的特定点时,可能很难精确。当您的应用程序检测到交互式对象附近的手势时,通常最好假设人们想影响该对象。

**当用户发起的对象缩放在您的应用程序中有意义时,请支持它。**例如,如果您的应用程序允许人们探索想象的环境,那么支持对象缩放可能是有意义的,因为您的应用程序不需要代表现实世界。另一方面,如果您的应用程序帮助购物者决定购买家具,那么让人们缩放椅子对象并不能帮助他们想象椅子在房间里的外观。

**警惕潜在的冲突手势。**例如,双指捏合手势类似于双指旋转手势。如果您实现两个类似的手势,请务必测试您的应用程序,并确保它们得到正确解释。

**努力进行与应用程序AR环境物理一致的虚拟对象移动。**人们不一定期望物体在粗糙或不平坦的表面上平稳移动,但他们确实希望物体在移动过程中保持可见。旨在保持移动物体附着在现实世界的表面上,避免导致物体在人们调整大小、旋转或移动时跳跃或消失并重新出现。

**探索更吸引人的互动方法。**手势不是人们在AR中与虚拟对象交互的唯一方式。您的应用程序可以使用其他因素,如运动和距离,使内容栩栩如生。例如,游戏角色可以转过头来看着一个人走向它。

设计出色的多用户体验

当多人共享应用程序的AR体验时,每个参与者将独立映射环境,ARKit会自动合并地图。有关开发人员指导,请参阅[isCollaborationEnabled](developer.apple.com/documentati…

**考虑让人们闭塞。**如果您的应用程序支持将虚拟对象放在出现在设备相机提要中的人后面,请通过让人们遮挡这些对象来增强现实的幻觉。有关开发人员指导,请参阅与人一起包含虚拟内容

**如果可能,让新参与者输入多用户AR体验。**除非您的应用程序要求所有参与者在体验开始前加入,否则请考虑使用隐式地图合并,让新人快速加入正在进行的AR体验。有关开发人员指导,请参阅[isCollaborationEnabled](developer.apple.com/documentati…

对现实世界的物体做出反应

您可以通过在现实世界中使用已知图像和对象来触发虚拟内容的外观来增强AR体验。例如,一个识别科幻电影戏剧海报的应用程序可能导致虚拟宇宙飞船从海报中出现,并在环境中飞行。另一个例子是艺术博物馆的应用程序,当它识别雕塑时,它会显示虚拟导游。为了启用此类体验,您的应用程序提供了一组2D参考图像或3D参考对象,ARKit指示在当前环境中检测任何此类项目的时间和地点。有关开发人员指导,请参阅[在AR体验中识别图像](developer.apple.com/documentati…

**当检测到的图像首次消失时,请考虑推迟删除附加到它的虚拟对象。**ARKit不会跟踪每个检测到图像的位置或方向的变化。为了帮助防止虚拟对象闪烁,请考虑在将其淡出或删除之前等待最多一秒钟。

**限制一次使用的参考图像数量。**当ARKit在现实世界中寻找100个或更少的不同图像时,图像检测性能效果最佳。如果您需要100多个参考图像,您可以根据上下文更改活动参考图像集。例如,博物馆指南应用程序可以请求允许使用定位服务来确定一个人在博物馆的部分,然后只查找该地区显示的图像。

**限制需要准确位置的参考图像数量。**更新参考图像的位置需要更多资源。当图像可能在环境中移动或附加的动画或虚拟对象与图像的大小相比较小时,请使用跟踪图像。

与人沟通

**如果您必须显示教学文本,请使用平易近人术语。**AR是一个高级概念,可能会让一些人感到害怕。为了帮助使其平易近人,请避免使用ARKit、世界检测和跟踪等技术术语。相反,使用大多数人都会理解的友好、对话的术语。

image.png

**在三维上下文中,更喜欢3D提示。**例如,在对象周围放置3D旋转指示器比在2D叠加窗口中显示基于文本的指令更直观。除非人们没有响应上下文提示,否则避免在3D上下文中显示文本叠加提示。

image.png

**使重要文本可读。**使用屏幕空间显示用于关键标签、注释和说明的文本。如果您需要在3D空间中显示文本,请确保文本面向人,并且无论文本与标记对象之间的距离如何,您都使用相同的类型大小。

**如有必要,请提供获取更多信息的方法。**设计一个适合您的应用程序体验的可视化指示器,向人们展示他们可以点击以获取更多信息。

image.png

处理中断

ARKit无法在中断期间跟踪设备的位置和方向,例如当人们短暂切换到另一个应用程序或接听电话时。中断结束后,之前放置的虚拟对象可能会出现在错误的现实世界位置。当您启用重定位时,ARKit会尝试使用新信息将这些虚拟对象恢复到原始现实世界位置。有关开发人员指导,请参阅[管理会话生命周期和跟踪质量](developer.apple.com/documentati…

**考虑使用系统提供的辅导视图来帮助人们重新定位。**在重新定位期间,ARKit试图将其之前的状态与对当前环境的新观察相协调。要启用这些观察,您可以使用辅导视图来帮助人们将设备恢复到之前的位置和方向。

image.png

**考虑在重新定位期间隐藏之前放置的虚拟对象。**为了避免在重新定位期间闪烁或其他令人不快的视觉效果,最好隐藏虚拟对象并将其重新显示在新位置。

**如果您的应用程序同时支持AR和非AR体验,请尽量减少中断。**避免中断的一种方法是将非AR体验嵌入AR体验,以便人们无需退出和重新进入AR即可完成任务。例如,如果您的应用程序通过将物品放入房间来帮助人们决定购买家具,您可以让他们在不离开AR体验的情况下更改室内装潢。

**允许人们取消本地化。**如果人们没有将设备定位和定位在中断前的位置,重新定位将无限期地继续,但没有成功。如果指导人们恢复会话失败,请考虑提供重置按钮或其他方式来重新启动增强现实体验。

**指示前置摄像头何时无法跟踪面部超过半秒钟。**使用视觉指示器指示相机无法再跟踪这个人的脸。在这种情况下,如果您需要提供文本说明,请将其保持在最低水平。

建议解决问题的方法

**如果体验不符合他们的期望,请让人们重置体验。**不要强迫人们等待条件的改善或与对象放置作斗争。给他们一个重新开始的方法,看看他们是否有更好的结果。

image.png

**如果出现问题,建议可能的修复方法。**由于各种原因,对现实世界环境和表面检测的分析可能会失败或花费太长时间——光线不足、表面反射过度、缺乏足够细节的表面或相机运动太多。如果您的应用程序收到这些问题的通知,请使用直截了当、友好的语言来提供解决这些问题的建议。

image.png

AR Glyph

应用可以在启动基于ARKit的体验的控件中显示AR字形。您可以在[资源](developer.apple.com/design/reso…

**按预期使用AR字形。**该字形应严格用于启动基于ARKit的体验。切勿更改字形(调整其大小和颜色除外),将其用于其他目的,或将其与非使用ARKit创建的AR体验一起使用。

**保持最小的空隙。**AR字形周围所需的最小空白空间是字形高度的10%。不要让其他元素侵犯此空间或以任何方式遮挡字形。

AR Badges

包含产品或其他对象集合的应用程序可以使用徽章来识别可以使用ARKit在AR中查看的特定项目。例如,百货公司应用程序可能会使用徽章来标记人们在购买前可以在家中预览的家具。

image.png

**按预期使用AR徽章,不要更改它们。**您可以在[资源](developer.apple.com/design/reso…

**首选AR徽章,而首选仅字形徽章。**一般来说,对于无法容纳AR徽章的受限空间,请使用仅字形徽章。这两个徽章在默认尺寸下都能正常工作。

**仅当您的应用程序包含可以在AR中查看的对象和不能查看的对象的混合时,才使用徽章。**如果您应用程序中的所有对象都可以在AR中查看,那么徽章是多余的。

**保持徽章放置的一致性和清晰性。**徽章显示在物体照片的一角时看起来最好。始终把它放在同一个角落,并确保它足够大,可以清楚地看到(但不要太大,以至于它遮挡了照片中的重要细节)。

**保持最小的空隙。**AR徽章周围所需的最小空白空间是徽章高度的10%。其他元素不应侵犯此空间并以任何方式遮挡徽章。

image.png