“用手指向和提交”是一种输入模型,它使用户能够对无法触及的 2D 和 3D 内容进行定位、选择和操作。 这种“远程”交互技术是混合现实所独有的,因为人类不会自然地以这种方式与现实世界交互。 例如,在超级英雄电影《X 战警》中,角色 Magneto 能够用手操控远处的对象。 这是人类在现实中无法做到的。 在 HoloLens (AR) 和混合现实 (MR) 中,我们赋予了用户这种神奇的力量,打破了现实世界的物理约束。 这不仅能让用户享受到愉悦的全息体验,还能让互动更加有效、高效。
设备支持
输入模型 | HoloLens(第 1 代) | HoloLens 2 | 沉浸式头戴显示设备 |
使用手指向和提交 | ❌ 不支持 | ✔️ 推荐 | ✔️ 推荐 |
“用手指向和提交”是使用新的铰接式手跟踪系统的新功能之一。 该输入模型也是沉浸式头戴显示设备上通过使用运动控制器实现的主要输入模式。
手部射线
在 HoloLens 2 上,我们创造了一种从用户手掌中心射出的手部射线。 该射线被视为手的延伸。 圆环形光标连接到射线的末端,以指示射线与目标对象相交的位置。 然后光标所指向的对象可以接收来自手的手势命令。
该基本手势命令通过使用拇指和食指进行隔空敲击动作来触发。 通过使用手射线指向和隔空敲击以提交,用户可以激活某个按钮或超链接。 借助更多的复合手势,用户可以在 Web 内容中导航,并从远处操纵 3D 对象。 手部射线的视觉设计也应对这些指向和提交状态做出反应,如下所述:
“指向”状态
在指向状态下,射线是虚线,光标是圆环形状 。
“提交”状态
在提交状态下,光线变为实线,光标缩小为点 。
在远近之间转换
我们没有使用“食指指向”这样的特定手势来引导射线,而是将射线设计为从用户手掌中心发出。 这样,我们解放并留出了五根手指来做更多的操控性手势,如捏和抓。 通过这种设计,我们只创建了一个心理模型 – 同一组手势用于远交互和近交互。 可以使用相同的抓取手势来操纵不同距离的对象。 射线的调用是自动的,并且基于邻近度,如下所述:
近操作
当对象在手臂长度范围(大约 50 cm)内时,射线会自动关闭,支持近距交互。
远操作
当对象距离超过 50 cm 时,将启用射线。 转换应该顺利无缝。
2D 平板电脑交互
2D 盖板是装有 Web 浏览器等 2D 应用内容的全息容器。 与 2D 平板电脑进行远距离交互的设计理念是使用手部射线进行瞄准,并隔空敲击以进行选择。 在用手部射线瞄准目标后,用户可以通过隔空敲击来触发超链接或按钮。 他们可以用一只手“隔空敲击并拖动”来上下滚动盖板内容。 使用两只手进行隔空敲击和拖动的相对运动可以放大和缩小平板电脑内容。
在角落和边缘处瞄准手部射线可显示最接近的可视操作元素。 通过“抓取和拖动”操作视觉元素,用户可通过边角视觉元素进行统一缩放,然后通过边缘视觉元素重排盖板。 用户可以通过抓取并拖动 2D 盖板顶部的全息条来移动整个盖板。
操作 2D 盖板
- 用户在角落或边缘处指向手部射线可显示最接近的可视操作元素。
- 通过对视觉元素应用操作手势,用户可通过边角视觉元素进行统一缩放,然后通过边缘视觉元素重排盖板。
- 通过在 2D 盖板顶部的全息条上应用操纵手势,用户可以移动整个盖板。
3D 对象操作
在直接操作中,用户可以通过两种方式操纵 3D 对象:基于视觉元素的操作和非基于视觉元素的操作。 在指向和提交模型中,用户能够通过手部射线实现完全相同的任务。 不需要额外的学习。
基于可视操作元素的操作
用户使用手部射线指向并显示边框和可视操作元素。 用户可在边框上应用操作手势来移动整个对象,在边缘视觉元素上应用操作手势来旋转对象,以及在边角视觉元素上应用操作手势以进行统一的缩放。
非基于视觉元素的操作
用户用手部射线指向以显示边界框,然后直接对其应用操作手势。 如果用一只手进行操作,对象的平移和旋转将与手的移动和方向相关联。 如果用两只手进行操作,用户可以根据两只手的相对运动来平移、缩放和旋转对象。
本能手势
指向和提交的本能手势的概念类似于用手直接操作的概念。 用户在 3D 对象上执行的手势是由 UI 视觉元素的设计引导的。 例如,一个小的控制点可能会促使用户用拇指和食指来捏,而用户可能希望用全部五根手指来抓一个较大的对象。
手部与 6 DoF 控制器之间的对称设计
远程交互的指向和提交概念最初是为混合现实门户 (MRP) 创建和定义的。 在此场景下,用户戴上沉浸式头戴显示设备,通过运动控制器与 3D 对象进行交互。 运动控制器射出光线来指向和操纵远处的对象。 控制器上有用于进一步提交不同操作的按钮。 我们应用射线的交互模式,并将其与双手关联。 借助这种对称设计,熟悉 MRP 的用户在使用 HoloLens 2 时不需要学习另一种交互模式来进行远距离指向和操纵,反之亦然。
Unity 的 MRTK(混合现实工具包)中的手部射线
默认情况下,MRTK 提供一个手部射线 prefab (DefaultControllerPointer.prefab),其视觉状态与 shell 的系统手部射线相同。 它分配在 MRTK 的输入配置文件的“指针”下。 在沉浸式头戴显示设备中,相同的射线会用于运动控制器。
(文章来源:微软)