

本文为《iOS人机交互指南》的一部分,由黄方闻翻译,转载请注明出处。受公众号限制,无法跳转第三方网页为了更好的体验,欢迎访问http://hfw.design阅读查看,点击查看原文可跳转。
原文地址https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/augmented-reality/
让用户可以全屏使用。尽可能多的在屏幕上显示真实世界和你应用程序的虚拟对象的内容。避免在屏幕上添加多余的控件和信息导致屏幕中的内容显得混乱,从而减少用户身临其境的感觉。
让虚拟对象尽可能的真实。设计具有逼真纹理和细节的3D对象,使其放在真实世界中看起来就像真实存在的。通过ARKit提供的信息,你可以正确地缩放对象并将其定位在检测到的真实世界上,并反映出真实的环境光效果,让对象产生真实的投影,并能随着相机位置的变化而同步变化。为了保证对象的真实性,请确保你的应用程序的刷新率在每秒60次以上来避免对象出现跳跃或闪烁。
考虑虚拟对象如何在真实环境中显示。ARKit中的反射是基于相机捕获的环境的近似值。为了保持AR的真实感,请选择较小或者粗糙的反射面,来减少环境的影响。
使用声音和触觉来增强沉浸式体验。声音效果或者碰撞感是确认虚拟对象与真实的物理表面或其他虚拟对象接触的好办法。背景音乐还可以让用户更好的沉浸在这个虚拟世界中。相关指南,详见声音和触觉。
尽可能少的使用文本。仅显示那些用户使用你应用程序所必须要显示的信息。
如果必须要添加信息或控件,请确保其在屏幕上的展示。内容固定在屏幕上的某个位置在虚拟世界中不怎么常见。但用户会相对容易比较注意到这些内容,因为当用户移动设备时,屏幕上其他AR内容会移动,而这些内容相对固定。
当需要设置固定的操作控件时请使用间接控件(Indirect controls)。间接控件不是虚拟环境的一部分,而是固定在屏幕上的2D控件。如果用户总是需要用到该控件,请使用间接控件,这样用户无需调整设备便可随时触控到。同时,请考虑将间接控件设计成半透明样式,以免遮挡控件下方的内容。例如“测距仪”应用通过混合使用半透明的间接控件和不透明的AR控件来帮助用户测量真实世界对象的距离。
预期用户会在各种现实环境中使用你的应用程序。用户可能在一个没有足够移动空间或者没有足够大的平坦的表面的环境下使用你的应用程序。你应该在用户使用前清楚的告知用户使用需求和建议,以帮助他们了解真实环境对AR体验的影响。你还可以考虑针对不同的环境提供不同的功能。
请注意用户的舒适度。长时间的手持设备并保持一定距离或角度可能会造成用户的疲劳。为了避免产生疲劳,你可以考虑将虚拟对象放置在一个合适的位置以减少用户需要移动设备去靠近的必要,在游戏中,可以考虑将关卡设置的短一些,或者在游戏中加入短暂的休息时间。
如果你的应用鼓励用户移动设备(如体感),请逐步引入这些操作。例如,你可能不会希望用户在刚进入你的AR游戏就需要躲避射过来的虚拟炮弹。给用户一些时间适应你应用程序中的AR体验,然后在逐步的引导用户去尝试移动。
注意用户的人身安全。当用户沉浸在AR体验中时,可能不会有足够的精力去注意周边的真实环境,当进行一些相对激烈的动作时可能会产生危险。请考虑你的应用能被安全的使用,例如,在游戏中避免让用户有过大幅度或突然的动作行为。
使用辅助引导在用户开始使用你应用程序中的AR功能之前,需要移动设备来让ARKit来评估周围环境以及检测物理表面。在iOS13及更高的版本中,你可以使用内置辅助引导来告知用户在初始化设置中需要做什么并提供相应的反馈。当AR体验被打断后,你还可以使用该辅助引导来帮助用户重新初始化AR设置(重新定位),比如当用户切换到另一个应用程序后再切换回时。有关重新定位的指南,详见中断处理;更多开发指南,详见ARCoachingOverlayView。
当用户在辅助引导状态下,隐藏其他不必要的UI内容。在默认情况下,当需要初始化或重新定位设置时,辅助引导会自动出现,此时你应该隐藏其他不相关的UI内容,以帮助用户将注意力集中在辅助引导上。
如有必要,可自定义辅助引导。尽管你可以使用系统内置的辅助引导帮助用户完成特定的设置,如检测水平面或垂直面,但你可能需要更多的信息或者使用其他 视觉样式。要自定义辅助引导,请基于系统内置的辅助引导为参考。
放置对象告知用户如何定位表面并放置对象。你可以使用系统内置的辅助引导来帮助用户找到要放置对象的水平面或垂直面。当ARKit检测到一个表面后,你可以通过自定义的视觉效果来告知用户是否可以放置对象。你可以通过将引导检测器与检测到的表平面对齐来帮助用户更好的了解他们放置的对象在真实环境中的呈现。
当用户放置了一个对象,请立即将该对象整合到AR环境中。尽管在表面检测期间,精度会在很短时间内逐渐提高,但是最好避免在用户放置对象后还等待更准确的数据。当用户放置了对象后,应使用当前可用信息立即作出响应,然后,在完成表面检测后,如有必要,可以微调对象的位置。例如,如果用户将对象放置在检测到的表面之外,可以将对象移回表面上。有关如何精准定位对象的开发指南,详见ARTrackedRaycast。
引导用户找到屏幕外的虚拟对象。有时候,用户会很难找到一个屏幕外的虚拟对象,在这种情况下,你可以通过声音或视觉引导来帮助用户找到该对象。例如,假设某个虚拟对象在屏幕外的左侧,你可以在屏幕左侧增加一个视觉引导,来提示用户将摄像头指向左侧。
避免将对象和已检测到的表面精确对齐。在AR中,表面边界是近似值,可能会随着用户周围环境以及进一步的分析而发生变化。
对表面进行分类并告知用户可放置的类别。例如,仅允许用户在分类为“地板”的表面上放置虚拟家具,或者可以将飞机归类为“桌子”以放置虚拟游戏板。
设计直观、令人愉悦的对象交互尽可能的让用户直接和虚拟对象进行交互。通过直接触控屏幕上的3D虚拟对象,而不是通过屏幕上的间接控件进行交互,不仅更直观,还能让用户更有沉浸感。但是,当用户是在到处走动的场景下使用你的应用程序,那么使用间接控件可能更好。
让用户可以使用符合预期的标准化的手势直接与对象进行交互。例如,应支持用于移动对象的单指拖动手势和用于旋转对象的双指旋转手势。相关指南,详见手势。
请保持交互的简单。本质上,触控手势是二维交互,但AR及现实世界是三维的。你可以考虑通过以下的方式来简化用户与虚拟对象的交互。
(左图文字:限制对象仅在平面上移动;右图文字:限制对象仅能围绕一个轴旋转)
在合理的范围内让虚拟对象对可能的交互手势作出响应。用户可能比较难以精确触控到某个小的、细的或者有一定距离的对象,当你的应用程序检测到某个手势在这个可交互对象附近时,通常最好假设用户想要操作该对象。
请思考在你的应用中支持用户对对象进行缩放是否有意义。例如,如果你的应用是让用户探索一个虚拟的环境,那么支持对象的缩放可能很有用,因为你的应用不是代表的真实世界。但另一方面,假设你的应用是帮助用户确定是否要购买一个家具,那么允许用户对椅子进行缩放,并不能帮用户更好的了解这个椅子放在房间中的效果。
提示:无论你的应用程序是做什么用的,都不要将缩放对象当成调整对象距离的一种方式。如果你试图将远处的对象放大来让其看起来更近一些,实际可能只是让那个对象变大了,但跟你的距离并没有发生变化。
请留意可能出现的手势冲突。例如,双指捏合的手势和双指旋转的手势很相似。如果你想同时支持这两种手势,请确保你应用程序能准确识别并测试无误。
在你应用的AR环境中保持虚拟控件和周围环境有一致的物理属性。用户可能并不期望一个对象在粗糙或者不平坦的表面移动,但他们会期望这个对象在运动过程中是可见的。移动时应将对象附着在真实世界的表面,并且避免用户在调整大小、旋转以及移动等操作时,对象跳跃或闪烁的出现。
探索更多引人入胜的交互方式。手势并不是用户与AR中虚拟对象交互的唯一方式。你的应用还可以使用其他的要素,如动作或相似度,来使内容栩栩如生。例如,一个游戏角色可以在朝另一个人走过去的时候转头看他。
http://hfw.design
是我新上线的一个体验设计相关的网站,内容会与本公众号同步更新,欢迎访问。
