随着VR/AR眼球追踪技术的逐渐成熟,如何使用眼球追踪技术为自己的VR/AR APP提升用户体验已经成为开发者的一大议题。
一般来说,眼控交互应用开发是开发者的第一想法。
简单来讲,眼控交互开发的原理就是在开发引擎中,将视线范围设置为一条射线状或圆锥状物体,和VR/AR中的各种Object进行碰撞检测,当程序一旦检测到碰撞,则视为用户的视线落到了这个物体上,其基本原理对于开发者是很容易掌握的。
但是在与很多VR/AR开发者的交流中过程中,发现目前开发者对于眼控交互设计上依旧存在较多误解。
下面说一下常见的一些设计问题:
one
碰撞检测的范围
视线与物体进行碰撞检测时,不要真的将视线视为一个无限细的射线进行检测,因为基于目前眼球追踪技术,是无法做到100%准确,会存在一定的误差,虽然误差值很小,但是为了避免这种误差造成交互失误,在进行碰撞检测时,视线一方的碰撞物体,一般需要设置一定的扩展范围,最好是将视线设置为一个圆锥形,这样无论碰撞的距离是多少,其检测范围的半径是不变的。
Two
碰撞检测并不等同于注视
检测到视线物体的碰撞和用户在注视这个物体并不是等同的。
人眼有两种常见的运动模式:眼跳和注视。
眼跳的速度非常快,而且人眼的视神经经常处于半关闭的状态,这时检测到视线和物体的碰撞,产生交互是没有必要的。视线落在某个物体上超过一定的时间才是注视,一般情况下要超过100ms,所以在交互设计中,一般需要通过一定的延迟判定才能认为是注视。
圆圈代表注视(半径越大,注视时间越长)线条代表眼跳
Three
避免米达斯接触
有些开发者曾问道:如何区别用户是在观察一个物体,而并不是想要触发这个物体相应的功能呢?
这是一个非常好的问题,在眼球追踪技术有一个专有的名词对问题进行概括:米达斯接触问题。
· 米达斯接触:
所谓米达斯接触(MidasTouch)问题(米达斯是希腊神话中的一位能点石成金的国王)指的是由于用户视线运动的随意性而造成计算机对用户意图识别的困难。用户可能希望随便看什么,并非存在目的和意义,更不希望每次转移视线都可能引发一个动作。因此,视线跟踪技术的挑战之一就是避免“米达斯接触”问题。
米达斯
如果用户只是选中激活(比如高亮、框选、变大变小)用户注视的物体,米达斯接触是不会产生什么副作用的,但是如果用户注视的物体会触发场景切换或功能设置上的变化。那么问题就随之而来了:
你怎么知道用户仅仅是在查看,还是想直接触发它的功能呢?
为了解决这个问题,我们不会采用注视后马上触发的方式,因为这样会不断产生错误的操作。
一般会有下面的解决方法:
·延迟触发:在被观察物体上,显示一个不影响正常浏览的时间进度条,当进度条完成设定时间的计时时,产生触发行为。
·二次眼控触发:在被观察物体旁边,显示“真正的”触发元素,用户余光可以看到,但不影响观察主体。当需要触发时,看那个“真正的”触发元素即可。
但是细心的读者会发现,这两个方法依旧存在问题:延迟触发要求用户注意延迟进度,而且这种操作容易引起眼睛的疲劳,而二次眼控触发虽然在一定程度上可以避免误触发,但是仍然有误触发的可能。
这就引出了下一个论点:与其他输入工具结合。
Four
与其他输入工具结合
只用眼睛进行所有交互并不是最好的交互模式,结合其他输入工具,如手柄、语音、手势等,才是比较自然的。当然,这里说的交互不包括选中激活的交互。
延迟触发的确会引起用眼疲劳,但是这种模式也有它的适用场景,例如类似渐冻症患者这种残疾人群,除了眼睛,其他交互手段全部失效,这种模式就是最适合的。
当然,不排除某些特定场合,除了眼睛其他交互手段都不适用,那也可以采用这种模式。
渐冻症患者使用的输入法界面,典型的延迟交互
在正常环境中,多重交互将会更自然。比如在一个菜单界面上,眼睛的运动轨迹能够反应在菜单项中,使选项处于待激活状态,此状态下不触发场景切换或产生其他设置上的变化,这时可以搭配语音交互说出“确认”或者通过某个特定手势(比如:OK手势),进行激活状态,这种多重交互协作方式将会有效的避免了误触发。
Five
用眼睛做瞄准不是好的游戏交互模式
目前在VR游戏中,枪击游戏是最常见的一种,所以很多开发者就会想到是否能用眼睛作为瞄准工具。实际上,我们并不推荐大家将用眼睛做瞄准并不是一种好的游戏交互模式。
对于拥有这种想法的开发者,存在需要两个必须想通问题:
游戏是想让用户弹无虚发永不失败?
还是想测试眼动厂家算法的准确性?
Six
不要用眼睛做过于精细化的选择
前面有提到,眼球追踪技术还做不到100%的准确,与传统桌面式交互中的鼠标是不可同日而语的,所以在交互设计中,不要信心过头,碰撞检测的范围不要过小,甚至可以设置一定的吸附算法,以防止用户无法产生交互行为。
另外,多个可产生交互的元素之间,需要有一定的距离,防止由于距离过近,产生错误的交互。用户本来看的是A,结果B开始进行交互反应了。
除了上面所说的常见问题,下面我们也给开发者一些常见的交互设计思路:
·注视触发滚动
比如上下排列的菜单,当用户注视落点比较靠近下方时,自动向上滚动,使用户的视线处于最舒适的方向上,以提升用户体验。左右排列的请自行思考。
·局部变化
当用户注视某些特定元素时,可产生局部变化,如拉近、放大、变清晰、变亮等,而视线离开时,恢复原状。比如在玩VR游戏时,全局地图可以在周边视野比较小的地方,避免影响正常游戏视线,但当用户注视它时,可以将地图放大以便于用户浏览,而当用户视线离开地图回到主游戏场景时,地图可以自动收回到原来比较小的区域。
领取专属 10元无门槛券
私享最新 技术干货