《迷失》中手部追踪的设计与实现
在Meta Quest平台的最新更新中,手部跟踪已经引入到了《神秘岛》游戏中,取名为“Hands & More”。通过使用Presence平台升级的手部跟踪API,玩家现在可以在Quest上玩《神秘岛》而不需要物理控制器。本文将讨论在《神秘岛》中实现手部跟踪的演变和迭代,特别是在Unreal Engine 4.27.2中增加对其的更多支持。
文章中介绍了Cyan工作室的开发总监Hannah Gamiel,她是最初创作《神秘岛》游戏的团队的成员之一。文章还提到了设计手部跟踪时考虑的因素,以及在游戏中使用“指向”方法进行移动的方式。在传送模式下,玩家可以用手指指向目的地并进行传送。在平滑移动模式下,玩家可以用手指指向某个方向以平滑地移动。
在测试中发现,当食指和中指被手的其他部分遮挡时,手部跟踪可能不太可靠。为了解决这个问题,开发团队对代码进行了调整,添加了一些“偏差因子”来提高移动的稳定性。
未来,团队将继续改进手部跟踪功能,并考虑如何在游戏中更好地利用这一功能。该游戏的最新版本正在开发中,将在不久的将来发布。Engine中对即插即用的手部跟踪支持进行了修改。在转向方面,我们最初使用了指向手势和手腕旋转的组合来指示转向的方向和大小。然而,在舒适度测试中发现了问题,大多数玩家更倾向于将手掌伸直向前,类似于在现实生活中指向物体的方式。为了解决这个问题,我们将转向功能分配给了竖起大拇指的手势,而不是指向手势。
此外,为了避免在玩家与物体交互时发生移动,我们限制了手部在一定范围内的运动。经过多次测试,我们确定最佳位置大约是距离食指指尖骨25厘米的地方。这个距离既能满足在狭小的空间中移动,又能防止意外的玩家移动。
在物体交互方面,我们为手部追踪设计了所有可抓取的交互,例如旋转阀门、打开门、按下按钮等。我们根据之前使用触摸控制器设置的经验进行了调整,并通过判断手指的弯曲程度来触发抓取逻辑。
总之,这些修改旨在提高玩家的舒适度和交互体验,并为手部追踪在虚拟现实游戏中的应用打下基础。《迷霧》使用Quest平台上的手部追踪技术,通过定制的手势交互方式实现了与游戏中的物体、按钮进行交互的功能。当玩家握紧手指时,手部模型会被一个橙色的球体替代,表示手与物体连接。这种交互方式与触控手柄按钮的交互方式略有不同,玩家可以灵活地选择使用不同的手势来按下按钮。在菜单和用户界面交互方面,游戏采用了Meta在Quest平台上使用的交互模式,通过大拇指和食指之间的二指捏合实现。为了向玩家传达关于手部追踪的信息,游戏提供了控制器示意图和相关通知。在Unreal引擎中进行的修改包括增强手势和可信度检测,修复系统手势干扰和提高多平台构建稳定性。这段文本讨论了在使用虚幻引擎构建的项目中,如何实现手部追踪和自定义手势识别。由于某些插件只在Windows和Android上可用,因此在构建其他平台时无法引用该插件的组件。为了解决这个问题,可以在需要时生成和销毁手部追踪组件,并通过C++组件在Oculus手柄上实现这个功能。然而,这可能会造成在除了Quest以外的平台上出现本地化问题。此外,虚幻引擎目前没有内置的全手基于手势识别功能,因此可以在Oculus Hand组件中实现自定义的骨骼旋转检测来推断手势,如指向手势、抓取行为和拇指朝上手势。同时,该文本还提到了在某些情况下手部追踪的稳定性问题,如手指被遮挡时可能会导致跟踪不准确。为了解决这个问题,可以根据具体情况设置手指松弛的门槛,以确保准确判断手势的发生。Hand组件的源代码进行了许多修改,但一些实用函数也进行了修改。其中一个功能是一个实用工具函数,用于获取手部碰撞上与世界空间中的某一点最近的点,并返回最近的骨骼的名称。我们在不同的交互中使用该函数进行输入验证。
值得注意的是,当手指被手的其他部分遮挡时,手部追踪系统的稳定性存在一些问题。无论手的深度如何,将跟踪可靠性提高到手腕骨骼处的一致性最好,因此我们更经常在该位置进行测试。
总结
手部跟踪是游戏中非常强大且易用的增加。对于《Myst》来说,我们试图将其与现有的输入系统结合起来,以避免对整个游戏进行大规模的更改。我们的目标是创造出一种直观且舒适的用户体验,而不是构建一个完全独立的输入系统。
Meta与Unreal Engine配套的分支默认支持手部跟踪,并可以进行引擎修改。然而,为了识别有用的整体手势,需要进行一些修改。我们期待Meta在Unreal中对手部跟踪的支持与Unity中提供的相当。对于习惯于在Unreal中进行基于源代码项目开发的团队,他们可以灵活地使手部跟踪与项目相匹配。
我们很乐意听取对我们流程的意见,并了解是否有兴趣让我们在Unreal上提供类似的系统供大家使用和构建。可以通过info@cyan.com与我们联系,或在Twitter上联系Hannah(@hannahgamiel)。感谢阅读!