XRInputSource: handedness 属性

安全上下文:此功能仅在 安全上下文 (HTTPS) 中可用,在某些或所有 支持浏览器 中可用。

只读 XRInputSource 属性 handedness 指示 WebXR 输入源与用户的手哪个相关联,或者它是否与任何手都不关联。

一个字符串,指示输入控制器是否握持在用户的一只手中,如果是,则指示是哪只手。值是以下之一

none

输入控制器与用户的手无关。

left

输入控制器被握持在、戴在或附着在用户的左手上。

输入控制器被握持在、戴在或附着在用户的右手上。

使用说明

如果输入源不是与用户手关联的设备(无论是握持、附着还是佩戴),则 handedness 的值为 none。这可能指示例如不是手持的输入源,例如内置在耳机中的控件或附着在头部或身体上的输入设备。

示例

handedness 的一个重要使用场景是确定控制器位于哪只手中,以便您可以在虚拟空间中绘制该手(或该手控制的设备)的表示。

js
function updateInputSources(session, frame, refSpace) {
  for (const source of session.inputSources) {
    if (source.gripSpace) {
      const gripPose = frame.getPose(source.gripSpace, refSpace);

      if (gripPose) {
        myRenderHandObject(gripPose, inputSource.handedness);
      }
    }
  }
}

此函数将在每个动画帧(或可能只是周期性地,具体取决于所需的平滑程度和任何性能约束)调用,扫描输入源列表,查找任何具有 gripSpace 且不为 null 的源。如果存在 gripSpace,则意味着输入源是某种手持设备,因此应尽可能将其可视化地渲染。

如果 gripSpace 不为 null,则该函数将继续获取 gripSpace 姿势,将其转换为当前参考空间。假设该姿势有效,则调用名为 myRenderHandObject() 的函数,传入握持姿势和 handedness 的值。然后,它将绘制适当的模型,将其定位并塑造成正确的手。

规范

规范
WebXR 设备 API
# dom-xrinputsource-handedness

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅