运动控制器

运动控制器是可供用户在混合现实中执行操作的硬件附件。 运动控制器相较于手势的优点在于,控制器在空间中具有精确的位置,可实现与数字对象的精细交互。 对于 Windows Mixed Reality 沉浸式头戴显示设备,运动控制器是用户在自己的世界中执行操作的主要方式。

插图:Windows Mixed Reality 运动控制器

Windows Mixed Reality motion controllers



设备支持

功能 HoloLens(第 1 代) HoloLens 2 沉浸式头戴显示设备
运动控制器 ✔️

硬件详细信息

Windows Mixed Reality 运动控制器使用沉浸式头戴显示设备中的传感器在视场中提供精确的响应式运动跟踪。 无需在空间中的墙上安装硬件。 这些运动控制器提供与 Windows Mixed Reality 沉浸式头戴显示设备同样简单的设置和便携性。 我们的设备合作伙伴计划在此假日期间在零售货架上营销和销售这些控制器。

Get to know your controller
了解控制器

功能:

  • 光学跟踪
  • 触发器
  • “抓取”按钮
  • 控制杆
  • 触摸板

设置

在开始之前

需要的软件:

  • 两个运动控制器。
  • 四个 AA 电池。
  • 支持蓝牙 4.0 的电脑。

检查 Windows、Unity 和驱动程序更新

将控制器配对

可以使用 Windows 设置将运动控制器与主机电脑进行绑定,就像任何其他蓝牙设备一样。

  1. 将两个 AA 电池插入控制器的背面。 暂时将电池盖保持关闭状态。
  2. 如果使用的是外部 USB 蓝牙适配器而不是内置蓝牙无线电,请先查看蓝牙最佳做法,然后再继续。 对于具有内置无线电的桌面配置,请确保已连接天线。
  3. 打开“Windows 设置”->“设备”->“添加蓝牙或其他设备”->蓝牙,并删除“运动控制器 - 右”和“运动控制器 - 左”的任何先前实例。 另请查看列表底部的“其他设备”类别。
  4. 选择“添加蓝牙或其他设备”,并等待它开始发现蓝牙设备。
  5. 按住控制器的 Windows 按钮以启动控制器,在发出声音后松开按钮。
  6. 按住配对按钮(电池舱中的按钮),直到 LED 开始闪烁。
  1. 等待“运动控制器 - 左”或“运动控制器 - 右”显示在列表底部。 选择进行配对。 控制器在连接时将振动一次。

    插图:选择要配对的“运动控制器”;如果有多个实例,请从列表底部选择一个实例

Select Motion controller to pair, if multiple instances select one from appearing bottom of the list

  1. 你将看到控制器显示在“鼠标、键盘、&笔”类别下的蓝牙设置中,显示为“已连接”。 此时,你可能会获得固件更新 - 请查看下一部分
  2. 重新盖上电池盖。
  3. 对第二个控制器重复步骤 1-9。

成功配对这两个控制器后,设置应如下所示,在“鼠标、键盘、&笔”类别

插图:运动控制器已连接

Motion controllers connected

如果控制器在配对后关闭,其状态将显示为“已配对”。 对于永久位于“其他设备”类别下的控制器,配对可能只是部分完成。 在这种情况下,请再次运行配对步骤,使控制器正常运行。

更新控制器固件

  • 如果沉浸式头戴显示设备已连接到电脑并且有新的控制器固件可用,则在下次打开运动控制器时,固件将被自动推送到运动控制器。 控制器固件更新由以圆周运动方向闪烁 LED 的模式指示,将持续 1-2 分钟。
  • 固件更新完成后,控制器将重新启动并重新连接。 现在两个控制器应都处于已连接状态。

    插图:蓝牙设置中已连接控制器

Controllers connected

  • 验证控制器是否正常工作:
    1. 启动“混合现实门户”并进入“混合现实主页”。
    2. 移动控制器并验证跟踪、测试按钮以及验证传送是否正常工作。 如果无法正常工作,请查看运动控制器故障排除

视线和指向

Windows Mixed Reality 支持两种用于交互的关键模型;“视线和提交”以及“指向和提交”:

  • 通过“视线和提交”,用户可使用视线将对象作为目标,然后可使用手势敲击、游戏手柄、遥控器或语音来选择对象。
  • 借助“指向和提交”,用户可以将支持指向的动作控制器指向目标对象,然后使用控制器的扳机键选择对象。

支持使用运动控制器指向对象的应用还应在可能的情况下启用视线驱动的交互,以便为用户提供使用哪些输入设备的选择。

在指向时管理反冲

使用运动控制器进行指向和提交时,用户将使用该控制器通过拉动其扳机键来进行定向和交互。 用猛力拉动扳机键的用户在停止拉动扳机键时,控制器的定位点可能高于预期。

为管理用户拉动扳机键时可能会发生的任何此类反冲,应用可以在扳机键的模拟轴值高于 0.0 时对齐定位射线。 然后,可以在扳机键值达到 1.0 后使用该定位射线操作几帧,只要在短时间内最终按下即可。 使用更高级别的复合点击手势时,Windows 将管理此定位射线捕获和超时。

抓握姿势与指向姿势

Windows Mixed Reality 支持不同外形规格的运动控制器,每个控制器设计的不同之处在于用户手部位置与应用渲染控制器时应该用于指向的自然“向前”方向之间的关系。

为了更好地表示这些控制器,可以针对每个交互源调查两种类型的姿势:抓握姿势和指向姿势。

抓握姿势

抓握姿势表示 HoloLens 检测到任一手掌的位置,或持有运动控制器的手掌。

在沉浸式头戴显示设备中,抓握姿势最适用于渲染用户手部或用户手部中持有的对象,例如剑或枪。 在可视化运动控制器时也会使用抓握姿势,因为 Windows 为运动控制器提供的可渲染模型使用抓握姿势作为旋转的原点和中心。

抓握姿势的定义具体如下:

  • 抓握位置:自然持有控制器时的手掌质心,向左或向右调整以使质心位置在抓握范围内。 在 Windows Mixed Reality 运动控制器上,此位置通常对齐“抓取”按钮。
  • 抓握方向的右轴:当你完全打开手部以形成平展的 5 指姿势时,垂直于手掌的射线(指向左手掌前方,指向右手掌后方)
  • 抓握方向的前轴:当你部分握紧手时(就如同持有控制器一样),通过手指关节形成的管道指向“前方”的射线。
  • 抓握方向的上轴:由向右和向前定义默示的上轴。

指向姿势

指向姿势表示指向前方的控制器指针。

在渲染控制器模型本身时,系统提供的指向姿势最适合进行光线投射。 如果要渲染替代控制器的其他一些虚拟对象(如虚拟枪支),则应使用该虚拟对象最自然的射线进行指向,例如沿着应用定义的枪支模型的枪管传播的射线。 由于用户看到的是虚拟对象,而非物理控制器,因此,对于使用应用的用户而言,借助虚拟对象进行指向可能会更自然。

控制器跟踪状态

与头戴显示设备一样,Windows Mixed Reality 运动控制器不需要安装外部跟踪传感器。 这些控制器由头戴显示设备本身中的传感器进行跟踪。

如果用户将控制器移出头戴显示设备的视场,则在大多数情况下,Windows 会继续推断控制器位置,并将这些位置提供给应用。 如果长时间内没有对控制器进行视觉跟踪,则控制器的位置只能是大致准确的位置。

此时,系统会通过身体锁定方式将控制器锁定到用户,跟踪用户移动时的位置,同时仍然使用控制器的内部方向传感器公开控制器的实际方向。 许多使用控制器来指向和激活 UI 元素的应用可以正常运行,其准确性基本不受影响,不会引起用户注意。


显式推理跟踪状态

要根据跟踪状态以不同方式处理位置的应用可能会进一步检查控制器状态的属性,例如 SourceLossRisk 和 PositionAccuracy:

跟踪状态 SourceLossRisk PositionAccuracy TryGetPosition
高准确度 < 1.0
高准确度(存在丢失风险) == 1.0
近似准确度 == 1.0 近似
无位置 == 1.0 近似 false

这些运动控制器跟踪状态的定义如下:

  • 高准确度:当运动控制器在头戴显示设备的视场内时,它通常会根据视觉跟踪提供高准确度的位置。 基于控制器本身的惯性跟踪,暂时离开视场或暂时遮挡了头戴显示设备传感器(例如被用户的另一只手遮挡)的移动控制器将在短时间内继续返回高准确度姿势。
  • 高准确度(存在丢失风险):当用户移动运动控制器经过头戴显示设备视场的边缘时,头戴显示设备无法立即对控制器的位置进行视觉跟踪。 应用发现 SourceLossRisk 到达 1.0 时就会知道控制器已到达 FOV 边界。 此时,应用可以选择暂停需要稳定的高质量姿势流的控制器手势。
  • 近似准确度:如果长时间内没有对控制器进行视觉跟踪,则控制器的位置只能是大致准确的位置。 此时,系统会通过身体锁定方式将控制器锁定到用户,跟踪用户移动时的位置,同时仍然使用控制器的内部方向传感器公开控制器的实际方向。 许多使用控制器来指向和激活 UI 元素的应用可以如常运行,其准确性基本不受影响,不会引起用户注意。 对输入要求较高的应用可以选择通过检查 PositionAccuracy 属性来感知从高准确度到近似准确度的下降,例如在此期间为用户提供更宽松的屏幕外目标有效命中体。
  • 无位置:虽然控制器可以在很长一段时间内以近似准确度运行,但有时系统知道即使身体锁定位置当前也没有意义。 例如,用户可能未察觉到控制器已打开,或用户可能放下控制器然后其他人又拿起它。 在这种情况下,系统不会向应用提供任何位置,且 TryGetPosition 将返回 False。

交互:低级别空间输入

手和运动控制器的核心交互包括“选择”、“菜单”、“抓握”、“触摸板”、“控制杆”和“主页”。

  • “选择”是用于激活全息影像的主要交互,需要按下再释放。 对于运动控制器,可以使用控制器的扳机键来执行“选择”的按下操作。 执行“选择”的另一个方法是说出语音命令“选择”。 可以在任何应用中使用相同的选择交互。 “选择”等效于单击鼠标;你只需了解一次便可将该通用操作应用于所有应用。
  • “菜单”是用于对对象进行操作的辅助交互,用于调出上下文菜单或执行其他辅助操作。 使用运动控制器时,可以使用控制器的“菜单”按钮执行菜单操作。 (即运动控制器上带有汉堡“菜单”图标的按钮)
  • “抓握”是指用户用手对对象执行操作以操控对象的方式。 使用运动控制器时,可以通过紧紧握拳来执行抓握操作。 运动控制器可以通过抓取按钮、手掌扳机键或其他传感器来检测抓握。
  • “触摸板”允许用户沿着运动控制器的触摸板表面在二维中调整操作,并通过单击触摸板来提交操作。 触摸板提供按下状态、接触状态和规范化的 XY 坐标。 在圆形触摸板的范围内,X 和 Y 的值范围为 -1 到 1,中心坐标为 (0, 0)。 对于 X 轴,-1 位于左侧,1 位于右侧。 对于 Y 轴,-1 位于底部,1 位于顶部。
  • 通过使用“控制杆”,用户可以在二维中调整操作,方法为:移动运动控制器的操纵杆(在其圆形范围内),并通过单击控制杆来提交操作。 “控制杆”也提供按下状态和标准化的 XY 坐标。 在圆形触摸板的范围内,X 和 Y 的值范围为 -1 到 1,中心坐标为 (0, 0)。 对于 X 轴,-1 位于左侧,1 位于右侧。 对于 Y 轴,-1 位于底部,1 位于顶部。
  • “主页”是一种特殊的系统操作,用于返回到“开始”菜单。 这类似于按下键盘上的 Windows 键或 Xbox 控制器上的 Xbox 按钮。 按下运动控制器上的 Windows 按钮可返回主页。 请注意,始终可以通过说“你好小娜,返回主页”来返回“开始”页面。 应用无法专门对“主页”操作做出反应,因为这些操作由系统处理。

复合手势:高级空间输入

可在一段时间内跟踪手势和运动控制器,以检测一组常见的高级复合手势。 这使应用程序能够检测高级“点击”、“按住”、“操控”和“导航”手势,无论用户最终使用的是手还是控制器。

渲染运动控制器模型

3D 控制器模型 Windows 为应用提供了系统中当前处于活动状态的每个运动控制器的可渲染模型。 通过让应用程序在运行时动态加载和阐明这些系统提供的控制器模型,可以确保应用程序可向前兼容任何未来的控制器设计。

我们建议在控制器的“抓握姿势”上渲染所有可渲染模型,因为模型的原点符合物理世界中的这一点。 如果要渲染控制器模型,建议在“指向姿势”向场景投射光线,根据控制器的物理设计,该射线的方向即表示用户所希望的指向方向。

有关如何在 Unity 中动态加载控制器模型的详细信息,请参阅在 Unity 中渲染运动控制器模型部分。

2D 控制器线条:虽然我们建议将应用内控制器提示和命令附加到应用内控制器模型本身,但某些开发人员可能希望在平面“教程”或“操作指南”UI 中使用运动控制器的 2D 线条表示形式。 对于这些开发人员,我们已在下方提供了 .png 格式的黑白两种运动控制器线条文件(右键单击即可保存)。

Preview of motion controllers line art

白色的全分辨率运动控制器线条

黑色的全分辨率运动控制器线条

常见问题解答

是否可将运动控制器与多台电脑配对?

运动控制器支持与一台电脑配对。 请按照动作控制器设置中的说明配对控制器。

如何更新运动控制器固件?

运动控制器固件是头戴显示设备驱动程序的一部分,如有必要,它将在连接时自动更新。 固件更新通常需要 1-2 分钟时间,具体取决于蓝牙的无线电和链接质量。 在极少数情况下,控制器固件更新可能需要长达 10 分钟时间,这可能表示蓝牙连接不良或存在无线电干扰。 请参阅发烧友指南中的蓝牙最佳做法排查连接问题。 固件更新后,控制器将重新启动并重新连接到主机电脑(你可能会发现 LED 亮起以进行跟踪)。 如果固件更新中断(例如控制器没电),则在控制器下次连接电源后,系统将再次尝试更新固件。

如何检查电池电量?

Windows Mixed Reality 主页中,可以将控制器翻转过来,并在虚拟模型的背面查看其电池电量。 没有物理电池电量指示器。

是否可以在没有头戴显示设备的情况下使用这些控制器? 是否只能通过操纵杆/扳机键等输入来使用它?

不适用于通用 Windows 应用程序。

疑难解答

请参阅发烧友指南中的运动控制器故障排除

提交运动控制器反馈/bug

使用“混合现实 -> 输入”类别在反馈中心向我们提供反馈

请参阅