作者:michitang
前言
现在应用可以使用苹果的AR技术——ARKit,将有真实感的虚拟物体与现实世界无缝衔接,给用户带来身临其境、有参与感的体验。在AR app里,将3D的虚拟物体叠加到通过摄像头实时拍摄的真实环境中,制造出虚拟物体真实存在的错觉。用户可以通过改变设备的位置,从不同角度来探索虚拟物体,如果设计得当,也可以通过手势或者动作来与虚拟物体互动。
设计有参与感的体验
使用全屏让用户参与其中:尽可能使用更多的屏幕空间来呈现物理世界和app里的虚拟物体。避免过于杂乱的操作和信息出现在界面里,影响临场感。
构建仿真物体时要有说服力:不是所有的AR体验都需要仿真物体。但如果需要用到仿真物体,就需要把在这个物体在真实世界里的相关元素也设计进去。为了获得最佳表现,需要为3D物体设计逼真的材质,使用ARKit提供的信息把物体放到现实世界的平面上,并且缩放到适当的比例。同时,需要在虚拟物体上投射环境光,在现实空间里投射出物体的阴影。当相机的位置发生变化的时候,需要实时刷新视效。
将物理限制考虑在内:一定要记住,用户可能会在非AR最佳体验的环境里使用你们的app。例如,他们可能在一个没有多大的移动空间,或者没有足够大的平整的平面的地方打开你们的app。要提前考虑那些会出现问题的场景,清晰地向用户传达要求或预期。可以考虑在不同环境下,给用户提供不同的功能。
要考虑用户的舒适度:人处在某个距离、保持某个角度长时间持握设备,会产生疲劳。要考虑用户持握设备使用app时,仍能获得愉快的体验。比如,你可以默认设置成,把物体放在一个不需要用户靠近的距离。做游戏的时候可以把每个关卡设计得短一些,多加入一些短时间的休息。
如果你的app鼓励用户做出一些动作,需要渐进的引导:例如,在一个游戏刚开始的时候,不能让用户大步移动来躲避虚拟的投射物。需要给他们一些时间来适应这种体验,然后逐步引导他们。 要考虑用户的安全:当用户所处的环境里有很多人或物体的时候,太频繁地让用户移动,会带来潜在的危险。要考虑用户可以安全地使用app。例如,游戏设计时需要避免大幅度的动作,或要求用户突然地做出动作。
使用音频或触感来提升临场感:在虚拟物体和物理表面或其他虚拟物体发生了接触时,使用音效或者震动可以提供很好的反馈。在一个身临其境的游戏中,使用背景音乐也可以很好的把用户带入到虚拟的世界里。相关指南可以看音频和触觉反馈部分。
尽可能在上下文中提供线索:例如,在可以旋转的物体周围放一个3D旋转示意的箭头,这要比单纯的文字提示更直观。但在表面检测完成之前,或是用户对上下文提示没有进一步操作时,文字提示还是有必要的。
如果一定要使用文字说明,请使用容易理解的文案:AR是一个前卫的概念,容易让一些用户退缩。为了让用户更容易接受,要避免使用太过技术性的、面向开发的词汇,例如ARKit、现实检测、追踪。而要用大部分用户可以理解的友善的、对话型的词汇。
例如,可以使用:
“无法找到表面。可以尝试走到一边,或挪动一下手机的位置。” “点击要放置xx物体的位置” “试一试打开灯光,或是来回走动一下。” “试一下慢一点移动你的手机”
不要使用:
“无法找到平面,调整跟踪。” “点击平面来定位物体” “功能缺陷” “检测到运动过频”
避免打断AR体验的不必要的操作:每一次用户退出或重新进入AR的时候,都会重新检测环境和表面,此时手机和摄像头的位置很可能发生过改变,会导致之前放置的物体会被移位,甚至可能不再出现在平面上了。为了避免这种问题,要让用户可以在不退出AR的情况下,也能调节物体、设置。例如,用户把想购买的椅子放进房间时,他们可能会想试一试其他面料的选项,可以把选项的调整设计在AR环节中。
进入增强现实
在初始化的时候需要告知用户:每次你的app进入AR时,都会进行初始化,此时会对环境进行评估,大概需要几秒的时间。为了减少用户的困惑,加快初始化进程,可以向用户展示初始化正在进行的事项,鼓励用户探索他们周围的环境,或是去寻找实物表面。
放置虚拟物体
提示用户定位表面,以及放置物体的时机:当进入了“表面定位模式”,可以用视觉标识来传达。例如,在屏幕中间放一个梯形框,可以帮助用户了解到此时他们需要找一个水平面。当表面已经选中时,要变换一下提示的图标,来告诉用户“现在可以放置物体”了。设计视觉标识也是app设计的一部分。
用户放置物体时,要予以恰当的反馈:在表面检测时(时间非常短),精度会逐步提高。如果此时用户点击屏幕来放置物体,要尽可能使用已获得的信息尽快放置物体。一旦表面检测完成,再巧妙地优化物体的位置。如果一个物体放置的位置超出了检测到的表面,就需要将物体轻轻地推回表面上。
避免将物体对齐到检测出的表面边缘:在AR中,表面的边缘是近似的,进一步分析用户环境之后,可能会发生改变。
与虚拟物体互动
直接控制物体,比操作多个按钮要好:通过点屏幕上的物体直接发生互动,会带来更强的临场感,要比在屏幕的不同区域,操作多个独立的按钮要好。不过要记住的是,当用户在移动的时候,直接控制物体会变得难以操作。
通过标准、用户熟悉的手势让用户与虚拟物体直接互动:例如,可以考虑使用单指拖拽物体,使用两指旋转物体。更多相关的规范可以参考“手势”。
一言以概之,交互要简单:轻触手势本质上是二维的,但在AR体验中涉及到三维的真实世界。可以参考以下几点来简化用户和虚拟物体互动的交互。
当操作手势接近可交互的虚拟物体时,要予以反馈:对用户来说,要精确的点击一些比较小、薄、放在较远距离的物体上的某一点是很难的。当你的app检测到,在接近交互区域有手势操作时,就可以假设用户想要完成这个互动。
要考虑是否有必要让用户缩放物体:通常来说,没有固定尺寸的玩具或者是游戏角色,用户可能希望可以看到它放大或是缩小的状态,提供缩放功能也显得比较合理。而对于一个在现实世界有相对尺寸的物体,比如说固定尺寸的家具,缩放功能就没有必要了。缩放不是一个调节物体距离的补救措施,把物体放大并不一定能让它看起来离用户更近,可能只会让用户感觉这是一个离自己较远的较大的物体。
要小心手势冲突:例如,两指的捏的手势,可能和用两指旋转的手势很接近。如果要设计这样类似的手势操作,一定要提前测试,确保操作起来不会有冲突。
确保虚拟物体的变化要顺滑:物体缩放、旋转、移动到某一点的过程,不能是跳跃式的,需要平滑地过渡。
探索更有临场感的交互方式:在AR中,手势不是唯一能和虚拟物体产生互动的方式。你的app也可以考虑运用其他细节来让内容变得更生动。例如,一个游戏角色可以在他走向用户的时候把头转向用户。
问题处理
允许用户重置:不要强迫用户去等待客观条件具备,或是在放置物体有困难的时候,也要他们先完成放置。给他们一个重新开始的选择,看看是不是可以获得更好的结果。
发生问题时,提示用户可能的解决办法:“环境分析”和“表面识别”有时可能因为一些原因无法完成。比如说光线不够好,平面上的反光太强,平面没有足够的细节,或摄像头移动得太快。如果你的app可以检测到这些问题,或者当表面检测太慢时,可以给到用户解决办法。
问题——建议的解决办法
检测到功能缺陷——试一试打开灯光,或是来回走动一下。 检测到运动过频——试一下慢一点移动你的手机 表面检测时间过长——试一试来回走动一下,打开灯光,确保你的手机对准有纹理的表面。
只为硬件条件具备的设备提供AR功能:如果你的app的核心功能就是AR,让你的app仅支持可以支持ARKit的设备。如果在你的app里,AR功能不是核心功能——比如说“有商品照片的家具目录,支持用户在AR场景里看商品”,就需要避免让一个不支持的设备进入AR模块时卡在报错环节。如果设备不支持ARKit,最好一开始就不对用户展示AR功能入口。
更多
开发指南请参阅ARKit。
苹果官方原文地址: https://developer.apple.com/ios/human-interface-guidelines/technologies/augmented-reality/