〔Part 2〕Oculus Quest手部交互指南之最佳实践
关于实现手部追踪的技巧
(映维网 2020年02月26日)Oculus日前为开发者带来了“Designing for Hands”设计指南,用以帮助开发者利用Hand Tracking(手部追踪)功能构建体验。团队同时利用一系列的博文来介绍相关的原则技巧和最佳实践。下面映维网进行了相应的整理:
最佳实践
Oculus汇总了一系列通过研究,测试和设计所发现的最佳实践。Oculus将为你提供经过研究测试后验证的交互,组件和最佳实践。团队同时纳入了其流程背后的原则。需要注意的是,所述信息绝非详尽无遗,但应该能够为你提供一个合适的起点,允许你借鉴Oculus团队迄今为止所积累的经验教训。他们表示,希望这可以为帮助你设计体验,并挖掘双手在虚拟现实中的潜能。
1. 捏合
拇指-食指捏抓是我们首选的选择方法。拇指和食指之间的接触可以弥补其他输入设备所通常无法提供的触觉反馈。
捏抓的效果同时非常出色,因为它易于操作并且易于记忆。更重要的是,它并不是经常使用的手势,所以系统不太可能拾取意外的触发。
注意:捏抓具有三种状态:Open(打开),Closing(闭合中)和Closed(闭合)。“Closing”状态是一种用于确认用户行动意图的方式,可以使他们确信传感器正在加速运动。如果拇指和食指意外地接近彼此,这将可以防止意外选择。
2. 意符和反馈
手无法如同控制器和其他输入设备那样提供触觉反馈。在整个用户交互过程中,以视觉和音频作为补充非常重要。
Oculus以两种方式进行考虑:Signifiers(意符)传达用户可以向给定对象执行的操作。Feedback(反馈)会在整个交互过程中确认用户的状态。视觉上,对象可以改变形状,颜色,不透明度,甚至是空间中的位置(例如,一个按钮朝着接近的手指移动可以表示它已被按下)。你同时可以调整音量,音高和音调以提供音频反馈。所述元素可以协同工作,以在用户浏览系统时无缝地提供引导。
2.1 组件
每个组件都旨在在整个用户交互过程中提供连续的反馈。
- System Pointers:系统指针看起来像是可以捏压,其表示你应该进行捏抓并与之交互。当拇指和食指互相接近并完成捏合时,它们会改变形状
- Buttons:当瞄准后,按钮会立即开始反应,不仅仅只是在按下按钮后才响应
- Cursors:光标在整个用户交互过程中会改变大小和颜色
- Hands:双手会改变状态,以告知用户系统于何时开始主动地进行追踪,以及何时要采取行动
2.2 音频反馈
鼠标和键盘能够提供令人满意的触觉反馈。控制器同样可以通过振动提供触觉反馈。由于单纯的手部操作没有任何可比的触觉反馈,所以设计独特的声音以确认用户何时与组件进行交互非常重要。
注:Oculus团队发现,很容易过度校正并创建一个过于嘈杂的系统,所以请注意找到合适的平衡点。
2.3 本体触觉反馈
将捏抓作为选择方法是一种在交互过程中提供触觉反馈的方式。拇指和食指之间的接触可以令人满意地表示单击按钮或正在抓握对象。
2.4 光线投射
光线投射是Oculus用于远场瞄准的首选交互方法。
- 这种选择方法适合成为为控制器设计的应用程序的交互模型
- 从人体工学的角度来看,它比长时间的直接交互更舒适,因为它可以允许用户保持中性的姿态
- 光线投射允许多种形式的反馈,因为你可以将光标和指针设计为确认交互状态。
2.5 混合射线
Oculus实验了从手腕开始的追踪,但他们发现在进行光线投射时,手会产生一定程度的自然震颤。为了解决这个问题,团队使用了身体的第二位置来稳定光线投射。
这个第二位置的最佳起点取决于站姿或坐姿。对于站立体验,肩部射线效果很好,因为目标对象很可能位于肩膀的下方。就坐时,目标对象的高度很可能需要将手腕抬到不舒服的高度,所以髋部附近的原点是一种较为舒适的选择。
但对于大多数体验,你难以知晓用户是坐着还是站着,而他们甚至可能在两者之间自由转换。Oculus的解决方案是,开发一个根据注视角度在肩膀和臀部之间切换的混合型光线投射模型。
3. 追踪
在设计体验时,计算机视觉存在一系列需要考量的重要限制因素。
3.1 追踪量
传感器的追踪量有限,这意味着它将不会检测到其水平和垂直视场之外的对象。为了确保能够追踪用户的相关动作,请尝试避免强迫人们超出追踪范围。但请记住,手部的追踪量大于显示视场,亦即用户看不见手部的时候,系统都有可能追踪到手部。
3.2 遮挡
传感器越是能看到手部,追踪就越稳定。所以请尝试鼓励用户将手掌朝向或背离头显的交互设计。如果手指卷曲在手掌之中或出现其他遮挡情况,则追踪精度将会减少。
由于当前的计算机视觉限制,避免两只手重叠同样非常重要。解决这个问题的一种好方法是,设计可以只用一只手执行的交互。
4. 人体工学
设计体验时,请务必确保用户尽可能保持身体中性。理想情况下,用户在与系统进行交互的同时确保手臂靠近身体,并且肘部与臀部对齐。这样可以提供更舒适的人体工学体验,同时将手保持在传感器的理想追踪范围。
设计交互时应尽量减少肌肉劳损,所以请不要致使用户过于频繁地伸远双手。在空间中组织信息时,用户最常与之交互的功能应更贴近人体。在另一面,重要程度越低,你可以将其放置在离身体越远的地方。
5. 手部表示
在最基本的层次上,手部表示需要实现两个功能
- 在虚拟现实体验中提供一种具现感
- 让用户知道他们的双手能够做什么
你首先想到的可能是创建人手的逼真表示,但这可能是一项成本昂贵且困难的工作。过于逼真的手部通常会出现一种恐怖谷效应,而糟糕的手部表示则会使用户感到虚假。所以,请仔细考虑哪种方法最适合你正在构建的体验。
如果手部的视觉表示是沉浸式体验的重要组成部分,你需要要确保提供足够的具现化,或者可以根据用户的需要对其进行自定义。
如果双手主要是输入而非体验一部分,采用切合实际的功能是理想的选择。这意味着手部表示本身可以让人们知道它们在给定的体验中可以做什么,不需要提供过多的细节,因为它们可能很难产生且容易出错。
6. 手部状态和逻辑门
想象一下这样的情况:每次移动手时你都会无意中拖动一个虚拟台灯。建立逻辑门有助于避免这种情况,过滤掉意外交互的常见情况。以下是Oculus团队成功运用的逻辑门示例。
6.1 待机状态
当手处于静止状态时,它们通常仍处于追踪视场中。但当双手放松时,他们往往会成蜷曲状,并可能触发意外的交互。为了解决这个问题,Oculus尝试了一种待机状态。
将手放到距头部一定距离且在特定时间内没有移动的情况下,手将进入待机状态。要结束待机状态,手部必须重新进入追踪视场并更改为捏合状态。
6.2 指向状态
除非用户明确指出他们希望与系统交互,否则保持不变的光标和指针可能会分散其注意力。建立指向状态可以帮助系统知道何时需要指针和光标。
双手没有Home按钮,所以我们需要为用户提供一种在第三方应用程序和体验中召唤系统菜单的方式。为防止用户在沉浸式体验中意外执行手势,Oculus通过两种方式对手势执行逻辑门:抬起手掌并看着它,然后捏合。
抬起手掌既有助于传感器追踪,同时又是一个非常不寻常的姿势,所以不太可能意外地执行。然后,手会发光,以告知用户它们已进入状态。所以,如果是无意为之,他们可以放下手 最后,用户必须捏合以完成手势并召唤系统。
注意:尽管大多数交互都是通过模拟控制执行,但这个系统手势是一个优秀的案例研究,它说明了如何令抽象手势具有响应能力,同时牢记逻辑门。