本篇文章是微软官网上对HoloLens手势交互的说明,作者做了翻译,并分享给大家~
用户可以通过手势在混合现实的环境下完成一些指令和操作。HoloLens的交互方式是用目光凝视去定位,然后用手势或者声音来操控任何一个被定位到的目标。
虽然手势无法在空间中准确地进行定位,但它的优点是能让用户在戴上HoloLens头显后快速地进行操作,无需再拿其他装备。
一、凝视与行动(Gaze-and-commit)
手势交互的定位机制是凝视。凝视和空中点击(Air tap)结合起来构成了凝视与行动这种交互方式。
还有一种替代的交互方式是基于手柄(motion controller)的指向与行动(Point-and-commit)。
在HoloLens和其他沉浸式头显上运行的APP需要支持上述两种交互行为,让用户去选择自己要用何种方式进行输入。
二、HoloLens的两种核心手势
HoloLens目前能够识别两种核心手势——空中点击和Home手势。这两个核心手势是开发者可以获取到的最初级的空间输入单位,为用户进行后续更多样的操作打下了基础。
1. 空中点击(Air tap)
空中点击是一种需要将手直立并进行点击的手势,与鼠标的点选比较相似。
这个手势在许多HoloLens应用中等同于“点击”,当用户通过凝视确定目标后,可以通过Air tap进行点击。只要学会这个手势就可以广泛地在各种应用中使用。
其他表示“点击”的交互方式还有按下HoloLens clicker上的按钮,或者用嘴说出“Select”。
Air tap是一个独立的手势。虽然官方不是很推荐,但是也可以将独立的核心手势组合成新的、独立的交互行为,例如赋予连续两次空中点击一个新的含义。
2. Home手势(Bloom)
开花的手势在HoloLens中代表“home”,除此之外不赋予它其他含义。这个手势在系统中表示返回开始界面,和Windows的开始按键或者Xbox的主页按键含义相同。
Bloom手势的使用方式是伸出手,掌心向上,将手指聚在一起,然后将手指张开。此外,也可以通过说“Hey Cortana, Go Home”来返回主页。
三、复合手势
App能识别出的其实不止“点击”这个独立的行为。通过将点击、保持、释放和手的位移进行结合,我们可以表现出含义更复杂的复合手势。
这些高级复合手势是以初级空间输入单位(Air tap和Bloom)为基础的。
1. 点击并保持(Tap and hold)
保持(Hold)就是指保持住Air tap中手指向下的姿势。点击加保持的组合为后续更复杂的操作提供了基础,例如需要胳膊移动的点击并拖拽(Click and drag)。当用户想要拿起某个物品而不是打开它时就可以进行这样的交互。
此外,由于用户有可能在进行这些手势交互的过程中放松手指导致姿势变形,有时需要对用户进行提示。
2. 操控(Manipulation)
操控手势可以用于移动、缩放或旋转一个全息影像,适用于用户想要全息影像和手的操作1:1对应的情况,一个例子就是可以让用户进行1:1的绘画等活动。
操控手势的初始目标定位依赖于凝视或设备指向。一旦点击并保持(Tap and hold)的手势被触发,就可以用手势对已选中的物体直接用手进行操控。对目标的定位不再依靠凝视,让用户在行动时可以自由地查看四周。
3. 导航(Navigation)
导航手势就像一个虚拟的操纵杆,可以用于UI组件上,例如在纵向菜单上进行的导航。
通过点击并保持开始,然后在一个脑补的3D正方体内,以起始点为中心移动你的手。可以将手沿着XYZ三个坐标轴移动,0点就是起始点。
导航手势可以用于基于速度连续滚动或缩放操作,与2D界面中按住鼠标滚轮并向上或向下的操作相似。
有移动轨道(如滚轴)的导航意味着可以在某个确定的方向上移动,直到这个方向上限制的边界。这种做法只在APP有大于一个移动方向的时候有用。
举个例子,一款APP需要识别X轴和Y轴上的移动,但同时在X轴的移动需要移动轨道。在这种情况下,如果导航手势已处于X轴的轨道中,就算手在Y轴上也产生了位移,也只会识别在X轴上的位移。
在2D的APP中,用户可以用纵向的导航手势去滚动、缩放或拖动。HoloLens虚拟世界的手势交互会模仿这样的形式。
用户可以通过APP上方的触发栏去选择要获取这三种交互结果中的哪一种,通过点击选择或者直接说出“
四、手势识别
HoloLens通过跟踪设备可以看到的单手或双手进行手势识别。
当手处于准备状态(Air tap的手指向上状态)或点击状态(即Air tap的手指压下状态)时,HoloLens可以进行识别,其余手势的姿态会被忽略。
我们可以获取到每只HoloLens检测到的手的位置及点击状态。当手靠近可识别范围的边界时,设备会告知越界的方向,开发者可以展示给用户以便他们明白要把手放回到HoloLens可以检测到的范围内。
五、手势的识别范围
在HoloLens中,手势必须放在相机能够准确识别的范围内进行(大致是从脖子到腰与两肩之间的范围)。
我们需要训练用户在这一范围内进行操作,既能提高识别的准确率,也能让用户在使用产品时更舒适(刚开始许多用户会认为用手进行交互时,必须要将手放在HoloLens的视野范围内,因此会刻意地将手举高进行交互,这样做会很难受)。
此外,进行连续的手势交互时,可能会出现用户在手势操作中就将手指移出可识别范围的情况(例如将一个物体拖拽平移),这会导致无法达到用户预期的结果。
关于这部分主要有三件事需要我们注意:
要引导用户明白手势识别的范围和大致边界(HoloLens会在初始setup中就教会用户);
在APP内,应在用户的手势靠近或超过可识别范围时进行提醒。越界后手势中丢失的部分可能会导致无法令人满意的结果。HoloLens要为这种提示做一个好的示范(通过视觉形式在屏幕中央指出,用户在哪个方向、哪条边界超出了界限);
要把超过边界带来的影响最小化。总的来说,这就意味着要使手势交互的内容在进入边界时停止。例如,用户在移动某个物体时,当进入边界后这次移动就应该停止。用户可能会略感疑惑,但是可以很快就意识到边界的存在,同时不必在每次接触到边界时还要重头再来。
原文文档:https://docs.microsoft.com/zh-cn/windows/mixed-reality/gestures