苹果WWDC 2022更新分享:基于ARKit的AR开发设计指南
通过ARKit来开发增强现实体验的基础技巧介绍版面
(映维网Nweon 2022年07月05日)能够结合虚拟和现实的AR增强现实正在成为下一个重要的技术方向,而Meta、微软和谷歌等科技巨头都在积极探索这一领域。苹果同样不例外。苹果的ARKit允许开发者为iPhone或iPad开发AR体验。在开发者官网,这家公司专门提供了一个关于通过ARKit来开发增强现实体验的基础技巧介绍版面。下面映维网对其进行了整理编辑:
AR/增强现实能够允许你将虚拟对象与现实世界无缝融合,从而提供身临其境,引人入胜的体验。
使用设备的摄像头在屏幕实时呈现物理世界,你的应用程序可以叠加三维虚拟对象,产生它们实际存在的错觉。根据应用提供的体验,用户可以重新定位设备,从不同角度探索对象,使用手势和动作与对象交互,甚至加入其他人的多用户AR体验。有关开发者指南,请参阅ARKit。
仅在兼容设备提供AR功能。如果应用程序的主要用途是AR,请仅将你的应用程序提供给支持ARKit的设备。如果你的应用程序包含需要特定AR功能的体验,或者如果AR功能在你的应用程序中属于可选体验,当用户尝试通过非兼容设备启用相关功能时,请不要向他们显示错误。相反,避免在非兼容设备提供所述功能。有关开发者指南,请参阅验证设备支持和用户权限。
1. 创造迷人、舒适的体验
鼓励用户使用整个显示器。尽可能多地在屏幕显示物理世界和应用程序的虚拟对象。避免屏幕显示的控件和信息杂乱无章,从而减损沉浸式体验。
在放置真实对象时,努力使人产生信服的错觉。使用逼真的纹理设计详细的3D asset,以创建看起来置身其中的虚拟对象。使用ARKit中的信息,可以正确缩放对象并将其放置在检测到的真实世界曲面之上,反射环境照明条件并模拟camera grain,在真实世界曲面投射自上而下的漫反射对象阴影,以及随着camera位置的变化而更新视觉效果。为了避免打破你创造的错觉,请确保你的应用程序每秒更新场景60次,这样对象就不会出现抖动或闪烁。
考虑具有反射曲面的虚拟对象如何显示环境。ARKit中的反射是基于摄像头捕获环境的近似值。为了帮助保持AR体验真实的错觉,请选择较小或粗糙的反射表面,从而淡化近似的效果。
使用音频和触觉增强沉浸式体验。声音效果或凹凸感是确认虚拟对象已与物理表面或其他虚拟对象接触的一种好方法。背景音乐同样可以帮助用户融入虚拟世界。相关指南请参见播放音频和播放触觉。
最小化环境中的文本。仅显示用户需要的应用体验信息。
如果需要其他信息或控件,请考虑在屏幕空间中显示它们。屏幕空间中的内容似乎固定在虚拟世界中或设备屏幕上(不太常见)的一致位置。人们通常很容易在屏幕空间中查找和查看内容,因为当底层AR环境随设备移动时,屏幕空间保持静止。
当需要提供持久性控件时,请考虑使用间接控件。间接控件不是虚拟环境的一部分,而是显示在屏幕空间中的2D控件。如果人们需要访问应用程序中的持久控件,请考虑放置它们,以便用户不必调整握住设备的方式来接触它们。另外,请考虑在间接控件中使用半透明效果,以帮助避免遮挡基础场景。例如,Measure应用使用屏幕空间显示半透明和不透明控件的混合,从而允许用户通过相关控件来测量现实世界中的对象。
预计人们会在各种各样的真实环境中使用你的应用程序。用户可能会在没有太多移动空间或没有任何大平面的地方打开你的应用程序。提前向人们清楚地传达应用程序的要求和期望,帮助他们理解物理环境如何影响AR体验。你同时可以考虑为不同的环境提供不同的功能集。
注意人们的舒适度。将设备长时间保持在一定距离或角度可能会导致疲劳。为了避免造成疲劳,考虑将对象放置在一定距离,以减少将设备移近对象的需要。对于游戏,请考虑一定的休息时间。
如果你的应用程序鼓励人们移动,请逐渐引入运动。例如,你可能不希望用户一进入AR游戏就开始躲避虚拟炮弹。给予用户时间适应应用程序中的AR体验,然后逐步鼓励移动。
注意人身安全。当人们沉浸在AR体验中时,他们不一定意识到周遭的物理环境,因此快速、彻底或扩张的运动可能非常危险。请考虑帮助应用程序安全运行的方法;例如,游戏可以避免鼓励大动作或突然起动。
2. 利用辅助引导来帮助用户入门
在人们可以在你的应用程序中享受AR体验之前,他们需要以ARKit能够评估周围环境和检测表面的方式移动设备。在iOS 13及以上版本中,你可以使用内置的指导视图来向用户展示应该做什么,并在初始化过程中提供反馈。你同时可以使用指导视图帮助用户在AR体验被中断后重新初始化AR,这一过程称为重新定位。有关重新定位的指导,请参阅处理中断;有关开发者指南,请参阅ArcoachingGoverLayView。
当人们使用指导视图时,请隐藏不必要的应用UI。默认情况下,当初始化或重新定位开始时,指导视图会自动显示,因此你应该准备隐藏不相关的UI,以帮助人们关注指导视图的说明。
如有必要,提供定制引导体验。尽管你可以配置系统提供的指导视图,从而提供特定的信息,例如检测水平面或垂直面,但你可能需要其他信息或希望使用不同的视觉样式。如果你想设计定制辅导体验,请参考系统提供的辅导视图。
3. 帮助人们放置对象
向人们显示何时定位曲面和放置对象。你可以使用系统提供的指导视图来帮助人们找到放置对象的水平或垂直平面。ARKit检测到曲面后,你的应用程序可以显示自定义视觉指示器,从而显示何时可以放置对象。通过将指示器与检测到的曲面的平面对齐,你可以帮助人们感知对象放置在环境时的效果。
当用户放置一个对象时,立即将所述对象集成到AR环境中。级军官表面检测可以快速、渐进地提高精度,但最好避免在放置对象之前等待更精确的数据。当人们放置对象时,利用可用信息立即作出反应;然后当曲面检测完成时,如有必要,可以微妙地优化对象的位置。例如,如果人们将对象放置在检测到的曲面边界之外,请将对象轻轻推回到曲面。有关优化对象位置的开发者指南,请参阅ArtrackDrayCast。
考虑引导人们使用屏幕外的虚拟对象。有时,人们很难定位屏幕外的对象。在这种情况下,你可以通过提供视觉或听觉提示来帮助人们找到这类对象。例如,若某个对象位于屏幕左侧,则可以沿屏幕左边缘显示一个指示器,引导人们将camera指向所述方向。
避免尝试将对象与检测到的曲面的边精确对齐。在AR中,曲面边界是一种近似值,随着对周围环境的进一步分析,这可能会发生变化。
合并平面分类信息以通知对象放置。例如,仅允许用户将虚拟家具放置在分类为“地板”平面,或要求将平面分类为“桌子”,以便放置虚拟游戏板。
4. 设计直观、愉悦的对象交互
尽可能允许人们使用直接操纵与对象进行交互。与在屏幕空间中使用间接控件相比,当人们可以通过直接触摸屏幕的3D对象来进行交互时,体验会更直观和沉浸。但当人们使用应用时四处走动,间接控制可以更好地发挥作用。
允许人们使用标准、熟悉的手势直接与虚拟对象交互。例如,考虑为移动对象支持单指拖动手势,为旋转对象支持双指旋转手势。有关指导,请参阅触控屏手势。
一般来说,保持交互简单。触控手势本质上属于二维,但AR体验涉及真实世界的三维。考虑以下方法来简化用户与虚拟对象的交互。
将移动限制在对象所在的二维曲面;将对象旋转限制为单个轴
在交互虚拟对象的合理接近范围内响应手势。当人们瞄准小、薄或距离较远的对象之上的特定点时,很难做到精确。当你的应用程序在交互对象附近检测到一个手势时,通常最好假设人们想要影响所述对象。
支持用户启动的对象缩放(如果在应用程序中有意义)。例如,如果你的应用程序允许人们探索一个虚构环境,支持对象缩放可能具有意义,因为你的应用程序不需要表示真实世界。另一方面,如果你的应用程序帮助购物者决定购买家具,允许缩放椅子对象并不能帮助他们想象椅子在房间中的效果。
-
建议:无论应用程序的用途如何,都不要使用缩放来调整对象的距离。如果你为了令其看起来更近而放大远处对象,结果只会是一个更大的对象,但看起来依然很遥远。
警惕潜在的冲突姿态。例如,双指捏手势类似于双指旋转手势。如果你实现了两个类似的手势,一定要测试你的应用程序,确保它们能够正确解释。
努力实现与应用程序AR环境物理一致的虚拟对象移动。人们不一定希望对象在粗糙或不平表面之上平稳移动,但他们确实希望对象在移动过程中保持可见。目的是保持移动对象附着在真实世界的曲面之上,避免在人们调整、旋转或移动对象时导致对象抖动、消失和重新出现。
探索更具吸引力的交互方式。手势并不是人们与AR中的虚拟对象交互的唯一方式。你的应用程序可以使用其他参数,如运动和接近度。例如,一个游戏角色可以在走向一个人时转头看着他。
5. 设计出色的多用户体验
当多人共享应用程序的AR体验时,每个参与者都会独立映射环境,ARKit会自动合并映射。有关开发者指南,请参阅isCollaborationEnabled。
考虑启用人员遮挡。如果你的应用程序支持将虚拟对象放置在人员后面,请通过人员遮挡对象来增强真实感。有关开发者指南,请参阅Occluding virtual content with people。
如果可以,允许新参与者进入多用户AR体验。除非你的应用程序要求所有参与者在体验开始前加入,否则请考虑使用隐式映射合并,允许新用户快速加入持续的AR体验。有关开发者指南,请参阅isCollaborationEnabled。
6. 响应真实对象
通过使用真实环境中的已知图像和对象来触发虚拟内容,你可以增强AR体验。例如,一个识别科幻电影影院海报的应用程序可以生成虚拟宇宙飞船从海报中出现,并在环境中飞行的效果。另一个例子是艺术博物馆应用。当它识别出一个雕塑时,系统会显示一个虚拟导游。为了实现这样的体验,你的应用程序可以提供一组2D参考图像或3D参考对象,ARKit会指示在当前环境中何时何地检测到相关项目。有关开发者指南,请参阅在AR体验中识别图像。
当检测到的图像首次消失时,请考虑延迟删除附加到它的虚拟对象。ARKit不会追踪每个检测到的图像的位置或方向的变化。为了帮助防止虚拟对象闪烁,请考虑在淡出或删除虚拟对象之前等待一秒钟。
限制一次使用的参考图像数量。当ARKit在真实环境中查找100个或更少的清晰图像时,图像检测性能最佳。如果需要100多个参考图像,可以根据情景更改活动参考图像集。例如,博物馆指南应用可以请求许可使用定位服务来确定用户所在的博物馆位置,然后只查找所述区域显示的图像。
限制需要精确位置的参考图像的数量。更新参考图像的位置需要更多资源。当图像可能在环境中移动时,或当附着的动画或虚拟对象与图像大小相比较小时,使用追踪图像。
7. 沟通
如果必须显示教学文本,请使用易于理解的术语。AR是一个先进的概念,并可能会令新人感到茫然。所以,请避免使用ARKit、世界检测和追踪等技术术语。相反,使用大多数人都能理解的友好术语。
请这样措辞:找不到曲面。请尝试移动到一侧或重新定位手机。
请不要这样措辞:找不到。调整追踪。
请这样措辞:轻触某个位置以放置(要放置对象的名称)。
请不要这样措辞:轻触平面以定位对象。
请这样措辞:试着打开更多的灯光,并周围走动
请不要这样措辞:缺乏可检测的特征。
请这样措辞:尝试将手机移动得更慢一点。
请不要这样措辞:检测到过度运动。
在三维环境中,首选三维提示。例如,围绕对象放置三维旋转指示器比在二维叠加中显示基于文本的指令更加直观。避免在3D情景中显示文本叠加提示,除非用户没有响应情景提示。
确保重要文本可读。使用屏幕空间显示用于关键标签、注释和说明的文本。如果需要在三维空间中显示文本,请确保文本面向用户,并且无论文本与标记对象之间的距离如何,都使用相同的类型大小。
如有必要,提供获取更多信息的方法。设计一个符合应用体验的视觉指示器,并向用户展示它们可以点击以提供更多信息。
7. 处理中断
ARKit无法在中断期间追踪设备的位置和方向,例如当人们短暂切换到另一个应用或接听电话时。中断结束后,以前放置的虚拟对象可能会出现在错误的真实位置。启用重新定位后,ARKit会尝试使用新信息来将虚拟对象恢复到其原始真实位置。有关开发者指南,请参阅管理会话生命周期和追踪质量。
考虑使用系统提供的辅导视图来帮助人们重新定位。在重新定位期间,ARKit将尝试把以前的状态与当前环境的新观察结果相协调。要启用所述观察,你可以使用指导视图帮助人们将设备恢复到以前的位置和方向。
考虑在重新定位期间隐藏以前放置的虚拟对象。为了避免在重新定位期间出现闪烁或其他令人不快的视觉效果,最好隐藏虚拟对象并在其新位置重新显示它们。
如果你的应用程序同时支持AR和非AR体验,则尽量减少中断。避免中断的一种方法是在AR体验中嵌入非AR体验,这样人们就可以在不退出和重新进入AR的情况下处理任务。例如,如果你的应用程序可以将虚拟家具放在房间之中,你可以允许他们在不离开AR体验的情况下更换内饰。
允许用户取消重定位。如果人们不将设备定位和定向在中断前的位置附近,则重新定位会无限期地继续,但不会成功。如果指导人员恢复会话不成功,请考虑提供重置按钮或其他方式来重新启动AR体验。
当前置摄像头无法追踪人脸的时间超过约半秒时进行指示。使用视觉指示器指示摄像头无法再追踪人脸。如果在这种情况下需要提供文本说明,请将说明保持在最低限度。
8. 建议解决问题的方法
如果体验没有达到用户的期望,请允许用户重新设置体验。不要强迫人们等待条件改善或在对象放置方面挣扎。给他们一个重新开始的方法,看看是否有更好的结果。
如果出现问题,建议可能的修复方法。由于各种原因,对真实环境和表面检测的分析可能会失败或花费太长时间,例如光线不足、表面过度反射、表面没有足够的细节或camera运动过多。如果应用程序收到这些问题的通知,请使用简单、友好的语言提供解决建议。
9. AR图标
应用程序可以在启动基于ARKit的体验的控件中显示AR图标。你可以在开发者资源中下载图标。
按预期使用AR图示符。AR图示符应严格用于启动基于ARKit的体验。永远不要改变AR图示符(除了调整其大小和颜色),将其用于其他目的,或将其与非使用ARKit创建的AR体验结合使用。
保持最小净空间。AR图示符周围所需的最小净空间量为图示符高度的10%。不要允许其他元素侵犯这个空间或以任何方式遮挡图示符。
10. AR徽标
包含产品或其他对象集合的应用程序可以使用徽标来标识可以使用ARKit在AR中查看的特定项目。例如,百货商店应用可以使用徽标来标记家具,从而允许用户在购买之前在家中预览效果。
按预期使用AR徽标,不要更改。你可以在开发者资源中下载AR徽标,它以折叠和展开的形式提供。切勿更改徽标,更改其颜色,将其用于其他目的,或将其与非ARKit体验结合使用。
请尽量使用包含图形和AR字样的徽标,不要仅使用图形徽标。当然,对于无法容纳AR标记的受限空间,你可以使用仅图形徽标。
只有当应用程序包含可以在AR中查看的对象和不能在AR中查看的对象时,才使用徽标。如果应用程序中的所有对象都可以在AR中查看,则AR徽标为多余。
保持徽标位置一致且清晰。当徽标显示在对象照片的一角时,效果最好。始终将其放在同一个角落,确保其足够大,以便清晰可见(但不要太大,以免遮挡照片中的重要细节)。
保持最小净空间。AR徽标周围所需的最小净空间为徽标高度的10%。其他元素不应侵犯这一空间,并以任何方式遮挡徽标。