翻译自https://developer.apple.com/ios/human-interface-guidelines/technologies/augmented-reality/
应用可以使用Apple的AR技术也就是ARKit来创建沉浸的参与感强的体验就好像把拟真的虚拟物体和真实的世界融合在一起。在AR的应用中,设备的摄像头用来呈现一个栩栩如生的在屏幕上的物理世界。3D虚拟物体叠加在画面上,造成他们确实存在的假象,用户可以旋转他们的设备来从不同的角度观察这些物体,然后再合适的体验下,用手势或者动作与他们交互
设计一个吸引人的体验
用完整的显示来吸引人们。利用尽可能多的屏幕来观察体验真实的世界以及你的应用中的虚拟物体,防止因为控制或者信息分割你的屏幕而降低体验的沉浸感
放置拟真的物体时创造令人信服的假象。并不是所有的AR体验都要拟真的虚拟物体。那些需要的,需要融入那个他们被放置的物理环境。为了最好的效果,设计一些具有和平常生活相近纹理细节的3D素材,然后把他们放在ARKit检测出来的真实世界的平面上,把物体调整到合适的大小,给虚拟物体添加环境光源的放射,把虚拟物体的影子打到真实世界的平面上,并且随着摄像头位置的变化更新显示效果
考虑物理限制。牢记人们可能尝试在一个并不理想的环境下使用的你的应用。比如说,他们可能在一个空间很小没有什么可以移动的空火箭或者没有什么比较大的平坦的表面区域的地方打开你的应用。尝试添加一些情节去防止这些挑战,清晰的吧要求或者预期在一开始告诉使用者。考虑添加多样的功能设置让用户在不同的环境下使用
考虑用户的舒适度。让用户长时间在特定距离或者角度拿着设备可能很痛苦。考虑一下用户用你的应用时是怎么拿设备的,然后设计一个不会造成不舒适的有趣的体验。比如说你可以把物体放置在一个合适的距离,不需要用户走近。游戏可以设计的关卡短一些,在间隔时间也短一些
如果你的应用鼓励用户运动,循序渐进的介绍他。比如说在游戏中,用户不应该在一进入到AR里面就要移开去躲避一个虚拟的炸弹。首先应该给他们时间去适应整个体验,然后再慢慢的鼓励他们动起来
考虑用户的安全。移动的太多可能会很危险,假如旁边有人或者什么东西。考虑一些方法使你的应用可以安全的运作。比如游戏可以杜绝一些突然的大幅度的动作
使用音频和触觉的反馈来增强整个沉浸的体验。一个音效或者凹凸感是一个很好的方式去确认一个虚拟的物体碰到了实际的表面或者其他虚拟的物体。在一个沉浸的游戏中,背景音乐可以让用户沉浸在整个虚拟的世界当中
对于一些拓展可能性,把线索放到内容当中。比如说放置一个3D旋转的标示在物体周围比在物体下面用文字添加介绍直观很多。当然在表面检测之前或者用户没有对提示做出反应的时候,叠加的信息更有保障
如果你必须显示介绍的文字,使用平易近人一些的语句。AR对于很多用户来说可能是比较高级的内容会被吓到。杜绝使用一些技术开发性的词汇比如说ARKit,世界检测,追踪会使体验更易于接受。用一些友善的对话式的可以让大多数用户理解
好的提示 | 不好的提示 |
---|---|
找不到表面。尝试移动到边上或者重新放置你的手机 | 找不到平面。调整追踪 |
点击一个位置放置物体 | 点击一个平面锚定物体 |
打开更多的灯然后再周围移动一下 | 没有足够的特征点 |
慢一些移动你的手机 | 检测到过度的移动 |
在AR体验中避免不必要的中断。环境分析和平面检测会在每次用户退出和进入AR时进行。更多的是,手机和摄像头的位置很可能发生了改变。结果,之前放置的物体有可能被重新放置到其他位置--甚至由于重置了真实世界的表面,他们可能都不见了。让用户改变设置和改变物体时在AR内进行是一个比较好的方式。比如说,一个用户在他的起居室放置了一个他们想买的椅子,他们可能会向尝试其他样式
进入AR
当初始化正在进行中的时候给出提示。每次进入AR都会启动一个初始化的进程,会计算周围的环境。这个过程可能持续几秒钟。为了减少可能的疑惑并且加速这个流程,在初始化过程中给出一个提示,鼓励用户探索周围的环境或者寻找一个平面
放置虚拟物体
帮助用户理解什么时候确定表面的位置放置一个物体。一个可视的提示是一个很好的方式去告诉这个表面目标模式是激活的。一个梯形网线在屏幕中央帮助人们理解他们要找一个水平的表面。一旦这个平面被选中了,这个提示要变化样式去告诉这个地方是可以放置物体的了,如何设计提示是你的应用体验的一部分
当用户放置了物体的时候给合适的反馈。在表面检测的过程中准确度一直在改善。如果用户点击屏幕放置一个物体,立即用目前可以用的信息放置这个物体。然后当平面检测完成的时候再优化这个物体的位置。加入一个物体超出了检测的平面边界,轻轻的把这个物体推回表面
杜绝精确地把物体放置在检测的表面边缘。在AR中,表面边界可能随着用户的周围环境的进一步分析而改变
用户与虚拟物体的交互
倾向于直接的操作而不是独立的屏幕上的控制键。用户可以直接触摸屏幕上的物体和他交互是更加具有沉浸感和直观的相对于屏幕上独立的控制按键。尽管你应该记住直接的操作有时会造成困惑或者很困难当用户移动到周围
允许用户勇士标准熟悉的手势与虚拟的物体进行交互。比如说用一个手指移动物体,用两个手指旋转缩放物体
一般来说,保持交互简单。触摸手势是2维的,但是AR体验是3维的。可以通过下面的方式简化用户与虚拟物体的交互
把物体的移动限制在二维的表面
把物体的旋转限制在一个轴
在与虚拟物体合适的交互范围内响应手势。对于用户来说精准对一些小的细的物体进行交互或者把他放到一个位置是很困难的。所以当你的应用在一个可以交互的物体旁边检测到了手势,通常来说认为用户想与这个物体进行交互
考虑是否需要对用户创建的物体进行缩放。缩放在一些没有固定的大小的物体而且用户可能想要放大缩小他比如说玩具或者游戏人物上门是合适的。对于一些在实际中有固定大小的的物体比如说一件家具,如果要把他当在一个准确的尺寸下,缩放是没有必要的。缩放不是用来调整物体的距离的--想要通过把一个物体放大来使它看起来更近只会变成在比较远的地方有一个大物体
注意潜在的手势冲突。双指的缩放手势和双指的旋转手势很接近。如果你用了两个相近的手势,一定要测试你的应用保证他的交互是合适的
确保虚拟物体的移动是平缓的。物体不要出现跳动当用户调整他们的时候
探索更多吸引人的交互方法。手势不是用户与虚拟物体交互的唯一的方式。你的应用可以用其他元素,比如说运动和近似度把这些内容带进生活。一个游戏人物可以吧头朝向用户当用户走向他的时候
处理问题
允许用户重置当没有达到他们预期的时候。不要强制用户等待条件改善或者艰难的处理物体的放置。给他们一个方式去重新启动看看有没有更好的效果
在问题发生时给出建议的解决方式。分析用户的环境和平面检测失败可能有很多的原因--没有足够的光,平面反射太严重,平面细节太少,或者摄像头移动过度。如果你的应用检测到了这些给出解决这些问题的建议
问题 | 解决建议 |
---|---|
没有检测到足够的特征点 | 试着打开更多的灯然后再周围走一下 |
检测到过度的移动 | 试着慢一些移动你的手机 |
表面检测花了过长的时间 | 试着移动到周围,打开更多的灯,确保你的手机对着一个有足够多纹理的平面 |
只给合适的设备提供AR功能。如果你的应用的主要目的是AR,确保你的医用只在支持ARKit的设备上可以使用。如果你是把AR作为辅助功能。比如家具商品,其中包括产品图片,并且可以让用户在AR中查看一些产品,如果用户的设备不支持AR但是尝试使用AR功能,请避免弹出错误提示。如果不支持ARKit就直接不要给用户显示可以选的AR功能。