研发实战:详解益智游戏《Cubism》的手部追踪设计过程
查看引用/信息源请点击:roadtovr
手部追踪输出背后的设计
(映维网 2021年04月01日)益智游戏《Cubism》由独立开发者托马斯·范·布威尔(Thomas Van Bouwel)利用业余时间设计开发的项目。根据RoadtoVR的排名,这款作品的用户评分为Quest最高,而且拥有超过100条评论。VR开发者布威尔是巴西人,目前生活在比利时布鲁塞尔。尽管最初涉足的是建筑领域,但他目前在虚拟现实领域的作品涵盖了诸如《Cubism》这样的独立游戏,以及面向建筑师和工程师的企业软件,如Resolve。
最近《Cubism》的迭代版本新增了手部追踪支持,而布威尔撰文介绍了相关的设计过程。下面是映维网的具体整理:
手部追踪最初是在2019年年末首次登陆Oculus Quest。出于对这种全新输入机制的热情,我在数天后在SudeQuest发布了包含实验性手部追踪支持的《Cubism》demo。这个最初的演示内容存在数个缺陷,没有真正考虑到技术的局限性,所以当决定在Oculus Store正式发行《Cubism》时,我首先跳过了手部追踪支持。它需要进一步的开发,吸取从其他开发者身上学到的经验教训。最终,手部追踪功能于最近纳入至《Cubism》的迭代更新之中。下面是设计过程的介绍。
1. 为精确交互而优化
《Cubism》的交互主要涉及将不规则的小拼图块放到拼图网格里面。这意味着无论是在拾取拼图和将拼图放置到网格里面,还是从完成的拼图中精确地捡出拼图,手部追踪输入的主要要求是精度。这为大多数关于手部输入的设计决策提供了依据。
1.1 鬼手
我很早就决定不让双手基于物理,而是让它们穿过拼图,直到手主动抓住一块拼图。
通过这样的方式,当试图抓取漂浮的拼图块时,你就不会笨拙地将它们推开。但更重要的是,这使得用户在完整的拼图中抓取拼图块变得更容易,因为你可以直接插入手指并抓取一块拼图,不需要想办法如何撬开它们。
1.2 接触式抓取
有几种方法可以检测用户想要抓取和释放对象的意图,比如在检查手掌的一般交互区域时,可以关注手指的抓捏动作或手指关节的整体旋转。
但对于《Cubism》中的小而不规则的拼图块来说,处理精度要求最好的方法似乎是基于接触的方法,即只要拇指和食指与同一块拼图相交并捏合一小段距离(不需要完全捏紧),就指示手拾起一块拼图。
类似于《The Curious Tale of the Stolen Pets》,只要抓取动作开始,系统就锁定手指,以帮助提供一种更稳定的抓取印象。在抓取时,拼图块绑定至手的根部(手腕)。因为这似乎是最稳定的追踪关节,它有助于产生一个更稳定的抓取感,并保证拼图块保持与锁定的手指对齐。
一旦抓取一个拼图块时,拇指和食指之间的距离就保存起来,并根据距离计算释放margin。一旦拇指和食指分开超过这个margin,就释放拼图块。
有几种安全措施试图防止意外释放:当追踪置信度低于某个阈值时,我们不检查释放,在重新获得追踪置信度后,我们会等待几帧,直到再次检查释放。在实际释放之前,手指需要超出释放margin好几帧。
还有一个类似于《Vacation Simulator》的系统。由于抓取对象时缺乏触觉反馈,所以在抓取时手指彼此过于靠近的情况并不少见。如果闭合程度超过某个阈值,则调整释放margin以使拼图块更容易释放。
这种方法的一个限制是,它使得食指之外的手指拾取变得更加困难。早期的实现允许使用中指和拇指进行抓取,但当从完整的拼图网格中抓取拼图时,这通常会导致误报,因为很难评估玩家打算用哪根手指抓取特定的拼图。
如果抓取是围绕着完整的手指捏合进行,问题就不复存在,因为这样会产生一个更清晰的输入二进制文件来确定用户的意图。但是,代价是不太自然的抓取姿态。
1.3 中点检查
除了检查食指和拇指相交的拼图块之外,我们还要检查食指和拇指指尖之间的中点。
这个中点停留在哪一个拼图块,就优先抓取那一个拼图块,这有助于避免当玩家试图在一个完整的网格中抓取一个拼图块时出现误报。
在下面的例子中,如果玩家想要抓住右边的绿色拼图块,若我们没有进行中点检查,手会无意中抓住黄色拼图块。
1.4 抓取整个拼图
抓取整个拼图网格的原理与抓取拼图块的原理类似,不同的地方在于:它是利用在拼图网格周围的抓取区域内执行完全抓捏来启动。
当从控制器切换到手时,这个区域的大小将动态增加。这使得抓取更容易一些,并且有助于减少意外抓取网格中的一个拼图块而不是网格本身的可能性。
1.5 动态手部平滑
即便追踪置信度很高,Oculus Quest提供的手部追踪数据仍然存在一定的抖动。这实际上会影响游戏的进行,因为当握住拼图网格或一个长拼图块的边缘时,抖动会更加明显,使得在精确放置拼图块更加困难。
平滑追踪数据可以在很大程度上产生更稳定的抓取效果,但需要适度地进行,因为太多的平滑会导致一种“滞后”感觉。为了平衡这一点,《Cubism》的手部平滑是动态调整,具体取决于你的手是否握持任何对象。
1.6 按压按钮
对于《Cubism》最初的手部追踪演示内容,我注意到的一点是,尽管当时并不支持,但大多数人都会尝试按下按钮。所以,我的目标之一是令按钮变得实际可按压。
当食指尖的光线投射击中按钮背面的碰撞器时,按钮可以悬停在上方。如果食指与碰撞器相交,则会注册按压。如果食指与碰撞器相交而未先将其悬停,则不会注册任何按压。这有助于防止手指从下到上移动时出现误报。
另外还有一些检查可以防止误报:当手指没有朝向按钮时,或者当玩家执行按压动作时没有看着手指时,禁用光线投射。
2. 引导交互
为手部追踪构建任何交互的主要挑战之一是,不同于控制器的按钮被按下或不被按,玩家可能会尝试不同的方法来进行双手交互,并且期望得到相同的结果。
对不同人群进行游戏测试可以帮助你了解玩家是如何处理呈现的交互,并有助于优化引导玩家执行预期手势的交互提示。通过添加一定的交互冗余,玩家测试同时可以帮助你了解一些你可能想要捕获的异常值。
2.1 交互提示
抓取拼图块时会提供几个线索。当用户第一次悬停在一个拼图块时,他们的食指和拇指会呈现出与拼图块对应的颜色,这既表示可以它可以抓取,又可以表示应该用什么手指进行抓取。
当抓取成功时,会有几个提示显示:指尖变硬,拼图块的高光闪烁,并播放一个简短的音频提示。
为了帮助说明可以按压,按钮有几个提示。就像拼图块一样,当你悬停在按钮上时,食指尖会以白色突出显示,这表明哪个手指可以用于交互。就像控制器一样,按钮在悬停时向外延伸,但这次可以实际按下扩展按钮:一旦食指触到它,它会跟着手指直到完全按下为止,而此时会有音频提示确认点击。
按钮表面的细微滴影指示食指到按钮的位置和距离,并帮助指导按键交互。
2.2 交互冗余
因为有些人可能会以非预期的方式进行交互,所以在可能的情况下,可以尝试添加一定的冗余。交互提示依然可以引导玩家进行预期的交互,但交互冗余可以帮助他们避免不必要的卡顿。
对于抓取拼图块,一些游戏测试者会尝试先用拳头来抓取棋子,而不是用指尖。通过让碰撞器覆盖整个手指而不是仅仅覆盖指尖,系统仍然可以记录相当数量的拳头抓取。
需要说明的是,这种方法仍然需要一些改进,因为它另外带来了一些问题:在游戏区域存在大量浮动拼图块的情况下,这会产生意外抓取。未来更好的方法可能是检查手指的总旋转来代替抓拳头抓取。
对于按钮,有一些游戏测试员会尝试抓捏按钮而不是按下按钮。这可能是与进入游戏前的Oculus Home屏幕按钮操作教学有关。
因此,按钮在悬停时可以通过抓捏来实现点击,希望高亮显示的食指和阴影等提示能够最终引导玩家按下按钮。
玩家遇到的第一个按钮将明确地提示“Push to Start/按下以开始”,从而帮助玩家从Oculus Home菜单的抓捏过渡至按压。
3. 教学局限
尽管Quest的手部追踪质量在过去一年间有所提高,但它依然存在其局限性。玩家对这些限制的意识可能会对体验的感知产生很大影响。
《Cubism》会教导玩家关于手部追踪当前的限制。
当玩家第一次切换到手部追踪时,系统会告诉他们一些最佳做法,比如在灯光充足的空间里游戏,避免交叉双手。
重要的是要承认,大多数人很可能会立即跳过,或者很快忘记它的指导原则,所以,明确指出什么可能会出错将非常重要。
对于《Cubism》,当追踪丢失时,手会变成红色。在一些游戏测试中,玩家会把一只手放在大腿,只用另一只手玩。这时,玩家会困惑为什么膝关节会冻住。为了帮助通知类似情况,手部会显示一条消息,以明确说明如果追踪丢失持续存在,手就会冻结。特别是如果是因为玩家交叉双手而丢失追踪,消息将会变成要求玩家不要这样做。
对于经验更丰富的玩家,或者更喜欢单手游戏的玩家,你可以在设置中替换所述功能,让手在失去追踪时淡出。这与Oculus Home菜单中的行为更为相似。
4. 未来
Quest的手部追踪依然存在其局限性,而且《Cubism》的支持只是刚刚开始,所以未来有很大的改进空间。
不管怎样,我非常高兴能够开始探索和支持这种全新的输入方法。在短期内,我认为它们可以帮助体验触及更多的新VR用户。
从长远来看,手部追踪很有可能成为未来AR一体机的首选输入,所以希望这次更新能够为未来的AR版《Cubism》奠定基础。