/ Roadtovr / 0浏览

案例研究:《立体主义》手势跟踪设计

手追踪最早在2019年底登陆Oculus Quest。对于这种新的输入方式的热情,仅仅几天后,我便在SideQuest上发布了《立体拼图》的演示版本,这个版本只支持实验性的手追踪。不言而喻,这个初始版本有一些缺陷,并没有充分考虑到技术的局限性,这就是为什么我决定在Oculus商店的正式发布中最初不包含手追踪支持的原因。经过进一步的开发,并借鉴其他开发者的经验教训,我才能够在最近发布的《立体拼图》手追踪更新中,构建出令我满意的作品。以下是设计过程的内幕。

嘉宾文章作者:Thomas Van Bouwel
Thomas是一位来自比利时和巴西的VR开发者,目前居住在布鲁塞尔。虽然他最初的背景是建筑学,但他目前在VR领域的工作涵盖了像《立体拼图》这样的独立游戏以及为建筑师和工程师开发的企业软件《Resolve》。

这次更新是借鉴了过去一年中许多其他游戏和开发者在手追踪领域的探索经验(如《奇妙的宠物寻宝》、《度假模拟器》、《卢卡·梅菲斯托》、Dennys Kuhnert等)。
在本文中,我将分享一些我在解决《立体拼图》手部交互方面所面临的挑战时学到的东西。
优化精确交互
《立体拼图》的交互围绕着将小的不规则拼图块放置在一个拼图网格中。这意味着手追踪输入的主要要求是精确度,无论是在捡起和放置拼图块到网格上,还是在完成拼图后精确地取出拼图块。这决定了大部分涉及手部输入的设计决策。
幽灵手
我早早决定,不让手以物理方式运作,而是让它们通过拼图块直到主动抓取了一个为止。
这样可以避免在你尝试抓住一个悬浮的拼图块时笨拙地将其推开,更重要的是,当你希望在一个完整的拼图中间取出一个拼图块时,只需伸出手指抓住一个拼图块,而不需要想方设法物理上将其撬出来。

通过透明度提示,我们知道手是虚拟的,这样就更容易从拼图中间取出拼图块了。

接触抓取
有几种方法可以检测用户抓取和释放物体的意图,例如关注手指捏合或手指关节的总体旋转,同时检查手掌的一般交互区域。
对于《立体拼图》的小而不规则的拼图块来说,似乎处理精确性要求最好的方法是基于接触的方法,即当拇指和食指交叉并在小范围内靠近时,拼图块即被抓取,而不需要完全捏合。
类似于《奇妙的宠物寻宝》中的方法,一旦开始抓取,手指就会被固定在原地,以帮助给出更稳定的抓握效果。在抓取时,拼图块被作为父物体连接到手的根节点(手腕),这似乎是对应手部最稳定追踪关节,有助于产生更稳定的握持效果,并确保拼图块与锁定的手指保持对齐。

一旦抓取了一个拼图块,就会保存拇指和食指之间的距离,并基于该距离计算一个释放的边界范围。一旦拇指和食指分开超过该边界范围,拼图块就会被释放。
我们采取了几项保护措施,以防止意外释放:在跟踪置信度低于一定阈值时,我们不检查释放操作;在重新获得跟踪置信度后,我们等待几帧才进行重新检查释放操作。同时,拇指和食指需要在超过释放边界范围几帧之后才会真正释放。

调试可视化:在抓取过程中,指尖之间的初始抓取距离为空心。存档(外部红圈)。当手指尖的实际位置移动超出一定范围(蓝圈)时,作品会被释放。

还有一个类似于《度假模拟器》中过抓的系统。由于抓取物体时缺乏触觉反馈,手指在抓取过程中往往会相互靠近。如果手指相互接触超出了一定阈值,释放的边界会被调整,以使释放物体更容易。
自己试一试:要在游戏中看到这些调试可视化效果,请在“设置 > 手部跟踪 > 调试可视化”中打开“交互小组件”。

调试可视化:如果手指在抓取过程中相互靠近超出某个阈值(内部红圈),则会重新调整释放边界,使释放动作感觉不那么“粘滞”。

这种方法的一个限制是,它使得支持使用除食指以外的手指进行抓取变得更加困难。早期的实现也允许通过中指和拇指进行抓取,但这经常在从完整拼图网格中抓取物体时产生误判,因为很难确定玩家意图使用哪根手指来抓取特定的物体。
如果抓取主要集中在全指夹取上,这个问题将不会存在,因为这种抓取行为会产生一个更明确的二进制输入,以确定用户意图(代价是抓取姿势会感觉不那么自然)。
中点检查

除了检查食指和拇指是否相交的拼图块之外,还会在食指和拇指指尖之间的中点位置进行额外的检查。
无论这个中点悬停在哪个块上,都优先选择该块用于抓取,这有助于避免在一个完整的网格中试图抓取某个块之时产生误判。
在下面的例子中,如果玩家打算通过右侧边缘抓取绿色块,则如果我们没有进行中点检查,他们会意外地抓取黄色块。

左:拇指、食指和指尖之间的中点为黄色→抓取黄色。右:拇指和食指为黄色,中点为绿色→抓取绿色。

抓取拼图

抓取拼图与抓取拼图块类似,只是在拼图周围的抓取区域内进行完整的捏合手势即可。
在从控制器切换到手部时,该区域的大小会动态增大。这使得抓取变得更容易,并有助于减少在抓取网格时意外抓取网格内的拼图块的可能性。

抓取拼图与抓取拼图块类似,只是在从控制器切换到手部时,该区域的大小会动态增大。虽然需要进行完整的捏合手势,但抓取拼图与抓取拼图块类似。

动态手部平滑

Oculus Quest提供的手部跟踪数据仍然可能存在一定的抖动,即使跟踪的置信度很高。这实际上也会影响游戏过程,因为当手持拼图网格或长拼图块时,抖动可能更加明显,这会使得在网格上精确定位拼图块变得更加困难。
对跟踪数据进行平滑处理可以大幅改善稳定性的把握,但需要适度进行,因为过度平滑会导致手部产生“延迟”感。为了平衡这一点,在Cubism中,手部平滑会根据手部是否正在持有物体而进行动态调整。
自己试一试:要查看手部平滑的影响,请在“设置 > 手部跟踪 > 手部平滑”中尝试关闭它。

增加手部持物时的平滑度有助于更稳定的握持,使得在网格上进行精确定位变得稍微容易一些。

按下按钮

我注意到Cubism最初版本的手部跟踪演示中,大多数人都试图按下按钮,尽管当时不支持这样操作。因此,我在这个新版本的手部跟踪中的一个目标就是使按钮能够被真正按下。
当从食指尖的射线命中按钮背后的碰撞器时,可以悬停在按钮上。如果食指然后与碰撞器相交,按下按钮。如果指数交叉碰撞体而没有悬停在上面,不会触发按下动作。这有助于防止手指从底部向上移动时出现虚假按下的情况。
还有一些其他的检查来防止虚假触发:当手指没有面向按钮时,或者玩家按下按钮时没有注视手指时,光线投射被禁用。
自行尝试:要在游戏中查看此调试可视化效果,请转到“设置 > 手部跟踪 > 调试可视化”并打开“交互小部件”。

调试可视化:从指尖发出的射线检查手指是否悬停在按钮上。为了防止虚假触发,当手指没有面向按钮时或者玩家没有注视手指时,禁止交互。

引导交互
构建任何与手部跟踪相关的交互的主要挑战之一是,与控制器上的按钮只有按下与未按下两种状态不同,人们可能会有许多不同的方法来操作手部交互,但期望的结果却是相同的。
与不同背景的人进行玩测试可以帮助您了解人们如何处理所呈现给他们的交互,并帮助完善引导他们进行预期动作的交互线索。通过玩测试,您还可以了解一些可能需要增加交互冗余来处理的特例情况。
交互线索
在抓取对象时,有几个线索可供参考。当用户首次悬停在一个对象上时,他们的食指和拇指会变成该对象的颜色,既表示可以抓取,又表示可以使用哪些手指来抓取(灵感来自Luca Mefisto、Barrett Fox和Martin Schubert的先前作品)。同时,会通过高亮显示对象来指示可以抓取该对象。
在抓取成功时,还有一些线索:指尖变得实心,对象上的高亮闪烁,同时播放短音频提示。

手部和拼图块上的各种线索引导并确认了抓取交互。

按钮上有几个线索表明它们可以按下。与拼图块类似,当悬停在按钮上时,食指的指尖会变成白色,指示哪个手指可以进行交互。与控制器上的按钮一样,按钮在悬停时会向外延伸,但这次延伸的按钮实际上可以按下:一旦食指触碰到按钮,按钮会跟随手指直到完全按下,然后播放一个音频提示来确认点击。
按钮表面上的微弱投影阴影指示了食指相对于按钮的位置和距离,从而有助于引导按下交互。

各种线索指导与按钮的交互:按钮在悬停时向外延伸,食指的指尖被突出显示,投影阴影显示了指尖的交互位置,按钮在按下时跟随手指移动。

交互冗余
由于某些人可能会以意外的方式进行某些交互,尽可能地考虑到这一点并增加一些冗余来适应人们使用手部进行交互的方式可能会很有好处。交互线索仍然可以指导他们进行预期的交互,但冗余可以帮助避免他们陷入无法必要地陷入困境。
在抓取拼图块时,一些测试者开始时会用拳头而不是用指尖拿。通过将碰撞器覆盖整个手指而不仅仅是指尖,可以注册部分这样的初次抓取。

值得注意的是,这种方法仍然需要改进,因为在玩区域中有很多浮动的拼图块时也会产生一些意外的抓取问题。将来更好的方法可能是通过检查手指的完整旋转来适应拳头抓取。似乎是因为玩家先前学会了在Oculus首页屏幕上捏住按钮,然后再启动游戏时出现的问题。

因此,按钮在悬停时也可以通过捏住来点击,希望凸显的指标和阴影最终可以引导他们按下按钮。

在悬停在按钮上时,捏住也会被注册为点击。

当玩家使用手时,首次遇到的按钮明确标明“按下开始”,以帮助用户从捏住转变为按下,方便切换Oculus主菜单后的操作。

教学限制

尽管Quest的手部追踪质量在过去一年中有所改善,但仍有其局限性,玩家对这些局限性的认识对他们对体验的好坏有很大影响。

Cubism采用了一些方法来向玩家介绍Quest的手部追踪的当前局限性。

当玩家第一次切换到手部追踪(无论是在启动时还是在游戏中),一个模态框会向他们展示一些最佳实践,例如在光线充足的空间中玩耍,避免交叉双手。

当用户切换到手部追踪时,一个模态框会向他们介绍限制和最佳实践。通过“按下开始”的指示,帮助新用户了解在本游戏中按钮可以自然按下。

重要的是要意识到大多数人可能会立即忽略这样的模态框或迅速忘记其中的指导方针,因此在体验过程中指示为何会出现问题也很重要。

在Cubism中,当追踪失败时,手会变为红色,以示警告。在一些测试中,人们会将一只手放在膝盖上并用另一只手玩游戏,然后对于为什么他们膝盖上的手会显示为冻结状态感到困惑。为了帮助解释这种情况,一个信息会显示在手部上,清楚地解释手部为什么会冻结,如果追踪损失持续存在。如果追踪失败是因为玩家交叉双手,消息会更改以告知他们不要这样做。

对于更有经验的玩家或喜欢单手游戏的玩家,可以在设置中将红色手和警告消息替换为在追踪丢失时手部淡出,更接近Oculus主菜单中的行为。

未来工作

Quest的手部追踪仍然有其局限性,尽管Cubism对其的支持已经进入第二个版本,但仍有很大的改进空间。

无论如何,我对开始探索和支持这些新的输入方式感到兴奋。短期来看,我认为它们可以帮助使像这样的体验更加易于获得,并且更容易与新的VR用户共享。

在长期来看,手部追踪似乎有很大的机会成为未来独立AR设备的首选输入方法,希望这次更新可以是朝着AR版Cubism迈出的第一小步。

如果您喜欢这篇关于Cubism手部追踪设计的介绍,请务必查阅Thomas之前的客座文章,其中概述了整个游戏的设计。

0

  1. This post has no comment yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注