XR 的未来在于“以手为先”——而 Unity 的工具已准备就绪

Jun 11, 2026|5 Min
一个第一人称XR视角,展示两只虚拟手正在与一个场景进行交互,该场景中包含标有“UI Poke Components”、“UI Scrollview”、“Manipulation”和“Snap Socket”标签的用户界面面板,且有蓝色3D物体散布在曲面上。
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

合著者:Isaac Seah(首席技术产品经理)、Alexandra Serralta(高级软件工程师)、Ketki Jadhav(资深产品设计师)和Dave Ruddell(软件工程高级经理)

为什么“以手为先”是XR的未来

手部追踪作为一种输入方式在XR领域已得到支持多年,但大多数项目仍将其视为次要功能,通常是在围绕控制器构建核心体验之后才添加的。对于日益增多的使用场景而言,这种优先级安排已不再合理。以手势、肢体动作或直接与物体互动为核心的游戏,本质上更适合通过双手来操作:这样更自然、更直观,而且是手柄无法复制的。

从历史上看,要实现这一目标,必须克服两大关键的技术挑战:构建可靠的用户自定义手势需要大量脚本编写工作,而且如果没有头显设备在身边,就很难对手部交互进行迭代优化。Unity 的 XR 套件中新增的两项功能直接解决了这两个问题。XR Hands 包中的“XR 手部捕捉”功能可让您在设备上记录真实的手部姿势,并将它们导入 Unity 作为可重复使用的手势素材资源。“手部模拟”功能已集成到 XR Interaction Toolkit 中,XR Interaction Simulator 位于 Unity 编辑器中,为 Unity 编辑器带来了完整的手部追踪开发体验,让您无需头显即可进行迭代开发。

本文介绍了这两项功能的工作原理、适用场景以及如何将其集成到现有项目中。

XR Hands Capture

XR Hands 包通过 XRHandSubsystem 每帧暴露关节数据。基于这些数据构建手势,意味着需要定义一组关节角度和手指形状的条件,当这些条件同时满足时,即构成一个被识别的手势。对于捏合和点击等简单手势,该包已提供开箱即用的实现方案。对于任何自定义操作,之前的方案都需要针对每个手指进行形状配置,这意味着必须完全在设备上进行迭代。

虽然这种手动操作是基础,但与如今借助XR Hands Capture所能实现的效果相比,它不仅速度慢,而且可靠性也较低。对于标志性姿势、3D 物体操作或精细的用户界面控制等游戏机制而言,精准的手势还原至关重要,但过去若需手动定义每个手指的形状,要实现这一点却十分困难。这些近似方法产生的解决方案不仅生成速度缓慢,在适应不同手型时也较为脆弱,而且缺乏那种对打造真正引人入胜的“以手为先”体验至关重要的自然、直观的手感。

一张分屏图展示了XR手部捕捉工作流的两个步骤:左侧显示头显界面正在设备上捕捉竖起大拇指的手部姿势;右侧显示已导入Unity编辑器检查器并显示的捕捉到的手部骨骼模型。
XR 手部捕捉:在设备上记录姿势并将其导入 Unity

工作原理

XR Hands Capture 通过在您在设备上执行姿势时记录 XRHandSubsystem 生成的实际关节数据,并据此生成一个 XRHandShape 素材资源,从而解决了这一问题。您是基于真实数据而非近似值来设计手势,这意味着生成的交互效果在不同手掌大小和动作变化下都能保持更佳的稳定性,并且能带来预期中的自然体验。

工作流程:

  • 在“包管理器”中导入 XR Hands 包中的 HandCapture 示例。
  • 在您的 OpenXR 设备上部署并打开示例场景。
  • 摆出你想拍摄的姿势。该场景将来自 XRHandSubsystem 的实时关节数据记录到 XRHandCaptureSequence 中。
  • 使用“XR 手部捕捉”检查器窗口(Windows > XR > XR 手部捕捉)将录制内容导入 Unity 编辑器。
  • 提取 XRHandShape 素材资源——这是手部姿态的序列化表示,任何 StaticHandGesture 组件或自定义检测逻辑均可引用该资源。
  • 如有必要,请调整公差,并重新记录以进一步优化。
在头显上运行的 XR Hands 手部捕捉示例场景,界面中依次显示六个可选的手部姿势选项,配有“查看步骤”和“开始”按钮,并附有说明:“通过头显直接录制即可快速创建手部形状,无需编码或设置手指值。”
在 OpenXR 设备上运行的 XR Hands 手部捕捉示例场景

由于 XRHandCaptureSequence 和 XRHandShape 都是基于真实的捕捉数据生成的,因此您构建的手势库能够真实反映双手的实际运动轨迹,从而让玩家在使用这些交互时感觉非常自然。这也意味着非工程师也能参与手势设计:设计师或动画师无需编写代码,即可直接在设备上录制并迭代姿势,从而让设计师和动画师——也就是最关注交互体验的人群——能够直接参与交互体验的塑造。

XR交互模拟器中的手部模拟

“XR Interaction Toolkit”中的“XR Interaction Simulator”允许开发者在无需实体设备的情况下,直接在 Unity 编辑器内运行 XR 体验,这对于早期迭代阶段尤为有用——因为在每个测试周期中都要佩戴头显会带来显著的额外负担。直到最近,它才支持控制器输入。基于手部追踪技术开发的项目没有同类产品,这意味着手部交互功能的开发在根本上依赖于头显设备。现在,除了“戳”、“捏”和“抓”等标准的内置手势外,您还可以在模拟器中直接测试自己自定义的手势——这是 Unity 的 XR 工具之外其他地方所没有的功能。

这是 Unity XR 交互模拟器的放大视图,展示了 XR 环境中的两只半透明虚拟手,其中左手正在执行捏合手势,叠加的用户界面上显示了标有“轻触”、“捏合”和“抓取”的手势控制选项。
在 Unity 编辑器内的 XR 交互模拟器中测试手势

入门指南

首先下载最新版本的 Unity(6.3 或更高版本),然后通过 Unity 包管理器添加这些功能。

  • XR Hands Capture 作为 XR Hands 软件包(1.7 及更高版本)的一部分随软件包一同发布。您可以安装或更新至最新版本,并导入 `HandCapture` 示例以开始使用。完整的文档和 API 参考请参见 XR Hands 文档
  • “手部模拟”功能可在 XR 交互模拟器中使用,它是 XR Interaction Toolkit(3.5 及更高版本)和 XR Hands(1.8 及更高版本)的一部分。请安装或更新至最新版本,并导入 XRI Starter Assets 素材资源示例。有关设置的详细信息,请参阅 XRI 文档。

为了提供更广泛的入门参考,XR Interaction Toolkit示例中包含了涵盖常见“以手为主”交互模式的参考场景。如果您正在寻找关于 XR Hands 手部捕捉的具体社区参考资料,Dilmer Valecillos 整理了一个值得一看的手部捕捉演示项目。想知道开发者们正在用 Unity XR 开发什么吗?看一下

接下来会发生什么

当前的工作涉及这两个软件包。在 XR Hands 中,主要功能包括:姿势数据符合 OpenXR 规范、支持 Palm Pose 扩展、针对捏合、点击、瞄准及设备姿势的输入动作映射,以及点击交互的优化。我们还正在扩展对 OpenXR 扩展的支持,这些扩展可揭示手部数据是源自裸手摄像机追踪还是控制器驱动的估计,这对希望根据玩家的实际交互方式调整游戏机制的游戏而言至关重要。在 XRI,随着“先动手”用例的增加,我们继续投资于 XR 交互模拟器,将其作为设备端测试的可靠替代方案。

欢迎于美国东部时间7月9日中午12点参加我们的直播活动,届时将有来自Meta的特邀嘉宾现场演示XR Hands手部捕捉技术和XRI模拟器,并设有现场问答环节,同时还将预览未来的发展规划。